ColorConsole [Version 1.7.1000] PowerShell 2.0-Export
Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation.
C:\Windows-7>Powershell get-help Invoke-Expression -full
NAME
Invoke-Expression
# ÜBERSICHT
Führt Befehle oder Ausdrücke auf dem lokalen Computer aus.
# SYNTAX
Invoke-Expression [-Command
] <string>
[<CommonParameters>
]
# BESCHREIBUNG
Mit 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".
# EINGABEN
System.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.
# AUSGABEN
PSObject
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.
# BEISPIEL 1
C:\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 2
C:\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 3
C:\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 4
C:\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