Wie kann ich dafür sorgen, dass Fehler beim Beenden und Nicht-beenden von PowerShell-cmdlets dazu führen, dass Lifecycle-Event-Hooks in CodeDeploy fehlschlagen?

Lesedauer: 2 Minute
0

Mein Event-Hook für den Bereitstellungs-Lifecycle in AWS CodeDeploy ruft ein Windows PowerShell-cmdlet auf, das Fehler zurückgibt. Das cmdlet gibt jedoch den Exit-Code 0 (erfolgreich) zurück, und die Bereitstellung meldet einen Erfolg. Wie stelle ich sicher, dass sowohl Fehler beim Beenden als auch beim Nicht-beenden des PowerShell-cmdlets dazu führen, dass meine Lifecycle-Event-Hooks in CodeDeploy fehlschlagen?

Kurzbeschreibung

Standardmäßig werden PowerShell-cmdlets bis zum Ende ausgeführt und geben einen Exit-Code von 0 zurück, es sei denn, es tritt ein nicht behebbarer oder abschließender Fehler auf. CodeDeploy meldet keinen Fehler im Lifecycle-Event-Hook, es sei denn, das zugehörige Skript gibt einen anderen Exit-Code als 0 zurück.

Damit Lifecycle-Event-Hooks fehlschlagen, wenn nicht-beendete Fehler auftreten, ändern Sie das Verhalten des Skripts. Um das Verhalten des Skripts zu ändern, konfigurieren Sie die Variable $ErrorActionPreference im cmdlet auf „Stop“. PowerShell stoppt dann die Ausführung des cmdlets und gibt den Exit-Code 1 für Fehler beim Beenden und Nicht-beenden zurück.

Weitere Informationen finden Sie im Scripting-Blog unter Nicht beendende Fehler in PowerShell im Microsoft verstehen.

Behebung

Wichtig: Die folgende Methode funktioniert mit Windows PowerShell 5.1 und höher.

1.    Überprüfen Sie, welche Windows PowerShell-Version Sie verwenden, indem Sie den folgenden $psVersionTable-Befehl ausführen:

$PSVersionTable

2.    Wenn Ihre Version von Windows PowerShell älter als Version 5.1 ist, aktualisieren Sie Ihre PowerShell-Version. Genauere Anweisungen finden Sie unter Windows PowerShell 5.1 herunterladen und installieren auf der Microsoft Docs-Website.

3.    Fügen Sie den folgenden Code am Anfang Ihres PowerShell-cmdlets ein:

$ErrorActionPreference = 'Stop'

PowerShell stoppt jetzt das cmdlet und gibt den Exit-Code 1 für Fehler beim Beenden und Nicht-beenden zurück.


Verwandte Informationen

Informationen zu Einstellungsvariablen (Microsoft Docs-Website)

AppSpec-Abschnitt „Hooks“

Überwachung von Bereitstellungen mit Amazon CloudWatch-Tools

Anzeigen von AWS CodeDeploy-Protokolle in der Amazon CloudWatch-Konsole

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren