about_Quoting_Rules

Letzte Aktualisierung: Mai 2014

Betrifft: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

THEMA

about_Quoting_Rules

KURZE BESCHREIBUNG

Beschreibt die Regeln für die Verwendung einfacher und doppelter Anführungszeichen in Windows PowerShell®.

LANGE BESCHREIBUNG

Anführungszeichen werden zur Angabe einer literalen Zeichenfolge verwendet. Sie können eine Zeichenfolge in einfache Anführungszeichen (') oder doppelte Anführungszeichen (") einschließen.

Anführungszeichen werden auch zur Erstellung einer here-Zeichenfolge verwendet. Eine here-Zeichenfolge ist eine Zeichenfolge in einfachen oder doppelten Anführungszeichen, in der Anführungszeichen buchstäblich interpretiert werden. Eine here-Zeichenfolge kann mehrere Zeilen umfassen. Alle Zeilen einer here-Zeichenfolge werden als Zeichenfolgen interpretiert, auch wenn sie nicht in Anführungszeichen eingeschlossen sind.

In Befehlen an Remotecomputer definieren Anführungszeichen die Teile des Befehls, die auf dem Remotecomputer ausgeführt werden. In einer Remotesitzung legen Anführungszeichen weiterhin fest, ob die Variablen in einem Befehl zuerst auf dem lokalen Computer oder zuerst auf dem Remotecomputer interpretiert werden.

ZEICHENFOLGEN IN EINFACHEN UND DOPPELTEN ANFÜHRUNGSZEICHEN

Bei Zeichenfolgen in doppelten Anführungszeichen werden Variablennamen nach einem Dollarzeichen ($) durch den Wert der Variablen ersetzt, bevor die Zeichenfolge zur Verarbeitung an den Befehl übergeben wird.

Beispiel:

        $i = 5
        "The value of $i is $i."

Die Ausgabe dieses Befehls lautet:

        The value of 5 is 5.

In Zeichenfolgen in doppelten Anführungszeichen werden auch Ausdrücke ausgewertet, und das Ergebnis wird in die Zeichenfolge eingefügt. Beispiel:

        "The value of $(2+3) is 5."

Die Ausgabe dieses Befehls lautet:

        The value of 5 is 5.

Zeichenfolgen in einfachen Anführungszeichen werden so an den Befehl übergeben, wie sie eingegeben wurden. Es findet keine Ersetzung statt. Beispiel:

        $i = 5
        'The value of $i is $i.'

Die Ausgabe dieses Befehls lautet:

        The value $i is $i.

Entsprechend werden Ausdrücke in Zeichenfolgen in einfachen Anführungszeichen nicht ausgewertet. Sie werden als Literale interpretiert. Beispiel:

        'The value of $(2+3) is 5.'

Die Ausgabe dieses Befehls lautet:

        The value of $(2+3) is 5.

Mit dem Graviszeichen (')(ASCII 96), dem Escapezeichen von Windows PowerShell, können Sie die Ersetzung eines Variablenwerts in einer Zeichenfolge in doppelten Anführungszeichen verhindern.

Im folgenden Beispiel wird durch das Graviszeichen vor der ersten $i-Variablen verhindert, dass Windows PowerShell den Namen der Variablen durch ihren Wert ersetzt. Beispiel:

        $i = 5
        "The value of `$i is $i."

Die Ausgabe dieses Befehls lautet:

        The value $i is 5.

Doppelte Anführungszeichen können in einer Zeichenfolge angezeigt werden, indem die gesamte Zeichenfolge in einfache Anführungszeichen eingeschlossen wird. Beispiel:

        'As they say, "live and learn."'

Die Ausgabe dieses Befehls lautet:

        As they say, "live and learn."

Sie können auch eine Zeichenfolge in einfachen Anführungszeichen in eine Zeichenfolge in doppelten Anführungszeichen einschließen. Beispiel:

        "As they say, 'live and learn.'"

Die Ausgabe dieses Befehls lautet:

        As they say, 'live and learn.'

Sie können auch einen Satz in doppelten Anführungszeichen in doppelte Anführungszeichen einschließen. Beispiel:

        "As they say, ""live and learn."""

Die Ausgabe dieses Befehls lautet:

        As they say, "live and learn."

Um ein einfaches Anführungszeichen in eine Zeichenfolge in einfachen Anführungszeichen einzuschließen, verwenden Sie ein zweites, darauf folgendes einfaches Anführungszeichen. Beispiel:

        'don''t'

Die Ausgabe dieses Befehls lautet:

        don't

Um Windows PowerShell zu zwingen, ein doppeltes Anführungszeichen buchstäblich zu interpretieren, verwenden Sie ein Graviszeichen. Dadurch wird verhindert, dass Windows PowerShell das Anführungszeichen als Zeichenfolgetrennzeichen interpretiert. Beispiel:

        "Use a quotation mark (`") to begin a string."

Da der Inhalt von Zeichenfolgen in einfachen Anführungszeichen buchstäblich interpretiert wird, können Sie in einer Zeichenfolge in einfachen Anführungszeichen kein Graviszeichen verwenden, um die buchstäbliche Interpretation von Zeichen zu erzwingen.

Der folgende Befehl generiert einen Fehler, da Windows PowerShell das Escapezeichen nicht erkennt. Stattdessen wird das zweite Anführungszeichen als Ende der Zeichenfolge interpretiert.

        PS C:\> 'Use a quotation mark (`') to begin a string.'
        Unexpected token ')' in expression or statement.
        At line:1 char:27
        + 'Use a quotation mark (`') <<<<  to begin a string.'

