代码之家  ›  专栏  ›  技术社区  ›  Mark Allison

Powershell范围

  •  1
  • Mark Allison  · 技术社区  · 12 年前

    在Powershell控制台中,如果执行以下操作:

    PS C:\Users\Moomin\Documents> $global:myVar = "global"
    PS C:\Users\Moomin\Documents> $myVar
    global
    PS C:\Users\Moomin\Documents> $myVar = "local"
    PS C:\Users\Moomin\Documents> $myVar
    local
    PS C:\Users\Moomin\Documents> $global:myVar
    local
    

    为什么最后一条语句不返回 global ?

    更令人困惑的是,如果我这样做:

    PS C:\Users\Moomin\Documents> $myVar = $null
    PS C:\Users\Moomin\Documents> $global:myVar
    

    我什么也没得到。我希望得到 全球的 返回。

    2 回复  |  直到 12 年前
        1
  •  3
  •   rerun    12 年前

    如果您使用的是控制台,而不是在全局上操作的函数,则范围基于您所使用的函数。

    PS C:\> $myvar = 4
    PS C:\> function PrintMyVar{$myvar = 6;$myvar}
    PS C:\> PrintMyVar
    6
    PS C:\> $myvar
    4
    
        2
  •  2
  •   Raf    12 年前

    来自MS about_scope:

    Local:  
        The current scope. The local scope can be the global 
        scope or any other scope. 
    

    这就是为什么 $myVar 被覆盖,最后一行不返回任何内容。

    推荐文章