【发布时间】:2013-10-21 15:09:15
【问题描述】:
对于应该与 powerShell 2 兼容的脚本,我有一个名为 $exeLoc 的参数,声明如下: 参数( [范围()] [别名(“el”)] $exeLoc= '......\sw' )
我尝试在函数中设置该参数,从相对到绝对,如下:
Function FromRelToAbs()
{
Push-Location $exeLoc
$Global:exeLoc = (Join-path $PWD -ChildPath '\Vis.exe' )
Pop-Location
}
但是,调用上述函数后,$exeLoc 的值并没有改变。
以上代码在 powersell v3 和 powershell v2 ISE 上完美运行。它在 powershell v2 窗口(不是 ISE)上无法正常工作
有什么想法吗?
【问题讨论】:
-
全局范围听起来很可疑。参数是其函数的局部变量;如果您从带有声明参数的函数调用该函数,您的意思是不是
$parent:exeLoc? -
这是脚本参数,不是函数参数;即这是在脚本开头声明的,我的意思是让它们用作全局变量。我弄错了吗?
-
在这种情况下,我认为
script范围会更合适。但老实说,我没有太多使用各种范围的经验。
标签: powershell-2.0