Freigeben über


Allgemeine Einführung: Analysieren

KURZE BESCHREIBUNG

Beschreibt, wie PowerShell Befehle analysiert.

LANGE BESCHREIBUNG

Wenn Sie einen Befehl an der Eingabeaufforderung eingeben, unterteilt PowerShell den Befehlstext in eine Reihe von Segmenten, die als "Token" bezeichnet werden, und bestimmt dann, wie die einzelnen "Token" interpretiert werden.

Wenn Sie beispielsweise Folgendes eingeben:

Write-Host Buchen

PowerShell unterteilt den folgenden Befehl in zwei Token, "Write-Host" und "book", und interpretiert jedes Token unabhängig voneinander.

Bei der Verarbeitung eines Befehls arbeitet der PowerShell-Parser im Ausdrucksmodus oder im Argumentmodus:

  • Im Ausdrucksmodus müssen Zeichenfolgenwerte in Anführungszeichen stehen. Zahlen, die nicht in Anführungszeichen eingeschlossen sind, werden als numerische Werte (und nicht als Zeichenfolge) behandelt.

  • Im Argumentmodus wird jeder Wert als erweiterbare Zeichenfolge behandelt, es sei denn, er beginnt mit einem der folgenden Sonderzeichen: Dollarzeichen ($), At-Zeichen (@), einfaches Anführungszeichen ('), doppeltes Anführungszeichen (") oder eine öffnende Klammer (().

Wenn dem Wert eines dieser Zeichen vorangestellt ist, wird er als Wertausdruck behandelt.

Die folgende Tabelle enthält einige Beispiele für Befehle, die im Ausdrucksmodus und im Argumentmodus verarbeitet werden, sowie für die Ergebnisse, die von diesen Befehlen erzeugt werden.

Beispiel Modus Ergebnis
2+2 Ausdruck 4 (ganze Zahl)
Write-Output 2+2 Streitpunkt "2+2" (Zeichenfolge)
Write-Output (2+2) Ausdruck 4 (ganze Zahl)
$a = 2+2 Ausdruck $a = 4 (Ganzzahl)
Write-Output $a Ausdruck 4 (ganze Zahl)
Write-Output $a/h Streitpunkt "4/H" (Zeichenfolge)

Jedes Token kann als eine Art Objekttyp interpretiert werden, z. B. Boolean oder Zeichenfolge. PowerShell versucht, den Objekttyp aus dem Ausdruck zu ermitteln. Der Objekttyp hängt vom Typ des Parameters ab, den ein Befehl erwartet, und ob PowerShell weiß, wie das Argument in den richtigen Typ konvertiert werden kann. Die folgende Tabelle enthält mehrere Beispiele für die Typen, die den von den Ausdrücken zurückgegebenen Werten zugewiesen werden.

Beispiel Modus Ergebnis
Write-Output !1 Streit "!1" (Zeichenfolge)
Write-Output (!1) Ausdruck FALSE (boolesch)
Write-Output (2) Ausdruck 2 (ganze Zahl)

Das in PowerShell 3.0 eingeführte Symbol zum Beenden der Analyse (--%) weist PowerShell an, Eingaben nicht als PowerShell-Befehle oder -Ausdrücke zu interpretieren.

Wenn Sie ein ausführbares Programm in PowerShell aufrufen, platzieren Sie das Symbol zum Beenden der Analyse vor den Programmargumenten. Diese Technik ist viel einfacher als die Verwendung von Escapezeichen, um Fehlinterpretation zu verhindern.

Wenn ein Stoppanalysesymbol auftritt, behandelt PowerShell die verbleibenden Zeichen in der Zeile als Literal. Die einzige Interpretation, die durchgeführt wird, besteht darin, Umgebungsvariablen, die die Windows-Standardnotation verwenden, wie z. B. %USERPROFILE%.

Das Symbol zum Beenden der Analyse ist nur bis zum nächsten Zeilenumbruch oder Pipelinezeichen wirksam. Sie können weder ein Fortsetzungszeichen (') verwenden, um den Effekt zu verlängern, noch ein Befehlstrennzeichen (;) verwenden, um den Effekt zu beenden.

Mit dem folgenden Befehl wird z. B. das Programm Icacls aufgerufen.

icacls X:\VMS /grant Dom\HVAdmin:(CI)(OI)F

Um diesen Befehl in PowerShell 2.0 auszuführen, müssen Sie Escapezeichen verwenden, um zu verhindern, dass PowerShell die Klammern falsch interpretiert.

icacls X:\VMS /grant Dom\HVAdmin:`(CI`)`(OI`)F

Ab PowerShell 3.0 können Sie das Symbol zum Beenden der Analyse verwenden.

icacls X:\VMS --% /grant Dom\HVAdmin:(CI)(OI)F

PowerShell sendet die folgende Befehlszeichenfolge an das Icacls-Programm:

X:\VMS /grant Dom\HVAdmin:(CI)(OI)F

SIEHE AUCH

über_Befehlssyntax