Share via


about_Quoting_Rules

Kurze Beschreibung

Beschreibt Regeln für die Verwendung von einfachen und doppelten Anführungszeichen in PowerShell.

Lange Beschreibung

Anführungszeichen werden verwendet, um eine Literalzeichenfolge anzugeben. Sie können eine Zeichenfolge in einfache Anführungszeichen (') oder doppelte Anführungszeichen (") einschließen.

Anführungszeichen werden auch verwendet, um eine here-Zeichenfolge zu erstellen. Eine hier Zeichenfolge ist eine Zeichenfolge mit einfachem oder doppeltem Anführungszeichen, in der Anführungszeichen wörtlich interpretiert werden. Eine here-Zeichenfolge kann mehrere Zeilen umfassen. Alle Zeilen in einer here-Zeichenfolge werden als Zeichenfolgen interpretiert, auch wenn sie nicht in Anführungszeichen eingeschlossen sind.

In Befehlen für Remotecomputer definieren Anführungszeichen die Teile des Befehls, die auf dem Remotecomputer ausgeführt werden. In einer Remotesitzung bestimmen Anführungszeichen auch, ob die Variablen in einem Befehl zuerst auf dem lokalen Computer oder auf dem Remotecomputer interpretiert werden.

Zeichenfolgen mit doppeltem Anführungszeichen

Eine in doppelte Anführungszeichen eingeschlossene Zeichenfolge ist eine erweiterbare Zeichenfolge. Variablennamen, denen ein Dollarzeichen ($) vorangestellt ist, werden 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.

Außerdem werden in einer Zeichenfolge mit doppelten Anführungszeichen 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.

Nur einfache Variablenverweise können direkt in eine erweiterbare Zeichenfolge eingebettet werden. Variablenverweise mit Arrayindizierung oder Memberzugriff müssen in einen Teilausdruck eingeschlossen werden. Beispiel:

"PS version: $($PSVersionTable.PSVersion)"
PS version: 7.1.4

Um einen Variablennamen von nachfolgenden Zeichen in der Zeichenfolge zu trennen, schließen Sie ihn in geschweifte Klammern ({}) ein. Dies ist besonders wichtig, wenn auf den Variablennamen ein Doppelpunkt (:) folgt. PowerShell berücksichtigt alles zwischen dem $ und dem : Bereichsbezeichner, was in der Regel zu einem Fehler bei der Interpretation führt. Löst beispielsweise "$HOME: where the heart is." einen Fehler aus, funktioniert aber "${HOME}: where the heart is." wie beabsichtigt.

Um das Ersetzen eines Variablenwerts in einer Zeichenfolge mit doppeltem Anführungszeichen zu verhindern, verwenden Sie das Backtick-Zeichen (`), bei dem es sich um das PowerShell-Escapezeichen handelt.

Im folgenden Beispiel verhindert das Backtickzeichen vor der ersten $i Variablen, dass PowerShell den Variablennamen durch seinen Wert ersetzt. Beispiel:

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

Die Ausgabe dieses Befehls lautet:

The value of $i is 5.

Zeichenfolgen mit einfachem Anführungszeichen

Eine in einfache Anführungszeichen eingeschlossene Zeichenfolge ist eine wörtliche Zeichenfolge. Die Zeichenfolge wird genau während der Eingabe an den Befehl übergeben. Es wird keine Ersetzung durchgeführt. Beispiel:

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

Die Ausgabe dieses Befehls lautet:

The value $i is $i.

Ebenso werden Ausdrücke in Zeichenfolgen mit einfachem Anführungszeichen nicht ausgewertet. Sie werden als Zeichenfolgenliterale interpretiert. Beispiel:

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

Die Ausgabe dieses Befehls lautet:

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

Einschließen von Anführungszeichen in eine Zeichenfolge

Damit doppelte Anführungszeichen in einer Zeichenfolge angezeigt werden, schließen Sie die gesamte Zeichenfolge in einfache Anführungszeichen ein. Beispiel:

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

Die Ausgabe dieses Befehls lautet:

As they say, "live and learn."

Sie können auch eine Zeichenfolge mit einfachem Anführungszeichen in eine Zeichenfolge mit doppeltem Anführungszeichen einschließen. Beispiel:

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

Die Ausgabe dieses Befehls lautet:

As they say, 'live and learn.'

Oder doppelten Sie die Anführungszeichen um einen Ausdruck mit doppeltem Anführungszeichen. 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 mit einfachem Anführungszeichen einzuschließen, verwenden Sie ein zweites aufeinanderfolgendes einfaches Anführungszeichen. Beispiel:

'don''t'

Die Ausgabe dieses Befehls lautet:

don't

Um powerShell zu erzwingen, ein doppeltes Anführungszeichen wörtlich zu interpretieren, verwenden Sie ein Backtick-Zeichen. Dadurch wird verhindert, dass PowerShell das Anführungszeichen als Zeichenfolgentrennzeichen interpretiert. Beispiel:

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

Da der Inhalt von Zeichenfolgen mit einfachem Anführungszeichen wörtlich interpretiert wird, wird das Backtick-Zeichen als Literalzeichen behandelt und in der Ausgabe angezeigt.

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

Hier-Zeichenfolgen

Die Anführungsregeln für hier-Zeichenfolgen unterscheiden sich geringfügig.

Eine hier enthaltene Zeichenfolge ist eine Zeichenfolge mit einfachem oder doppeltem Anführungszeichen, die von zeichen (@) umgeben ist. Anführungszeichen innerhalb einer here-Zeichenfolge werden wörtlich interpretiert.

Eine here-Zeichenfolge:

  • umfasst mehrere Zeilen.
  • beginnt mit der Eröffnungsmarke gefolgt von einem Zeilenumbruch
  • endet mit einer Neuen Zeile gefolgt von der Schlussmarke
  • enthält jede Zeile zwischen den öffnenden und schließenden Markierungen als Teil einer einzelnen Zeichenfolge.

Wie normale Zeichenfolgen werden Variablen durch ihre Werte in doppelten Anführungszeichen hier-Zeichenfolgen ersetzt. In Zeichenfolgen mit einfachem Anführungszeichen werden Variablen nicht durch ihre Werte ersetzt.

Sie können hier-Zeichenfolgen für jeden Text verwenden, aber sie sind besonders für die folgenden Arten von Text nützlich:

  • Text, der literale Anführungszeichen enthält
  • Mehrere Textzeilen, z. B. der Text in einem HTML- oder XML-Block
  • Hilfetext für ein Skript- oder Funktionsdokument

Eine here-Zeichenfolge kann eines der folgenden Formate aufweisen, wobei <Enter> das ausgeblendete Zeilenvorschub- oder Zeilenumbruchzeichen darstellt, das hinzugefügt wird, wenn Sie die EINGABETASTE drücken.

Doppelte Anführungszeichen:

@"<Enter>
<string> [string] ...<Enter>
"@

Einfache Anführungszeichen:

@'<Enter>
<string> [string] ...<Enter>
'@

Hinweis

Das letzte Zeilenumbruchzeichen ist Teil des Schlusszeichens. Es wird der here-Zeichenfolge nicht hinzugefügt.

Eine here-Zeichenfolge enthält den gesamten Text zwischen den öffnenden und schließenden Markierungen. In der hier-Zeichenfolge werden alle Anführungszeichen wörtlich interpretiert. Beispiel:

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

Die Ausgabe dieses Befehls lautet:

For help, type "get-help"

Die Verwendung einer here-Zeichenfolge kann die Verwendung einer Zeichenfolge in einem Befehl vereinfachen. Beispiel:

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

Die Ausgabe dieses Befehls lautet:

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

In Zeichenfolgen mit einfachem Anführungszeichen werden Variablen wörtlich interpretiert und genau reproduziert. Beispiel:

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

Die Ausgabe dieses Befehls lautet:

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

In doppelten Zeichenfolgen in Anführungszeichen werden Variablen durch ihre 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\User1\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1.

Hier-Zeichenfolgen werden in der Regel verwendet, um einer Variablen mehrere Zeilen zuzuweisen. Mit der folgenden Zeichenfolge wird der variablen $page beispielsweise eine XML-Seite zugewiesen.

$page = [XML] @"
<command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10"
xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10"
xmlns:dev="http://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>
"@

Hier-Zeichenfolgen sind auch ein praktisches Format für die Eingabe in das ConvertFrom-StringData Cmdlet, das hier-Zeichenfolgen in Hashtabellen konvertiert. Weitere Informationen finden Sie unter ConvertFrom-StringData.

Hinweis

PowerShell ermöglicht Zeichenfolgen mit doppeltem oder einfachem Anführungszeichen, sich über mehrere Zeilen zu erstrecken, ohne die @ Syntax von hier-Zeichenfolgen zu verwenden. Die vollständige Hier-Zeichenfolgensyntax ist jedoch die bevorzugte Verwendung.

Interpretation erweiterbarer Zeichenfolgen

Erweiterte Zeichenfolgen sehen nicht unbedingt mit der Standardausgabe aus, die in der Konsole angezeigt wird.

Sammlungen, einschließlich Arrays, werden in Zeichenfolgen konvertiert, indem ein einzelnes Leerzeichen zwischen den Zeichenfolgendarstellungen der Elemente platziert wird. Ein anderes Trennzeichen kann durch Festlegen der Einstellungsvariable $OFSangegeben werden. Weitere Informationen finden Sie in der Einstellungsvariablen$OFS.

Instanzen eines beliebigen anderen Typs werden in Zeichenfolgen konvertiert, indem die ToString() -Methode aufgerufen wird, die möglicherweise keine aussagekräftige Darstellung liefern. Beispiel:

"hashtable: $(@{ key = 'value' })"
hashtable: System.Collections.Hashtable

Um dieselbe Ausgabe wie in der Konsole zu erhalten, verwenden Sie einen Teilausdruck, in dem Sie eine Pipe an ausführen Out-String. Wenden Sie die Trim() -Methode an, wenn Sie führende und nachgestellte Leerzeilen entfernen möchten.

"hashtable:`n$((@{ key = 'value' } | Out-String).Trim())"
hashtable:
Name                           Value
----                           -----
key                            value

Übergeben von Anführungszeichenzeichenfolgen an externe Befehle

Einige native Befehle erwarten Argumente, die Anführungszeichen enthalten. PowerShell interpretiert die in Anführungszeichen gesetzte Zeichenfolge, bevor sie an den externen Befehl übergeben wird. Durch diese Interpretation werden die äußeren Anführungszeichen entfernt.

Weitere Informationen zu diesem Verhalten finden Sie im Artikel about_Parsing .

Weitere Informationen