Invoke-Expression
Führt Befehle oder Ausdrücke auf dem lokalen Computer aus.
Syntax
Default (Standardwert)
Invoke-Expression
[-Command] <String>
[<CommonParameters>]
Beschreibung
Das Invoke-Expression-Cmdlet wertet eine angegebene Zeichenfolge als Befehl aus oder führt diese aus und gibt die Ergebnisse des Ausdrucks oder Befehls zurück. Ohne Invoke-Expression, eine in der Befehlszeile eingegebene Zeichenkette wird unverändert zurückgegeben (echoed).
Ausdrücke werden im aktuellen Bereich ausgewertet und ausgeführt. Weitere Informationen finden Sie unter about_Scopes.
Vorsicht
Treffen Sie angemessene Vorsichtsmaßnahmen, wenn Sie das cmdlet Invoke-Expression in Skripts verwenden. Wenn Sie Invoke-Expression verwenden, um einen von dem Benutzer eingegebenen Befehl auszuführen, überprüfen Sie, ob der Befehl sicher ausgeführt werden kann, bevor er ausgeführt wird. Im Allgemeinen ist es am besten, Ihr Skript mit vordefinierten Eingabeoptionen zu entwerfen, anstatt frei Eingaben zuzulassen.
Beispiele
Beispiel 1: Einen Ausdruck auswerten
$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 zur Bewertung eines Ausdrucks veranschaulicht. Ohne Invoke-Expressionwird der Ausdruck gedruckt, aber nicht ausgewertet.
Der erste Befehl weist der variablen Get-Process einen Wert von $Command (eine Zeichenfolge) zu.
Der zweite Befehl zeigt den Effekt der Eingabe des Variablennamens in der Befehlszeile an. PowerShell gibt die Zeichenfolge als Echo aus.
Der dritte Befehl verwendet Invoke-Expression, um die Zeichenfolge auszuwerten.
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.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 Pipeline-Operator (|) um den Befehlsstring zu senden an Invoke-Expression.
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 variablen $Command gespeichert wird.
Die Befehlszeichenfolge wird in einfache Anführungszeichen eingeschlossen, da sie eine Variable, $_enthält, die das aktuelle Objekt darstellt. Wäre sie in doppelte Anführungszeichen gesetzt, würde die $_ durch ihren Wert ersetzt, bevor sie in der Datenbank gespeichert wird $Command variabel.
Beispiel 4: Abrufen und Ausführen eines Cmdlets Hilfebeispiel
$Cmdlet_name = "Get-ComputerInfo"
$Example_number = 1
$Example_code = (Get-Help $Cmdlet_name).examples.example[($Example_number-1)].code
Invoke-Expression $Example_code
Mit diesem Befehl wird das erste Beispiel in der Datei Get-EventLog Cmdlet-Hilfethema.
Wenn Sie ein Beispiel für ein anderes Cmdlet ausführen möchten, ändern Sie den Wert der Variable $Cmdlet_name auf den Namen des Cmdlets. Und, ändern Sie die $Example_number auf die Nummer des Beispiels, das Sie ausführen möchten. Der Befehl schlägt fehl, wenn die Beispielnummer ungültig ist.
Hinweis
Wenn der Beispielcode aus der Hilfedatei eine Ausgabe im Beispiel hat, versucht PowerShell, die Ausgabe zusammen mit dem Code auszuführen, und es wird ein Fehler ausgelöst.
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
String
Sie können eine Zeichenfolge, die den aufzurufenden Ausdruck darstellt, über die Pipeline an dieses Cmdlet übergeben. Verwenden Sie die $input automatische Variable, um die Eingabeobjekte im Befehl darzustellen.
PSObject
Sie können ein Objekt, das den aufzurufenden Ausdruck darstellt, über die Pipeline an dieses Cmdlet übergeben. Verwenden Sie die $input automatische Variable, um die Eingabeobjekte im Befehl darzustellen.
Ausgaben
None
Dieses Cmdlet gibt keine eigene Ausgabe zurück, der aufgerufene Befehl kann jedoch die Ausgabe zurückgeben.
Hinweise
PowerShell enthält die folgenden Aliase für Invoke-Expression:
- Alle Plattformen:
iex
In den meisten Fällen rufen Sie Ausdrücke mithilfe des Anrufoperators von PowerShell auf und erzielen dieselben Ergebnisse. Der Call Operator ist eine sicherere Methode. Weitere Informationen finden Sie unter about_Operators.