Wie bekomme ich den Fehlercode bei einem Fehler in der Powershell?

7

Mein Auszug ist ungefähr so:

%Vor%

Der Ordner C: \ users \ bkp existiert nicht. Obwohl $ msg gibt mir die Fehlermeldung $ LASTEXITCODE ist immer noch 0. Wie kann ich als Flag erfassen?

    
Avinash Ganesh 04.07.2013, 02:42
quelle

2 Antworten

13

Sie können die $? automatische Variable verwenden, um das Ergebnis des letzten Befehls zu bestimmen . Wenn Sie auf den eigentlichen Fehler zugreifen müssen, können Sie die automatische Variable $Error verwenden. Das erste Element im Array ist der letzte ausgegebene Fehler:

%Vor%     
Aaron Jensen 04.07.2013 03:59
quelle
9

$ LASTEXITCODE ist ausschließlich für Befehlszeilenprogramme, um ihren Status zurückzugeben. Cmdlets, die in PS integriert sind, z. B. Remove-item, geben ihre Fehler auf bis zu 3 Arten zurück. Bei Warnungen schreiben sie Nachrichten (oder andere .NET-Objekte) in den "Warnstrom". In PSv3 gibt es eine direkte Möglichkeit, diesen Stream in eine Datei umzuleiten: cmdlet blah blah blah 3>warning.out . Die zweite ist über den Fehlerstrom. Dieser Stream kann auch umgeleitet werden ... 2>error.out , oder typischer werden Fehler mit try / catch oder trap abgefangen oder in eine Variable mit dem Parameter -ErrorVariable geschrieben (siehe help about_commonparameters ). Der dritte Weg besteht darin, dass Fehler "geworfen" werden. Wenn ein Fehler auftritt (try / catch oder trap), wird der Script beendet. Ausgelöste Fehler sind in der Regel Unterklassen der .NET-Klasse system.Management.Automation.ErrorRecord . Ein ErrorRecord bietet viel mehr Informationen über einen Fehler als einen Rückgabecode.

Wenn remove-item aufgrund eines Fehlers file not found fehlschlägt, wird System.Management.Automation.ItemNotFoundException in den Fehlerdatenstrom geschrieben. Mit einem try / catch können Sie nach dem spezifischen Fehler oder anderen spezifischen Fehlern von remove-item filtern. Wenn Sie nur PS-Befehle über die Befehlszeile eingeben, können Sie $error[0]|select-object * eingeben, um viele Informationen über den letzten Fehler zu erhalten.

Sie könnten dies tun:

%Vor%     
Χpẘ 04.07.2013 03:53
quelle

Tags und Links