Powershell范围

时间:2014-03-07 15:01:02

标签: powershell scope

在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

我没有得到任何回报。我希望得到global

2 个答案:

答案 0 :(得分:3)

如果您使用的控制台不在您在全局操作的功能中,则范围基于您所使用的功能。

PS C:\> $myvar = 4
PS C:\> function PrintMyVar{$myvar = 6;$myvar}
PS C:\> PrintMyVar
6
PS C:\> $myvar
4

答案 1 :(得分:2)

来自MS about_scope:

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

这就是$myVar被覆盖的原因,并且最后一行没有返回任何内容。