如何通过 Invoke-Command 运行 一个 CMD
How to run a CMD Through Invoke-Command
$remoteinst = "\Windows\Temp\MyFolder"
$remotecomp = ComputerName
$remotesess = New-PSSession $remotecomp
$remotedir = "C:" + $remoteinst + "\Install.cmd"
Invoke-Command -Session $remotesess -ScriptBlock {$remotedir}
我正在尝试 运行 远程计算机上的 Install.cmd 文件。我意识到我无法通过 Enter-PSSession 传递命令,但我正在努力解决这个问题。
将cmd /c
添加到批处理文件路径的前面。
无需创建显式会话:您可以将目标计算机名称直接传递给 Invoke-Command -ComputerName <computerName>
。
调用名称/路径存储在变量中的命令需要调用运算符&
。
传递给Invoke-Command -ComputerName ...
的脚本块是远程执行的,所以不能直接使用local其中的变量;在 PSv3+ 中,解决此问题的最简单方法是使用 using
范围:$using:<localVarName>
牢记所有这些要点,我们得到:
$remoteinst = "\Windows\Temp\MyFolder"
$remotecomp = ComputerName # Note: This syntax assumes that `ComputerName` is a *command*
$remotedir = "C:" + $remoteinst + "\Install.cmd"
Invoke-Command -ComputerName $remoteComp -ScriptBlock { & $using:remotedir }
$remoteinst = "\Windows\Temp\MyFolder"
$remotecomp = ComputerName
$remotesess = New-PSSession $remotecomp
$remotedir = "C:" + $remoteinst + "\Install.cmd"
Invoke-Command -Session $remotesess -ScriptBlock {$remotedir}
我正在尝试 运行 远程计算机上的 Install.cmd 文件。我意识到我无法通过 Enter-PSSession 传递命令,但我正在努力解决这个问题。
将cmd /c
添加到批处理文件路径的前面。
无需创建显式会话:您可以将目标计算机名称直接传递给
Invoke-Command -ComputerName <computerName>
。调用名称/路径存储在变量中的命令需要调用运算符
&
。传递给
Invoke-Command -ComputerName ...
的脚本块是远程执行的,所以不能直接使用local其中的变量;在 PSv3+ 中,解决此问题的最简单方法是使用using
范围:$using:<localVarName>
牢记所有这些要点,我们得到:
$remoteinst = "\Windows\Temp\MyFolder"
$remotecomp = ComputerName # Note: This syntax assumes that `ComputerName` is a *command*
$remotedir = "C:" + $remoteinst + "\Install.cmd"
Invoke-Command -ComputerName $remoteComp -ScriptBlock { & $using:remotedir }