Zeilenumbruch in PowerShell

    ZeilenumbruchBei der Ausgabe von Sonder­zeichen wie Zeilen­umbrüchen oder Tabulatoren beschreitet Power­Shell eigene Wege. Das gilt auch für lange Code-Zeilen, wenn diese der besseren Dar­stellung wegen unterteilt werden sollen. Hier ist ein Fort­setzungs­zeichen nur in einigen Fällen nötig.

    Während die meisten Programmiersprachen für die Ausgabe von Sonder­zeichen einen Backslash '\' voranstellen, verwendet PowerShell dafür den umgekehrten Apostroph ("Backtick"). Also anstatt wie in Javascript oder PHP \n bzw. \r, verwendet man `n bzw. `r:

    "Fehler " + $ErrNum + ": " + $ErrString + "`n" >> myapp.log

    Dieses Beispiel könnte aus einem Code-Abschnitt stammen, der auftretende Fehler in eine Log-Datei schreibt.

    Der eigentliche Zeilenvorschub besteht dabei in einem `n, allerdings kann dieses unter Umständen nicht ausreichen, je nach nachdem wo man die Ausgabedatei anschließend öffnet. So ignoriert etwa Notepad einen solchen einfachen Umbruch. Daher sollte man in diesem Fall den Zeilenvorschub mit dem Wagenrücklauf `r kombinieren:

    "Fehler " + $ErrNum + ": " + $ErrString + "`r`n" > myapp.log

    Neben den beiden genannten Zeichen kennt PowerShell noch weitere, die durch einen führenden umgekehrten Apostroph dargestellt werden:

    `0Null
    `aAlert (Klang)
    `bRücktaste
    `fSeitenvorschub (für den Drucker)
    `tHorizontaler Tabulator
    `vVertikaler Tabulator

    Lange Code-Zeilen umbrechen

    Während etwa Javascript oder PHP kein eigenes Fort­setzungs­zeichen beim Umbruch von Code-Zeilen verwenden, übernimmt in PowerShell erneut der Backtick diese Aufgabe:

    Compare-VM -ComputerName H2012R2-1 -Name WebServer-VM `
    -DestinationHost H2012R2-2

    Allerdings benötigt man den Apostroph etwa nur, wenn man eine Zeile - wie oben - zwischen den Parametern eines Cmdlets oder innerhalb eines Strings trennt:

    "Das ist ein Test, " `
    + "und noch ein Test"

    Hingegen kann man Code nach einer Pipe, einer Zuweisung (also "="), einem Komma oder einem Semikolon ohne Verwendung eines Fortsetzungs­zeichens umbrechen. Die vier genannten Zeichen verbleiben auf dem Ende der Zeile, anschließend kann man einfach mit der Eingabetaste fortsetzen:

    Get-ADGroup -Filter "GroupScope -eq 'DomainLocal'" |
    Get-ADGroupMember | where {$_.ObjectClass -eq "user"}

    Keine Kommentare