Den*_*ory 4 filesystems powershell
我需要编写一个脚本来接收变量并在远程系统上进行共享。
这有效:
Invoke-Command -ComputerName server -ScriptBlock {$a = [WMICLASS]"Win32_Share"; $a.Create("C:\test","test",0)}
Run Code Online (Sandbox Code Playgroud)
但这并没有:
$sharepath = "C:\test"
$sharename = "test"
Invoke-Command -ComputerName server -ScriptBlock {$a = [WMICLASS]"Win32_Share"; $a.Create($sharepath,$sharename,0)}
Run Code Online (Sandbox Code Playgroud)
我需要一种方法来以某种方式传递这些值。
远程会话无法读取您的本地变量,因此您需要使用命令发送它们。这里有几个选项。在 PowerShell 2.0 中,您可以:
1.传递并-ArgumentList使用$args[$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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
在 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)
}
Run Code Online (Sandbox Code Playgroud)
您可以在about_Remote_Variables上阅读更多相关信息
| 归档时间: |
|
| 查看次数: |
543 次 |
| 最近记录: |