Invoke-Expression
Führt Befehle oder Ausdrücke auf dem lokalen Computer aus.
Syntax
Invoke-Expression
[-Command] <String>
[<CommonParameters>]
Beschreibung
Das Invoke-Expression
Cmdlet wertet eine angegebene Zeichenfolge als Befehl aus oder führt sie aus und gibt die Ergebnisse des Ausdrucks oder Befehls zurück. Ohne Invoke-Expression
wird eine an der Befehlszeile übermittelte Zeichenfolge unverändert zurückgegeben (echoed).
Ausdrücke werden ausgewertet und im aktuellen Bereich ausgeführt. Weitere Informationen finden Sie unter about_Scopes.
Achtung
Treffen Sie angemessene Vorsichtsmaßnahmen, wenn Sie das Invoke-Expression
Cmdlet in Skripts verwenden. Wenn Sie verwenden Invoke-Expression
, um einen Befehl auszuführen, den der Benutzer eingibt, vergewissern Sie sich, dass der Befehl sicher ausgeführt werden kann, bevor Sie ihn ausführen. Im Allgemeinen empfiehlt es sich, Ihr Skript mit vordefinierten Eingabeoptionen zu entwerfen, statt die Freihandformeingabe zuzulassen.
Beispiele
Beispiel 1: Auswerten eines Ausdrucks
$Command = "Get-Process"
$Command
Get-Process
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 gedruckt, aber nicht ausgewertet.
Der erste Befehl weist der $Command
Variablen den Wert Get-Process
(eine Zeichenfolge) zu.
Der zweite Befehl veranschaulicht die Auswirkungen bei der Eingabe des Namens der Variablen in der Befehlszeile. PowerShell gibt die Zeichenfolge an.
Der dritte Befehl verwendet Invoke-Expression
zum Auswerten der Zeichenfolge.
Beispiel 2: Ausführen eines Skripts auf dem lokalen Computer
Invoke-Expression -Command "C:\ps-test\testscript.ps1"
"C:\ps-test\testscript.ps1" | Invoke-Expression
Diese Befehle verwenden Invoke-Expression
, um ein Skript TestScript.ps1 auf dem lokalen Computer auszuführen. Die beiden Befehle sind äquivalent. Die erste verwendet den Command-Parameter , um den auszuführenden Befehl anzugeben.
Die zweite verwendet einen Pipelineoperator (|
), um die Befehlszeichenfolge an zu Invoke-Expression
senden.
Beispiel 3: Ausführen eines Befehls in einer Variablen
$Command = 'Get-Process | where {$_.cpu -gt 1000}'
Invoke-Expression $Command
In diesem Beispiel wird eine Befehlszeichenfolge ausgeführt, die in der $Command
Variablen gespeichert wird.
Die Befehlszeichenfolge wird in einfache Anführungszeichen eingeschlossen, da sie die Variable enthält, $_
die das aktuelle Objekt darstellt. Wenn sie in doppelte Anführungszeichen eingeschlossen wäre, würde die $_
Variable durch ihren Wert ersetzt, bevor sie in der $Command
Variablen gespeichert wird.
Beispiel 4: Abrufen und Ausführen eines Cmdlet-Hilfebeispiels
$Cmdlet_name = "Get-EventLog"
$Example_number = 1
$Example_code = (Get-Help $Cmdlet_name).examples.example[($Example_number-1)].code
Invoke-Expression $Example_code
Dieser Befehl ruft das erste Beispiel im Hilfethema des Cmdlets ab und führt es Get-EventLog
aus.
Um ein Beispiel für ein anderes Cmdlet auszuführen, ändern Sie den Wert der $Cmdlet_name
Variablen in den Namen des Cmdlets. Ändern Sie die $Example_number
Variable 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 oder eine Variable ein, die den Befehl oder Ausdruck enthält. Der Command-Parameter ist erforderlich.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Eingaben
System.String or PSObject
Sie können ein Objekt, das den Befehl darstellt, an übergeben Invoke-Expression
.
Verwenden Sie die $Input
automatische Variable, um die Eingabeobjekte im Befehl darzustellen.
Ausgaben
PSObject
Gibt die Ausgabe zurück, die vom aufgerufenen Befehl generiert wird (der Wert des Command-Parameters ).
Hinweise
In den meisten Fällen rufen Sie Ausdrücke mithilfe des Aufrufoperators von PowerShell auf und erzielen die gleichen Ergebnisse. Der Aufrufoperator ist eine sicherere Methode. Weitere Informationen finden Sie unter about_Operators.