Freigeben über


Informationen zur Analyse

KURZE BESCHREIBUNG

Beschreibt, wie PowerShell Befehle analysiert.

LANGE BESCHREIBUNG

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

Wenn Sie beispielsweise Folgendes eingeben:

Write-Host Buch

PowerShell unterbricht 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 enthalten sein. Zahlen, die nicht in Anführungszeichen eingeschlossen sind, werden als numerische Werte (und nicht als Eine Reihe von Zeichen) 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 ('), doppelte Anführungszeichen (") oder eine öffnende Klammer (().

Wenn einem dieser Zeichen vorangestellt wird, wird der Wert als Wertausdruck behandelt.

Die folgende Tabelle enthält mehrere Beispiele für Befehle, die im Ausdrucks- und Argumentmodus verarbeitet werden, und die ergebnisse dieser Befehle.

Beispiel Mode Ergebnis
2+2 Ausdruck 4 (ganze Zahl)
Write-Output 2+2 Argument "2+2" (Zeichenfolge)
Write-Output (2+2) Ausdruck 4 (ganze Zahl)
$a = 2+2 Ausdruck $a = 4 (ganze Zahl)
Write-Output $a Ausdruck 4 (ganze Zahl)
Write-Output $a/H Argument "4/H" (Zeichenfolge)

Jedes Token kann als eine Art von Objekttyp interpretiert werden, z. B. Boolean oder Zeichenfolge. PowerShell versucht, den Objekttyp aus dem Ausdruck zu bestimmen. Der Objekttyp hängt vom Typ des Parameters ab, den ein Befehl erwartet, und davon, 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 sind.

Beispiel Mode Ergebnis
Write-Output !1 Argument "!1" (Zeichenfolge)
Write-Output (!1) expression False (Boolesch)
Write-Output (2) expression 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.

Platzieren Sie beim Aufrufen eines ausführbaren Programms in PowerShell das Symbol zum Beenden der Analyse vor den Programmargumenten. Diese Technik ist viel einfacher als die Verwendung von Escapezeichen, um Fehlinterpretationen zu verhindern.

Wenn ein Symbol für die Stoppanalyse auftritt, behandelt PowerShell die verbleibenden Zeichen in der Zeile als Literal. Die einzige Interpretation, die sie ausführt, besteht darin, Werte für Umgebungsvariablen zu ersetzen, die die Windows-Standardnotation verwenden, z. B. %USERPROFILE%.

Das Symbol für die Stoppanalyse ist nur bis zum nächsten Zeilen- oder Pipelinezeichen wirksam. Sie können kein Fortsetzungszeichen (') verwenden, um seine Wirkung zu erweitern oder ein Befehlstrennzeichen (;) zum Beenden des Effekts zu verwenden.

Mit dem folgenden Befehl wird beispielsweise 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

about_Command_Syntax