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?
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:
$ 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%Tags und Links powershell