Probleme mit Catch in PowerShell

8

Ein Problem mit dem Catch-Befehl. Ich habe das folgende Skript, das ich zu verarbeiten versuche:

%Vor%

Jedes Mal, wenn ich das tue, bekomme ich nichts im Fang. Hier ist der Fehler, den ich vom Skript bekommen habe:

%Vor%

Irgendwelche Ideen?

Working Solution (Danke an PK und Patrick für ihre gemeinsamen Beiträge)

%Vor%     
Steve 17.04.2012, 13:52
quelle

5 Antworten

3

Versuchen Sie, System.Management.Automation.RuntimeException anstelle von System.InvalidOperationException abzufangen.

%Vor%     
pk. 17.04.2012 14:26
quelle
2

Füge "-ErrorActionPreference Stop" zu deinem CmdLet hinzu.

Zum Beispiel

%Vor%

Es scheint einige Inkonsistenzen mit der Art und Weise zu geben, in der verschiedene Cmdlets Fehler verarbeiten, insbesondere solche Add-On-Cmdlets wie die Active Directory-Cmdlets. Ich denke jedoch, die Grundidee ist, dass Powershell Catch nur terminierende Fehler abfängt, von denen Ihre Ausnahme oben nicht standardmäßig ist. Wenn Sie also -EA Stop verwenden, erzwingen Sie einen Abbruchfehler, der den Catch-Block auslöst.

Hier ist Ed Wilson zum Thema: Ссылка

    
Ryan Ries 17.04.2012 15:49
quelle
1

Ich konnte das zum Laufen bringen:

%Vor%

-PassThru für den Befehl Add-Computer gibt die Ergebnisse des Befehls an die Shell zurück.

-ErrorAction Stop weist PowerShell an, zu stoppen, wenn ein Fehler auftritt; Dies unterdrückt die Fehlerausgabe, die Sie gesehen haben.

    
Patrick Cuff 17.04.2012 15:47
quelle
0
%Vor%     
Steve 17.04.2012 15:38
quelle
0

Patrick: Danke, das hat den Trick gemacht. Putting das -Passthru darauf erlaubt es, den Fehler zu fangen. Ich habe den ursprünglichen Beitrag mit der Antwort aktualisiert.

    
Steve 17.04.2012 17:05
quelle

Tags und Links