Wydaje mi się, że nie mogę uchwycić wyjątku zgłoszonego przez Start-Service
. Tu jest mój kodu:Powershell: Wyjątek catch wysłany, gdy nie można uruchomić usługi
try
{
start-service "SomeUnStartableService"
}
catch [Microsoft.PowerShell.Commands.ServiceCommandException]
{
write-host "got here"
}
Kiedy uruchamiam to jest wyjątek, ale nie złapał:
*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
jest ustawiony na Stop, więc nie powinno to być problemem.
Po zmianie kodu na catch [Exception]
, wyjątek zostaje wychwycony i drukowany jest tekst "tu".
Czy start-service
rzucić ServiceCommandException
lub coś innego? Wygląda na to, że jest, ale nie mogę tego złapać!
--- Edit ---
Idealnie mógłbym napisać następujące polecenie, a wyjątek jeśli start-service
nie wyjątek, a tylko złapać wyjątek rzucony przez 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"
}
Szkoda, że nie jest tak schludny, jak uchwycenie określonego wyjątku, ale przypuszczam, że jeśli nie można tego zrobić, to jest kolejna najlepsza rzecz. – Jack