about_Quoting_Rules

Kurze Beschreibung

Beschreibt Regeln für die Verwendung einzelner und doppelter Anführungszeichen in PowerShell.

Lange Beschreibung

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

Anführungszeichen werden auch verwendet, um eine Hier-Zeichenfolge zu erstellen. Eine hier aufgeführte Zeichenfolge ist eine ein- oder doppelte Zeichenfolge, in der Anführungszeichen buchstäblich interpretiert werden. Eine hier Zeichenfolge kann mehrere Zeilen umfassen. Alle Zeilen in einer hier Zeichenfolge werden als Zeichenfolgen interpretiert, auch wenn sie nicht in Anführungszeichen eingeschlossen sind.

In Befehlen zu Remotecomputern 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.

Doppelte Zeichenfolgen

Eine in doppelte Anführungszeichen eingeschlossene Zeichenfolge ist eine erweiterbare Zeichenfolge. Variable Namen vor einem Dollarzeichen ($) werden durch den Wert der Variablen ersetzt, bevor die Zeichenfolge an den Befehl zur Verarbeitung übergeben wird.

Zum 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 doppelt zitierten Zeichenfolge Ausdrücke ausgewertet, und das Ergebnis wird in die Zeichenfolge eingefügt. Zum Beispiel:

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

Die Ausgabe dieses Befehls lautet:

The value of 5 is 5.

Nur einfache variable Verweise können direkt in eine erweiterbare Zeichenfolge eingebettet werden. Variablenbezüge mit Arrayindexierung oder Memberzugriff müssen in einen Unterexpression eingeschlossen werden. Zum Beispiel:

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

Um einen Variablennamen von nachfolgenden Zeichen in der Zeichenfolge zu trennen, schließen Sie ihn in Klammern ({}) ein. Dies ist besonders wichtig, wenn der Variablename von einem Doppelpunkt (:) gefolgt ist. PowerShell betrachtet alles zwischen dem $ und dem Bereichsauszeichner, wodurch die Interpretation in der : Regel fehlschlägt. Löst beispielsweise "$HOME: where the heart is." einen Fehler aus, funktioniert jedoch "${HOME}: where the heart is." wie vorgesehen.

