Kleine Tipps für Zwischendurch

Ein kleiner Nachteil von längeren try-Blocks im Rahmen eines try/catch-Konstrukts ist es, dass es schwierig sein kann, das Cmdlet zu lokalisieren, das den Fehler ausgelöst hat. Hier wäre eine Zeilennummer praktisch. Die PowerShell zeigt zwar die Zeilennummer in der Fehlermeldung an, es ist aber nicht so offensichtlich wie man an diese Information herankommt.

Die Lösung findet man in der Property InvocationInfo des ErrorRecord-Objekts, das im Catch-Zweig bekanntlich über $_ zur Verfügung steht.

<#
.Synopsis
Zeilennummer bei Fehlern
#>
try
{
  „OK…“
  „OK…“
  Get-Item C:\NotExisting.dat -Ea Stop
  „OK…“
  „OK…“
  „OK…“
}
catch
{
Write-Host „Fehler in $($_.InvocationInfo.ScriptName) – Zeile ($($_.InvocationInfo.ScriptLineNumber)): $($_.InvocationInfo.Line)“
}
„OK… one more time“

Schreibe einen Kommentar

Bitte logge dich mit einer dieser Methoden ein, um deinen Kommentar zu veröffentlichen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s