Powershell: Catch exception geworfen, wenn Sie nicht in der Lage einen Dienst zu starten

Scheine ich nicht in der Lage zu fangen Sie eine Ausnahme, die ausgelöst durch Start-Service. Hier ist mein code:

try
{
    start-service "SomeUnStartableService"
}
catch [Microsoft.PowerShell.Commands.ServiceCommandException]
{
    write-host "got here"
}

Wenn ich diese ausführe, wird die Ausnahme geworfen, aber nicht gefangen:

*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 gesetzt wird, also das sollte nicht das problem sein.

Wenn ich mein alter code catch [Exception] die Ausnahme abgefangen und "hierher gekommen" ist gedruckt.

Tut start-service werfen ServiceCommandException oder etwas anderes? Es sieht aus, als wenn es ist, aber ich kann es nicht fassen!

--- Edit ---

Idealerweise konnte ich das folgende schreiben, und wirft eine Ausnahme, wenn start-service nicht werfen eine Ausnahme, und nur fangen Sie eine Ausnahme, die ausgelöst durch 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"
}
InformationsquelleAutor Jack | 2011-07-13
Schreibe einen Kommentar