Invoke-Expression
Führt Befehle oder Ausdrücke auf dem lokalen Computer aus.
Syntax
Default (Standard)
Invoke-Expression
[-Command] <String>
[<CommonParameters>]
Beschreibung
Das Cmdlet Invoke-Expression wertet eine angegebene Zeichenfolge als Befehl aus oder führt sie als Befehl aus und gibt die Ergebnisse des Ausdrucks oder Befehls zurück. Ohne Invoke-Expression würde eine Zeichenfolge, die an der Befehlszeile übergeben wird, unverändert zurückgegeben (echoed).
Beispiele
Beispiel 1: Einen Ausdruck auswerten
PS C:\> $Command = "Get-Process"
PS C:\> $Command
Get-Process
PS C:\> Invoke-Expression $Command
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
296 4 1572 1956 20 0.53 1348 AdtAgent
270 6 1328 800 34 0.06 2396 alg
67 2 620 484 20 0.22 716 ati2evxx
1060 15 12904 11840 74 11.48 892 CcmExec
1400 33 25280 37544 223 38.44 2564 communicator
...
In diesem Beispiel wird die Verwendung von Invoke-Expression zum Auswerten eines Ausdrucks veranschaulicht. Ohne Invoke-Expression wird der Ausdruck zwar gedruckt, aber nicht ausgewertet.
Der erste Befehl weist der Variablen $Command den Wert Get-Process (eine Zeichenfolge) zu.
Der zweite Befehl zeigt den Effekt der Eingabe des Variablennamens in der Befehlszeile an. Windows PowerShell gibt die Zeichenfolge wieder.
Der dritte Befehl verwendet Invoke-Expression, um die Zeichenfolge auszuwerten.
Beispiel 2: Ausführen eines Skripts auf dem lokalen Computer
PS C:\> Invoke-Expression -Command "C:\ps-test\testscript.ps1"
PS C:\> "C:\ps-test\testscript.ps1" | Invoke-Expression
Diese Befehle verwenden Invoke-Expression, um ein Skript TestScript.ps1auf dem lokalen Computer auszuführen. Die beiden Befehle sind gleichwertig. Der erste Befehl verwendet den Parameter Command, um den auszuführenden Befehl anzugeben. Die zweite verwendet einen Pipelineoperator (|), um die Befehlszeichenfolge an Invoke-Expression zu senden.
Beispiel 3: Ausführen eines Befehls in einer Variablen
PS C:\> $Command = 'Get-Process | where {$_.cpu -gt 1000}'
PS C:\> Invoke-Expression $Command
In diesem Beispiel wird eine Befehlszeichenfolge ausgeführt, die in der Variablen $Command gespeichert wird.
Die Befehlszeichenfolge wird in einfache Anführungszeichen eingeschlossen, da sie eine Variable, $_enthält, die das aktuelle Objekt darstellt.
Wenn sie in doppelte Anführungszeichen eingeschlossen würde, würde die $_ Variable durch ihren Wert ersetzt, bevor sie in der Variablen $Command gespeichert wurde.
Beispiel 4: Abrufen und Ausführen eines Cmdlets Hilfebeispiel
PS C:\> $Cmdlet_name = "Get-EventLog"
PS C:\> $Example_number = 1
PS C:\> $Example_code = (Get-Help $Cmdlet_name).examples.example[($Example_number-1)].code
PS C:\> Invoke-Expression $Example_code
Mit diesem Befehl wird das erste Beispiel im Hilfethema Get-EventLog Cmdlet abgerufen und ausgeführt.
Wenn Sie ein Beispiel für ein anderes Cmdlet ausführen möchten, ändern Sie den Wert der Variablen $Cmdlet_name in den Namen des Cmdlets. Ändern Sie die Variable $Example_number in die Beispielnummer, die Sie ausführen möchten. Der Befehl schlägt fehl, wenn die Beispielnummer ungültig ist.
Parameter
-Command
Gibt den auszuführenden Befehl oder Ausdruck an. Geben Sie den Befehl oder Ausdruck ein, oder geben Sie eine Variable ein, die den Befehl oder Ausdruck enthält. Die Befehl ist erforderlich.
Parametereigenschaften
| Typ: | String |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | 0 |
| Obligatorisch: | True |
| Wert aus Pipeline: | True |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
CommonParameters
Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.
Eingaben
System.String or PSObject
Sie können ein Objekt, das den Befehl darstellt, über die Pipeline an Invoke-Expression übergeben. Verwenden Sie die $Input automatische Variable, um die Eingabeobjekte im Befehl darzustellen.
Ausgaben
PSObject
Gibt die Ausgabe zurück, die durch den aufgerufenen Befehl generiert wird (den Wert des Command-Parameters ).
Hinweise
Ein Ausdruck ist eine Anweisung, die ausgewertet werden kann und ein Ergebnis erzeugt, z. B. einen Windows PowerShell-Befehl.
Treffen Sie angemessene Vorsichtsmaßnahmen, wenn Sie das Cmdlet Invoke-Expression in Skripts verwenden. Wenn Sie Invoke-Expression verwenden, um einen Befehl auszuführen, den der Benutzer eingibt, stellen Sie sicher, dass der Befehl sicher ausgeführt werden kann, bevor Sie ihn ausführen. Im Allgemeinen ist es am besten, Ihr Skript mit vordefinierten Eingabeoptionen zu entwerfen, anstatt frei Eingaben zuzulassen.