Führt Befehle oder Ausdrücke auf dem lokalen Computer aus. (Invoke-Expression)
NAMEInvoke-ExpressionÜBERSICHTFührt Befehle oder Ausdrücke auf dem lokalen Computer aus.SYNTAXInvoke-Expression [-Command] <string> [<CommonParameters>]BESCHREIBUNGMit dem Cmdlet "Invoke-Expression" wird eine angegebene Zeichenfolge als Befehl ausgewertet oder ausgeführt, und es gibt die Ergebnisse des Ausdrucks bzw. Befehls zurück. Ohne Invoke-Expression wird eine in der Befehlszeile gesendete Zeichenfolge unverändert zurückgegeben (als Echo angezeigt).PARAMETER-Command <string> Gibt den auszuführenden Befehl oder Ausdruck an. Geben Sie den Befehl oder den Ausdruck ein, oder geben Sie eine Variable ein, die den Befehl oder den Ausdruck enthält. Der Command-Parameter ist erforderlich. Erforderlich? true Position? 1 Standardwert Pipelineeingaben akzeptieren?true (ByValue) Platzhalterzeichen akzeptieren?false <CommonParameters> Dieses Cmdlet unterstützt folgende allgemeine Parameter: "Verbose", "Debug", "ErrorAction", "ErrorVariable", "WarningAction", "WarningVariable", "OutBuffer" und "OutVariable". Weitere Informationen erhalten Sie mit dem Befehl "get-help about_commonparameters".EINGABENSystem.String oder PSObject Sie können ein Objekt, das den Befehl darstellt, über die Pipeline an Invoke-Expression übergeben. Verwenden Sie die automatische Variable "$input", um die Eingabeobjekte im Befehl darzustellen.AUSGABENPSObject Gibt die vom aufgerufenen Befehl (der Wert des Command-Parameters) generierte Ausgabe zurück.HINWEISE- Ein Ausdruck ist eine Anweisung, die ausgewertet werden kann, und liefert ein Ergebnis, z. B. einen Windows PowerShell-Befehl. - Treffen Sie angemessene Vorsichtsmaßnahmen, wenn Sie das Cmdlet "Invoke-Expression" in Skripts verwenden. Wenn Sie einen vom Benutzer eingegebenen Befehl mit Invoke-Expression ausführen, überprüfen Sie vor dem Ausführen, ob der Befehl sicher ist. Im Allgemeinen empfiehlt es sich, das Skript mit vordefinierten Eingabeoptionen zu entwerfen, statt die Freihandeingabe zuzulassen.Beispiele
BEISPIEL 1C:\PS>$command = "Get-Process" C:\PS> $command Get-Process C:\PS> 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 ... Beschreibung ----------- In diesem Beispiel wird die Verwendung von Invoke-Expression zum Auswerten eines Ausdrucks veranschaulicht. Ohne Invoke-Expression wird der Ausdruck ausgegeben, jedoch nicht ausgewertet. Im ersten Befehl wird der Variablen "$command" ein Wert von "Get-Process" (eine Zeichenfolge) zugewiesen. Im zweiten Befehl werden die Auswirkungen der Eingabe des Variablennamens in der Befehlszeile veranschaulicht. Windows PowerShell zeigt die Zeichenfolge als Echo an. Im dritten Befehl wird die Zeichenfolge mithilfe von Invoke-Expression ausgewertet.BEISPIEL 2C:\PS>invoke-expression -command "C:\ps-test\testscript.ps1" C:\PS> "C:\ps-test\testscript.ps1" | invoke-expression Beschreibung ----------- In diesen Befehlen wird das Skript "TestScript.ps1" mithilfe von Invoke-Expression auf dem lokalen Computer ausgeführt. Die beiden Befehle sind äquivalent. Im ersten Befehl wird der auszuführende Befehl mit dem Command-Parameter angegeben. Im zweiten Befehl wird die Befehlszeichenfolge mit einem Pipelineoperator (|) an Invoke-Expression gesendet.BEISPIEL 3C:\PS>$cmd = 'get-process | where {$_.cpu -gt 1000}' C:\PS> iex $command Beschreibung ----------- In diesem Beispiel wird eine Befehlszeichenfolge ausgeführt, die in der Variablen "$cmd" gespeichert ist. Die Befehlszeichenfolge ist in einfache Anführungszeichen eingeschlossen, da sie die Variable "$_" enthält, die das aktuelle Objekt darstellt. Wenn sie in doppelte Anführungszeichen eingeschlossen ist, wird die Variable "$_" durch ihren Wert ersetzt, bevor sie in der $command-Zeichenfolge gespeichert wird.BEISPIEL 4C:\PS>$cmdlet_name = "get-eventlog" C:\PS> $example_number = 1 C:\PS> $example_code = (get-help $cmdlet_name).examples.example[($example_number-1)].code C:\PS> invoke-expression $example_code Beschreibung ----------- Mit diesem Befehl wird das erste Beispiel im Hilfethema zum Cmdlet "Get-EventLog" abgerufen und ausgeführt. Um ein Beispiel eines anderen Cmdlets auszuführen, ändern Sie den Wert der Variablen "$cmdlet_name" in den Namen des Cmdlets. Ändern Sie darüber hinaus die Variable "$example_number" in die Beispielnummer, die Sie ausführen möchten. Der Befehl schlägt fehl, wenn die Beispielnummer ungültig ist. VERWANDTE LINKS Online version: http://go.microsoft.com/fwlink/?LinkID=113343 (möglicherweise auf Englisch) Invoke-Command C:\Windows>powershell get-help Get-Alias -full
Microsoft Windows [Version 10.0.19045.3693]
Copyright (c) 2023 Microsoft Corporation.
ColorConsole [Version 3.7.1000] PowerShell 2.0-Export