Powershell: перехват исключения, возникающего при невозможности запуска службы

Кажется, мне не удается поймать исключение, выданное Start-Service . Вот мой код:

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 установлен на Stop, поэтому это не должно быть проблемой.

Когда я изменяю свой код для catch [Exception] , исключение перехватывается и печатается "got here".

Выдает ли 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"
}
10
задан Jack 13 July 2011 в 09:40
поделиться