我需要编写一个脚本,它接收变量并在远程系统上共享。
这样做是可行的:
Invoke-Command -ComputerName server -ScriptBlock {$a = [WMICLASS]"Win32_Share"; $a.Create("C:\test","test",0)}
但这并不是:
$sharepath = "C:\test"
$sharename = "test"
Invoke-Command -ComputerName server -ScriptBlock {$a = [WMICLASS]"Win32_Share"; $a.Create($sharepath,$sharename,0)}
我需要一种以某种方式传递这些价值观的方法。
发布于 2015-03-03 09:03:41
远程会话无法读取局部变量,因此需要使用命令发送它们。这里有几个选择。在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)}
你可以在变量@ TechNet上读到更多这方面的内容。
https://stackoverflow.com/questions/28837383
复制相似问题