[英]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.