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停止也不会显示信息时,正在抛出另一种类型的异常,这不是我想要的。 –