我似乎無法捕獲Start-Service
拋出的異常。這裏是我的代碼:Powershell:無法啓動服務時拋出捕獲異常
try
{
start-service "SomeUnStartableService"
}
catch [Microsoft.PowerShell.Commands.ServiceCommandException]
{
write-host "got here"
}
當我運行此,拋出異常,但沒有抓到:
*Service 'SomeUnStartableService' start failed.
At line:3 char:18
+ start-service <<<< "SomeUnStartableService"
+ CategoryInfo : OpenError: (System.ServiceProcess.ServiceController:ServiceController) [Start-Service], ServiceCommandException
+ FullyQualifiedErrorId : StartServiceFailed,Microsoft.PowerShell.Commands.StartServiceCommand*
$ErrorActionPreference
設爲停止,所以這不應該成爲問題。
當我將我的代碼更改爲catch [Exception]
時,將捕獲異常並打印「到此處」。
請問start-service
丟了ServiceCommandException
還是別的什麼?它看起來好像是但我無法抓住它!
---編輯---
理想我可以寫以下,並拋出一個異常,如果start-service
沒有拋出異常,只有捕獲由start-service
拋出的異常:
try
{
start-service "SomeUnStartableService"
throw (new-object Exception("service started when expected not to start"))
}
catch [Microsoft.PowerShell.Commands.ServiceCommandException]
{
write-host "got here"
}
這是一個恥辱,它不像捕捉特定的異常那樣整潔,但我想如果不能做到這是次最好的事情。 – Jack