Parece que no puedo detectar una excepción lanzada por Start-Service
. Aquí está mi código:Powershell: excepción de captura lanzada cuando no se puede iniciar un servicio
try
{
start-service "SomeUnStartableService"
}
catch [Microsoft.PowerShell.Commands.ServiceCommandException]
{
write-host "got here"
}
Cuando ejecuto esto, se produce la excepción, pero no parados:
*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
se ajusta en Parada, por lo que este no debe ser el problema.
Cuando modifico mi código a catch [Exception]
, se captura la excepción y se imprime "get here".
¿start-service
arroja un ServiceCommandException
o algo más? ¡Parece que sí lo es pero no puedo atraparlo!
--- --- Editar
Lo ideal sería que podría escribir lo siguiente, y lanzar una excepción si start-service
no lanzó una excepción, y sólo capturar una excepción lanzada por 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"
}
Es una pena que no sea tan limpio como capturar la excepción específica, pero supongo que si eso no se puede hacer, esta es la mejor opción. – Jack