我试图在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
我尝试了几个选项:
更新: 我找到了解决这个问题的方法:只读出$ _。异常变量,并使用GetType()获取真正的异常类型,但是在catch中有一个函数似乎没有正确的方法:
try
{
Stop-WebAppPool $webServerSettings.applicationPool
}
catch
{
if ($_.Exception.GetType().Name -eq "InvalidOperationException")
{
return
}
throw
}
答案 0 :(得分:0)
尝试,
<div class="article-data">
</div>
try
{
Stop-WebAppPool $webServerSettings.applicationPool -ErrorAction Stop
}
Catch
{
"Unable to stop Web App Pool"
}
告诉PowerShell在遇到错误时停止;这会抑制您看到的错误输出。