我有一个脚本(webdeploy.ps1),可以通过调用命令在本地或远程运行良好。由于某种原因,webdeploy.ps1 将在到达脚本末尾之前失败并退出,这是由于 webdeploy.ps1 无法处理的一些灾难性错误(即磁盘空间不足)。脚本在记录错误的写入错误后终止。最终用户会收到通知。一切都很好。
现在,当通过 Invoke-Command -asjob 远程执行 webdeploy.ps1 时,即使脚本失败,作业状态也始终返回“已完成”。有什么方法可以将作业状态设置为失败,这样当我运行 get-job 时,我可以立即看到哪个服务器失败/成功完成。
foreach ($webserver in $webServers)
{
Invoke-Command -ComputerName $webServer -FilePath .\webdeploy.ps1 -AsJob -JobName "WebDeploy"
}
get-job | select name, id, State, Location | Format-Table -AutoSize
Name Id State Location
---- -- ----- --------
WebDeploy 102 Completed dev-web1
WebDeploy 104 Completed dev-web2