Freigeben über


Invoke-Expression

Führt Befehle oder Ausdrücke auf dem lokalen Computer aus.

Syntax

Invoke-Expression
      [-Command] <String>
      [<CommonParameters>]

Beschreibung

Das cmdlet Invoke-Expression wertet eine angegebene Zeichenfolge als Befehl aus oder führt sie aus und gibt die Ergebnisse des Ausdrucks oder Befehls zurück. Ohne Invoke-Expressionwird eine an der Befehlszeile übermittelte Zeichenfolge unverändert (echoed) zurückgegeben.

Ausdrücke werden ausgewertet und im aktuellen Bereich 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 empfiehlt es sich, Ihr Skript mit vordefinierten Eingabeoptionen zu entwerfen, anstatt Freihandformeingaben 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-Expressionwird der Ausdruck gedruckt, aber nicht ausgewertet.

Der erste Befehl weist der variablen $Command einen Wert von Get-Process (eine Zeichenfolge) zu.

Der zweite Befehl zeigt den Effekt der Eingabe des Variablennamens in der Befehlszeile an. PowerShell gibt die Zeichenfolge an.

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. Im ersten Wird der parameter Command verwendet, um den auszuführenden Befehl anzugeben. Die zweite verwendet einen Pipelineoperator (|), um die Befehlszeichenfolge an Invoke-Expressionzu 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 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äre, würde die $_ Variable durch ihren Wert ersetzt, bevor sie in der $Command Variablen gespeichert wurde.

Beispiel 4: Abrufen und Ausführen eines Cmdlet-Hilfebeispiels

$Cmdlet_name = "Get-ComputerInfo"
$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 Get-EventLog Cmdlets ab und führt es aus.

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 außerdem die $Example_number Variable in die Beispielnummer, die Sie ausführen möchten. Der Befehl schlägt fehl, wenn die Beispielnummer ungültig ist.

Anmerkung

Wenn der Beispielcode aus der Hilfedatei im Beispiel ausgabe hat, versucht PowerShell, die Ausgabe zusammen mit dem Code auszuführen, und ein Fehler wird 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. Der parameter Command ist erforderlich.

Typ:String
Position:0
Standardwert:None
Erforderlich:True
Pipelineeingabe akzeptieren:True
Platzhalterzeichen akzeptieren:False

Eingaben

String

Sie können eine Zeichenfolge weiterleiten, die den Ausdruck darstellt, der an dieses Cmdlet aufgerufen werden soll. Verwenden Sie die $Input automatische Variable, um die Eingabeobjekte im Befehl darzustellen.

PSObject

Sie können ein Objekt weiterleiten, das den Ausdruck darstellt, der an dieses Cmdlet aufgerufen werden soll. 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 Aufrufoperator ist eine sicherere Methode. Weitere Informationen finden Sie unter about_Operators.