HERE-ZEICHENFOLGEN

Die Verwendung von Anführungszeichen für here-Zeichenfolgen ist etwas anders geregelt.

Eine here-Zeichenfolge ist eine Zeichenfolge in einfachen oder doppelten Anführungszeichen, in der Anführungszeichen buchstäblich interpretiert werden. Eine here-Zeichenfolge kann mehrere Zeilen umfassen. Alle Zeilen einer here-Zeichenfolge werden als Zeichenfolgen interpretiert, auch wenn sie nicht in Anführungszeichen eingeschlossen sind.

Analog zu regulären Zeichenfolgen werden Variablen in here-Zeichenfolgen, die in doppelten Anführungszeichen eingeschlossen sind, durch die entsprechenden Werte ersetzt. In here-Zeichenfolgen in einfachen Anführungszeichen werden Variablen nicht durch die entsprechenden Werte ersetzt.

Auch wenn here-Zeichenfolgen für beliebigen Text verwendet werden können, sind sie für die folgenden Textsorten besonders gut geeignet:

  • – Text mit literalen Anführungszeichen

  • – mehrzeiliger Text, beispielsweise Text in einem HTML- oder XML-Dokument

  • – Hilfetext für ein Skript oder eine Funktion

Here-Zeichenfolgen können eines der nachstehenden Formate aufweisen. <Enter> steht dabei für das ausgeblendete Zeilenvorschubzeichen oder das ausgeblendete Neue-Zeile-Zeichen, das hinzugefügt wird, wenn Sie die EINGABETASTE drücken.

     Double-quotes:
        @"<Enter>
        <string> [string] ...<Enter>
        "@

    Single-quotes:
        @'<Enter>
        <string> [string] ...<Enter>
        '@

Unabhängig vom verwendeten Format muss das schließende Anführungszeichen das erste Zeichen in der Zeile darstellen.

Eine here-Zeichenfolge enthält den gesamten Text zwischen den beiden ausgeblendeten Zeichen. In einer here-Zeichenfolge werden alle Anführungszeichen buchstäblich interpretiert. Beispiel:

        @"
        For help, type "get-help"
        "@

Die Ausgabe dieses Befehls lautet:

        For help, type "get-help"

Here-Zeichenfolgen können die Verwendung von Zeichenfolgen in Befehlen vereinfachen. Beispiel:

        @"
        Use a quotation mark (') to begin a string.
        "@

Die Ausgabe dieses Befehls lautet:

        Use a quotation mark (') to begin a string.

In here-Zeichenfolgen in einfachen Anführungszeichen werden Variablen buchstäblich interpretiert und exakt reproduziert. Beispiel:

        @'
        The $profile variable contains the path
        of your Windows PowerShell profile.
        '@

Die Ausgabe dieses Befehls lautet:

        The $profile variable contains the path
        of your Windows PowerShell profile.

In here-Zeichenfolgen in doppelten Anführungszeichen werden Variablen durch die entsprechenden Werte ersetzt. Beispiel:

        @" 
        Even if you have not created a profile,
        the path of the profile file is:
        $profile.
        "@

Die Ausgabe dieses Befehls lautet:

        Even if you have not created a profile,
        the path of the profile file is:
        C:\Users\User01\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1.

Here-Zeichenfolgen werden in aller Regel verwendet, um einer Variablen mehrere Zeilen zuzuweisen. Beispielsweise weist die folgende here-Zeichenfolge der Variablen $page eine XML-Seite zu.

        $page = [XML] @"
        <command:command xmlns:maml="https://schemas.microsoft.com/maml/2004/10"
        xmlns:command="https://schemas.microsoft.com/maml/dev/command/2004/10" 
        xmlns:dev="https://schemas.microsoft.com/maml/dev/2004/10">
        <command:details>
                <command:name>
                       Format-Table
                </command:name>
                <maml:description>
                    <maml:para>Formats the output as a table.</maml:para>
                </maml:description>
                <command:verb>format</command:verb>
                <command:noun>table</command:noun>
                <dev:version></dev:version>
        </command:details>
        ...
        </command:command>
        "@

Here-Zeichenfolgen eignen sich auch hervorragend als Eingabe für das Cmdlet ConvertFrom-StringData, das here-Zeichenfolgen in Hashtabellen konvertiert. Weitere Informationen finden Sie unter "ConvertFrom-StringData".

SCHLÜSSELWÖRTER

about_Here-Strings

about_Quotes

about_Quotation_Marks

SIEHE AUCH

about_Escape_Characters

ConvertFrom-StringData