Um die Ersetzung eines Variablenwerts in einer doppelten Zeichenfolge zu verhindern, verwenden Sie das Backtick-Zeichen (`), das das PowerShell-Escapezeichen ist.

Im folgenden Beispiel verhindert das Backtick-Zeichen vor der ersten $i Variable, dass PowerShell den Variablennamen durch seinen Wert ersetzt. Zum Beispiel:

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

Die Ausgabe dieses Befehls lautet:

The value of $i is 5.

Einzelne Zeichenfolgen

Eine in einzelne Anführungszeichen eingeschlossene Zeichenfolge ist eine Verbatimzeichenfolge . Die Zeichenfolge wird genau wie beim Eingeben an den Befehl übergeben. Es wird keine Substitution ausgeführt. Zum Beispiel:

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

Die Ausgabe dieses Befehls lautet:

The value $i is $i.

Ähnlich werden Ausdrücke in einverknenden Zeichenfolgen nicht ausgewertet. Sie werden als Zeichenfolgen literale interpretiert. Zum 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 einer Zeichenfolge

Um doppelte Anführungszeichen in einer Zeichenfolge anzuzeigen, schließen Sie die gesamte Zeichenfolge in einzelne Anführungszeichen ein. Zum Beispiel:

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

Die Ausgabe dieses Befehls lautet:

As they say, "live and learn."

Sie können auch eine einstellige Zeichenfolge in eine doppelte Zeichenfolge einschließen. Zum 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 doppelt zitierten Ausdruck. Zum Beispiel:

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

Die Ausgabe dieses Befehls lautet:

As they say, "live and learn."

Um ein einzelnes Anführungszeichen in eine einzelne Anführungszeichenfolge einzuschließen, verwenden Sie ein zweites aufeinander folgendes einzelnes Anführungszeichen. Zum Beispiel:

'don''t'

Die Ausgabe dieses Befehls lautet:

don't

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

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

Da der Inhalt einzelner angestellter Zeichenfolgen 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 aufgeführte Zeichenfolge ist eine ein- oder doppelte Zeichenfolge, die durch Zeichen (@) umgeben ist. Anführungszeichen innerhalb einer hier Zeichenfolge werden buchstäblich interpretiert.

Eine hier folgende Zeichenfolge:

  • umfasst mehrere Linien
  • beginnt mit der Eröffnungsmarke gefolgt von einer neuen Linie
  • endet mit einer neuen Linie gefolgt von der Schließenmarke
  • 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 doppelt zitierten hier aufgeführten Zeichenfolgen ersetzt. In einzel zitierten hier aufgeführten Zeichenfolgen werden Variablen nicht durch ihre Werte ersetzt.

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

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

Eine hier aufgeführte Zeichenfolge kann entweder über die folgenden Formate verfügen, wobei <Enter> das zeilenfeed- oder newline-ausgeblendete Zeichen dargestellt wird, das hinzugefügt wird, wenn Sie die EINGABETASTE drücken.

Doppelte Anführungszeichen:

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

Einzelne Anführungszeichen:

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

Hinweis

Das endgültige Neuelinezeichen ist Teil der schließende Markierung. Sie wird der hier aufgeführten Zeichenfolge nicht hinzugefügt.

Eine Hier-Zeichenfolge enthält alle Text zwischen dem Öffnen und schließenden Zeichen. In der hier Zeichenfolge werden alle Anführungszeichen buchstäblich interpretiert. Zum Beispiel:

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

Die Ausgabe dieses Befehls lautet:

For help, type "get-help"

Die Verwendung einer hier Zeichenfolge kann die Verwendung einer Zeichenfolge in einem Befehl vereinfachen. Zum Beispiel:

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

Die Ausgabe dieses Befehls lautet:

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

In einzel zitierten hier aufgeführten Zeichenfolgen werden Variablen buchstäblich interpretiert und genau reproduziert. Zum 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 doppelt zitierten hier aufgeführten Zeichenfolgen werden Variablen durch ihre Werte ersetzt. Zum 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 werden Zeichenfolgen in der Regel verwendet, um mehreren Zeilen eine Variable zuzuweisen. Beispielsweise weist die folgende hier folgende Zeichenfolge eine XML-Seite der $page Variable zu.

$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 sind Zeichenfolgen auch ein bequemes Format für eingaben im ConvertFrom-StringData Cmdlet, das hier Zeichenfolgen in Hashtabellen konvertiert. Weitere Informationen finden Sie unter ConvertFrom-StringData.

Hinweis

PowerShell ermöglicht die Verwendung der Syntax der hier aufgeführten Zeichenfolgen, um mehrere Zeilen zu umfassen, ohne die @ Syntax der hier aufgeführten Zeichenfolgen zu verwenden. Die vollständige Hier-Zeichenfolgensyntax ist jedoch die bevorzugte Verwendung.

Interpretation erweiterter Zeichenfolgen

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

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

Instanzen eines anderen Typs werden durch Aufrufen der ToString() Methode in Zeichenfolgen konvertiert, die möglicherweise keine aussagekräftige Darstellung geben. Zum Beispiel:

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

Um die gleiche Ausgabe wie in der Konsole abzurufen, verwenden Sie einen Unterexpression, in dem Sie an Out-Stringdie Datei weitergeleitet werden. Wenden Sie die Trim() Methode an, wenn Sie alle führenden und nachgestellten Zeilen entfernen möchten.

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

Übergeben von zitaten Zeichenfolgen an externe Befehle

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

Weitere Informationen zu diesem Verhalten finden Sie im artikel about_Parsing .

Siehe auch