我试图在一个单线程PowerShell命令中远程调用批处理文件:
PowerShell -ExecutionPolicy UnRestricted invoke-command -ComputerName Server1 -ScriptBlock {cmd.exe /c "\\server1\d$\testPath\test.bat"}
我想要做的是将test.bat文件中的任何退出代码返回给我的命令。任何人都可以告诉我如何做到这一点吗?
(PS,由于多种原因,我无法使用PSExec)。
干杯
答案 0 :(得分:3)
您应该可以使用自动变量cmd.exe
从$LASTEXITCODE
获取退出代码。
如果您只对该文件感兴趣,而不是批处理文件的任何输出,则可以将脚本块更改为:
{cmd.exe /c "\\server1\d$\testPath\test.bat" *> $null; return $LASTEXITCODE}
如果您已经在运行powershell,则无需再次调用powershell
,只需在远程计算机上建立会话并将Invoke-Command
附加到其上:
$session = New-PSSession remoteComputer.domain.tld
$ExitCode = Invoke-Command -Session $session -ScriptBlock { cmd /c "\\server1\d$\testPath\test.bat" *> $null; return $LASTEXITCODE }
$ExitCode # this variable now holds the exit code from test.bat