415 Stimmen

Wie kann ein PowerShell-Skript beim ersten Fehler angehalten werden?

Ich möchte, dass mein PowerShell-Skript anhält, wenn einer der von mir ausgeführten Befehle fehlschlägt (wie set -e in der Bash). Ich verwende beide Powershell-Befehle ( New-Object System.Net.WebClient ) und Programme ( .\setup.exe ).

1voto

ubi Punkte 3679

Umleitung stderr a stdout scheint auch ohne andere Befehle/Skriptblock-Wrapper zu funktionieren, obwohl ich keine Erklärung dafür finden kann, warum das so funktioniert.

# test.ps1

$ErrorActionPreference = "Stop"

aws s3 ls s3://xxx
echo "==> pass"

aws s3 ls s3://xxx 2>&1
echo "shouldn't be here"

Dies gibt wie erwartet Folgendes aus (der Befehl aws s3 ... gibt zurück. $LASTEXITCODE = 255 )

PS> .\test.ps1

An error occurred (AccessDenied) when calling the ListObjectsV2 operation: Access Denied
==> pass

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X