如何通过 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 }