Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Kurzbeschreibung
Beschreibt Regeln für die Verwendung von einfachen und doppelten Anführungszeichen in PowerShell.
Lange Beschreibung
Beim Analysieren sucht PowerShell zunächst, eingaben als Ausdruck zu interpretieren. Wenn jedoch ein Befehlsaufruf auftritt, wird die Analyse im Argumentmodus fortgesetzt. Nicht numerische Argumente ohne Anführungszeichen werden als Zeichenfolgen behandelt. Wenn Sie Argumente haben, die Leerzeichen enthalten, z. B. Pfade, müssen Sie diese Argumentwerte in Anführungszeichen setzen. Weitere Informationen zur Argumentanalyse finden Sie im Abschnitt Argumentmodus about_Parsing.
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 hier-Zeichenfolgezu erstellen. Eine here-Zeichenfolge ist eine ein- oder doppelte Zeichenfolge, in der Anführungszeichen buchstäblich interpretiert werden. Eine here-Zeichenfolge kann mehrere Zeilen umfassen. Alle Zeilen in einer here-Zeichenfolge werden als Zeichenfolgen interpretiert, obwohl 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.
Anmerkung
PowerShell behandelt intelligente Anführungszeichen, auch typografische oder geschweifte Anführungszeichen genannt, als normale Anführungszeichen für Zeichenfolgen. Verwenden Sie keine intelligenten Anführungszeichen, um Zeichenfolgen einzuschließen. Folgen Sie beim Schreiben von Zeichenfolgen, die intelligente Anführungszeichen enthalten, den Anweisungen im abschnitt Einschließen von Anführungszeichen in einer Zeichenfolge Abschnitt dieses Dokuments. Weitere Informationen zu intelligenten Anführungszeichen finden Sie im Abschnitt Smart Quotes im Wikipedia-Artikel Anführungszeichen in Englisch.
Doppelte Zeichenfolgen in Anführungszeichen
Eine in doppelte Anführungszeichen eingeschlossene Zeichenfolge ist eine erweiterbare Zeichenfolge. Variablennamen 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 Variablenverweise können direkt in eine erweiterbare Zeichenfolge eingebettet werden. Variablenverweise mit Arrayindizierung oder Memberzugriff müssen in einen Unterausdruck eingeschlossen werden. Zum Beispiel:
"PS version: $($PSVersionTable.PSVersion)"
PS version: 7.6.0-preview.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 : einem Bereichsbezeichner, was in der Regel dazu führt, dass die Interpretation fehlschlägt. Beispielsweise löst "$HOME: where the heart is." einen Fehler aus, aber "${HOME}: where the heart is." funktioniert wie beabsichtigt.
Verwenden Sie das Backtick-Zeichen (`), um die Ersetzung eines Variablenwerts in einer doppelt zitierten Zeichenfolge zu verhindern. Dies ist das PowerShell-Escapezeichen.
Im folgenden Beispiel verhindert das Backtick-Zeichen, das der ersten $i Variablen vorausgeht, 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.
Einfache Zeichenfolgen in An zitierten Zeichenfolgen
Eine in einfache Anführungszeichen eingeschlossene Zeichenfolge ist eine Zeichenfolge. Die Zeichenfolge wird genau während der Eingabe an den Befehl übergeben. Es wird keine Ersetzung durchgeführt. Zum Beispiel:
$i = 5
'The value of $i is $i.'
Die Ausgabe dieses Befehls lautet:
The value $i is $i.
In ähnlicher Weise werden Ausdrücke in in an zitierten Zeichenfolgen nicht ausgewertet. Sie werden als Zeichenfolgenliterale 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 eine Zeichenfolge
Wenn Doppelte Anführungszeichen in einer Zeichenfolge angezeigt werden sollen, schließen Sie die gesamte Zeichenfolge in einfache 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 in Anführungszeichen gesetzte 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 doppeltippen 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."
Verwenden Sie ein zweites aufeinander folgendes einfaches Anführungszeichen, um ein einfaches Anführungszeichen in eine einfache Zeichenfolge einzuschließen. Zum 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. Zum Beispiel:
"Use a quotation mark (`") to begin a string."
'Use a quotation mark (`") to begin a string.'
Da der Inhalt einzelner Zeichenfolgen buchstäblich 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.
Da PowerShell intelligente Anführungszeichen wie ‘, ’, “und ”, als normale Anführungszeichen interpretiert, müssen auch intelligente Anführungszeichen escapet werden.
Zum Beispiel:
"Double ““smart quotation marks`” must be escaped in a double-quoted string."
'Single ‘‘smart quotation marks’’ must be escaped in a single-quoted string.'
Double “smart quotation marks” must be escaped in a double-quoted string.
Single ‘smart quotation marks’ must be escaped in a single-quoted string.
Hier-Zeichenfolgen
Die Anführungszeichen für hier-Zeichenfolgen unterscheiden sich geringfügig.
Eine here-Zeichenfolge ist eine ein- oder doppelte Zeichenfolge in Anführungszeichen (@). Anführungszeichen innerhalb einer Hier-Zeichenfolge werden buchstäblich interpretiert.
Hier eine Zeichenfolge:
- erstreckt sich über mehrere Zeilen
- beginnt mit der Eröffnungsmarke, gefolgt von einer Neuen zeile
- endet mit einer neuen Zeile, gefolgt von der Schließendmarke
- 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 Zeichenfolgen ersetzt. Variablen werden in an dieser Stelle zitierten Zeichenfolgen nicht durch ihre Werte ersetzt.
Sie können hier Zeichenfolgen für jeden Text verwenden, aber sie sind besonders nützlich für die folgenden Arten von Text:
- Text, der literale Anführungszeichen enthält
- Mehrere Textzeilen, z. B. der Text in einem HTML- oder XML-Block
- Der Hilfetext für ein Skript- oder Funktionsdokument
Eine here-Zeichenfolge kann eines der folgenden Formate aufweisen, wobei <Enter> das ausgeblendete Zeilenfeed- oder Zeilenumbruchzeichen darstellt, das beim Drücken der EINGABETASTE-TASTE hinzugefügt wird.
Doppelte Anführungszeichen:
@"<Enter>
<string> [string] ...<Enter>
"@
Einfache Anführungszeichen:
@'<Enter>
<string> [string] ...<Enter>
'@
Anmerkung
Das letzte Neueinbruchzeichen ist Teil der Schlussmarke. Sie wird der hier-Zeichenfolge nicht hinzugefügt.
Eine here-Zeichenfolge enthält den gesamten Text zwischen den öffnenden und schließenden Markierungen. In der hier aufgeführten 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, like ' or ", to begin a string.
"@
Die Ausgabe dieses Befehls lautet:
Use a quotation mark, like ' or ", to begin a string.
In hier zitierten Single-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-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 einer Variablen mehrere Zeilen zuzuweisen. Die folgende hier aufgeführte Zeichenfolge weist beispielsweise der variablen $page eine XML-Seite 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 in das Cmdlet ConvertFrom-StringData, das hier-Zeichenfolgen in Hashtabellen konvertiert.
Weitere Informationen finden Sie unter ConvertFrom-StringData.
Anmerkung
PowerShell ermöglicht die Verwendung der @ Syntax von hier-Zeichenfolgen über mehrere Zeilen hinweg. Vollständige Hier-Zeichenfolgensyntax ist jedoch die bevorzugte Verwendung.
Interpretation von erweiterbaren Zeichenfolgen
Erweiterte Zeichenfolgen sehen nicht unbedingt mit der Standardausgabe aus, die in der Konsole angezeigt wird.
Auflistungen, 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 Einstellungsvariablen $OFSangegeben werden. Weitere Informationen finden Sie in der $OFS Einstellungsvariablen.
Instanzen eines anderen Typs werden in Zeichenfolgen konvertiert, indem die ToString()-Methode aufgerufen wird, was möglicherweise keine aussagekräftige Darstellung geben kann. Zum Beispiel:
"hashtable: $(@{ key = 'value' })"
hashtable: System.Collections.Hashtable
Um die gleiche Ausgabe wie in der Konsole zu erhalten, verwenden Sie einen Unterausdruck, in dem Sie an Out-Stringweitergeleitet werden. Wenden Sie die Trim()-Methode an, wenn Sie führende und nachfolgende leere Zeilen entfernen möchten.
"hashtable:`n$((@{ key = 'value' } | Out-String).Trim())"
hashtable:
Name Value
---- -----
key value
Kultureinstellungen wirken sich auf die Zeichenfolgeninterpretation aus
Die ToString() Methoden verwenden die aktuellen konfigurierten Kultureinstellungen, um Werte in Zeichenfolgen zu konvertieren. Beispielsweise wird die Kultur der folgenden PowerShell-Sitzung auf de-DEfestgelegt. Wenn die ToString()-Methode den Wert von $x in eine Zeichenfolge konvertiert, wird für das Dezimaltrennzeichen ein Komma (,) verwendet. Außerdem konvertiert die ToString()-Methode das Datum in eine Zeichenfolge mit dem entsprechenden Format für die einstellungen des deutschen Gebietsschemas.
PS> Get-Culture
LCID Name DisplayName
---- ---- -----------
1031 de-DE German (Germany)
PS> $x = 1.2
PS> $x.ToString()
1,2
PS> (Get-Date 2024-03-19).ToString()
19.03.2024 00:00:00
PowerShell verwendet jedoch beim Interpretieren erweiterbarer Zeichenfolgenausdrücke die invariante Kultur.
PS? "$x"
1.2
PS> "$(Get-Date 2024-03-19)"
03/19/2024 00:00:00
Übergeben von Zeichenfolgen an externe Befehle
Einige systemeigene Befehle erwarten Argumente, die Anführungszeichen enthalten. PowerShell interpretiert die an 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.