如何通过Invoke-Command运行CMD

时间:2018-05-24 22:47:07

标签: powershell variables invoke

$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传递命令,但我正在努力解决这个问题。

2 个答案:

答案 0 :(得分:1)

  • 无需创建显式会话:您可以将目标计算机名称直接传递给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 }

答案 1 :(得分:0)

cmd /c添加到批处理文件路径的前面。