远程会话无法读取您的本地变量,因此您需要使用命令发送它们。这里有几个选项。在 PowerShell 2.0 中,您可以:
1.将它们与-ArgumentList 一起传递并使用$arg[i]
$sharepath = "C:\test"
$sharename = "test"
Invoke-Command -ComputerName server -ScriptBlock {$a = [WMICLASS]"Win32_Share"; $a.Create($args[0],$args[1],0)} -ArgumentList $sharepath, $sharename
2.将它们与-ArgumentList 一起传递并在您的脚本块中使用param() 来定义参数
$sharepath = "C:\test"
$sharename = "test"
Invoke-Command -ComputerName server -ScriptBlock { param($sharepath, $sharename) $a = [WMICLASS]"Win32_Share"; $a.Create($sharepath,$sharename,0)} -ArgumentList $sharepath, $sharename
在 PowerShell 3.0 中,引入了 using-variable 范围以使其更容易:
$sharepath = "C:\test"
$sharename = "test"
Invoke-Command -ComputerName server -ScriptBlock { $a = [WMICLASS]"Win32_Share"; $a.Create($using:sharepath,$using:sharename,0)}
您可以在 about_Remote_Variables @ TechNet 上阅读更多相关信息