2014-03-07 40 views
1

在PowerShell控制檯,如果我做的: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返回。

回答

3

如果您使用的控制檯不在您正在全球運行的功能中,則範圍基於您所在的功能。

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

從MS about_scope:

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

這就是爲什麼$myVar被覆蓋,並沒有什麼在最後一行返回。