0
正試圖捕獲PowerShell腳本中的特定異常。 Thecodeblock下面是試圖做到這一點,在給定異常被拋出腳本應該忽略它:System.InvalidOperationException在powershell腳本中未捕獲
try
{
Stop-WebAppPool $webServerSettings.applicationPool
}
catch [System.InvalidOperationException]
{
}
可惜,這似乎並沒有工作,我仍然正在此迴應:
Stop-WebAppPool : Object on target path is already stopped.
At F:\Portal.Update.ps1:12 char:2
+ Stop-WebAppPool $webServerSettings.applicationPool
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Stop-WebAppPool], InvalidOperationException
+ FullyQualifiedErrorId : InvalidOperation,Microsoft.IIs.PowerShell.Provider.StopAppPoolCommand
我嘗試了幾個選項:
- 將'ErrorAction Stop'參數值傳遞給命令。現在我沒有錯誤,但劇本停止了,那不是我想要的。
- 將'ErrorAction SilentlyContinue'參數值傳遞給命令。但是這隻會在捕獲所有類型的異常時才起作用,我不想要這些異常,因爲如果應用程序池不存在,我希望拋出異常。
更新: 我找到了一種方法來解決這個問題:剛讀出$ _異常變量,並用的GetType()得到真正的異常類型,但在抓具功能似乎沒有。走正道:
try
{
Stop-WebAppPool $webServerSettings.applicationPool
}
catch
{
if ($_.Exception.GetType().Name -eq "InvalidOperationException")
{
return
}
throw
}
這似乎並不奏效。我仍然得到異常,消息表示拋出的異常是System.InvalidOperation異常。 –
2秒剛剛發現別的東西,你迴應,即將編輯我的答案 –
ErrorAction停止也不會顯示信息時,正在拋出另一種類型的異常,這不是我想要的。 –