我不明白这一点。如果我将param放在脚本的顶部,然后使用命令行运行脚本并指定用户名,则将用户名分配给$UserName
Param([string]$UserName)
如果我将它包装在一个函数中,则从命令行运行它:
E.g: ./Script.ps1 -UserName BLAH
未分配给$UserName
Function MainFunction
{
Param([string]$UserName)
}
#Call Mainfunction
MainFunction;
为什么?
答案 0 :(得分:2)
您的代码将参数放在函数的范围内。当您运行Script.ps1 -UserName BLAH
时,此参数将在脚本范围内传递。
如果要向下传递变量,则需要两个参数块,一个用于脚本,另一个用于函数。然后将脚本的UserName作为函数的参数传递给函数。
Param([string]$UserName)
Function MainFunction {
Param([string]$UserName)
}
MainFunction -UserName "Chuck Norris"
或者,您可以使用$script:
中的Param([string]$UserName)
Function MainFunction {
Write-Output "Example use of $script:UserName"
}
MainFunction
来使用函数内部的脚本作用域中的UserName来使用该作用域中的变量。
{{1}}
答案 1 :(得分:0)
<强>解决方案:强>
Function MainFunction
{
Param([string]$UserName)
Write-Host $UserName
}
#Call Mainfunction
MainFunction -UserName $args[0]
来自CMD的电话:
powershell -File "Script.ps1" "Chuck Norris"