簡體   English   中英

如何在Powershell中為在后台運行的invoke-expression使用錯誤處理?

[英]How to use Error handling in powershell for invoke-expression running in background?

我的代碼看起來像這樣。

$OutCmd ='somecommand'
$job = start-job -ScriptBlock { Param([string]$InnerSB)
    Invoke-Expression $InnerSB
} -ArgumentList $OutCmd

我想在$ outCmd成功運行時捕獲作業輸出,或者在$ outCmd失敗時捕獲完整的錯誤消息。 我也想知道命令是否失敗。

$ job.state並沒有幫助,即使命令失敗也顯示為已完成。

我不能保證這適用於所有情況,但是通常我使用類似以下的方法:

function Invoke-Expression-And-Check{
    param (
        [string]$Expression
    )
        $er = (invoke-expression $Expression) 2>&1
        if($er.Exception){
            throw $er.Exception
        }
} 

2>&1將錯誤輸出重定向到standard,這使您可以捕獲類型為ErrorRecord的$ er對象。 如果不是錯誤記錄,則不會有“例外”字段。

一旦出現錯誤,您可以嘗試捕獲它,或者只是暫停程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM