从PowerShell脚本块中的批处理文件返回退出代码

时间:2015-11-16 06:47:30

标签: powershell batch-file

我试图在一个单线程PowerShell命令中远程调用批处理文件:

PowerShell -ExecutionPolicy UnRestricted invoke-command -ComputerName Server1 -ScriptBlock {cmd.exe /c "\\server1\d$\testPath\test.bat"}

我想要做的是将test.bat文件中的任何退出代码返回给我的命令。任何人都可以告诉我如何做到这一点吗?

(PS,由于多种原因,我无法使用PSExec)。

干杯

1 个答案:

答案 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