【问题标题】:Powershell Invoke-Command job statePowershell Invoke-Command 作业状态
【发布时间】:2013-08-08 20:46:38
【问题描述】:

我有一个脚本 (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

【问题讨论】:

  • 你检查过receive-job的输出吗?有时错误隐藏在我(有限的)经验中。
  • 哦,是的,它记录在receive-job中。但是,检查每项工作是否存在失败或现在有点麻烦。想象一下这是一个大约 50 个 Web 服务器的部署。
  • 我感受到你的痛苦。也许与$ErrorActionPreference 搞混可能有助于解决您的问题,尽管我还没有尝试过。

标签: powershell remoting exit-code invoke-command


【解决方案1】:

Write-Error 只写非终止错误,我相信,所以也许工作是感觉到有错误,但不一定是终止错误。

您可能想尝试使用throw 而不是Write-Error,或者使用非零返回码显式退出(尽管我不确定后者在报告工作时是否真的有很大的不同州)。

如需更深入地了解终止和非终止错误,以及何时使用Write-Errorthrow,请查看this thread

【讨论】:

    【解决方案2】:

    您可以在 webdploy.ps1 中使用 throw 命令将作业状态设置为失败。

    例子:

    PS F:\> Start-Job -ScriptBlock { throw "error" }
    
    Id              Name            State      HasMoreData     Location             Command
    --              ----            -----      -----------     --------             -------
    5               Job5            Running    True            localhost             throw "error"
    
    
    PS F:\> Get-Job
    
    Id              Name            State      HasMoreData     Location             Command
    --              ----            -----      -----------     --------             -------
    5               Job5            Failed     False           localhost             throw "error"
    

    【讨论】:

    • 谢谢!这正是我需要的!
    猜你喜欢
    • 2022-12-02
    • 2014-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多