Invoke-Expression
Uruchamia polecenia lub wyrażenia na komputerze lokalnym.
Składnia
Invoke-Expression
[-Command] <String>
[<CommonParameters>]
Opis
Polecenie Invoke-Expression
cmdlet ocenia lub uruchamia określony ciąg jako polecenie i zwraca wyniki wyrażenia lub polecenia. Bez Invoke-Expression
parametru zwracany jest ciąg przesłany w wierszu polecenia (echo) bez zmian.
Wyrażenia są oceniane i uruchamiane w bieżącym zakresie. Aby uzyskać więcej informacji, zobacz about_Scopes.
Uwaga
Podejmij Invoke-Expression
rozsądne środki ostrożności podczas korzystania z polecenia cmdlet w skryptach. Jeśli używasz Invoke-Expression
polecenia , aby uruchomić polecenie wprowadzone przez użytkownika, sprawdź, czy polecenie jest bezpieczne do uruchomienia przed jego uruchomieniem. Ogólnie rzecz biorąc, najlepiej zaprojektować skrypt przy użyciu wstępnie zdefiniowanych opcji wejściowych, zamiast zezwalać na wprowadzanie dowolnych kształtów.
Przykłady
Przykład 1. Ocena wyrażenia
$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
...
W tym przykładzie pokazano użycie metody Invoke-Expression
do oceny wyrażenia. Bez Invoke-Expression
parametru wyrażenie jest drukowane, ale nie jest obliczane.
Pierwsze polecenie przypisuje wartość Get-Process
(ciąg) do zmiennej $Command
.
Drugie polecenie pokazuje efekt wpisywania nazwy zmiennej w wierszu polecenia. Program PowerShell odzwierciedla ciąg.
Trzecie polecenie używa Invoke-Expression
polecenia do oceny ciągu.
Przykład 2. Uruchamianie skryptu na komputerze lokalnym
Invoke-Expression -Command "C:\ps-test\testscript.ps1"
"C:\ps-test\testscript.ps1" | Invoke-Expression
Te polecenia służą Invoke-Expression
do uruchamiania skryptu TestScript.ps1 na komputerze lokalnym. Dwa polecenia są równoważne. Pierwszy używa parametru Command, aby określić polecenie do uruchomienia.
Drugi używa operatora potoku (|
), aby wysłać ciąg polecenia do Invoke-Expression
.
Przykład 3. Uruchamianie polecenia w zmiennej
$Command = 'Get-Process | where {$_.cpu -gt 1000}'
Invoke-Expression $Command
W tym przykładzie jest uruchamiany ciąg polecenia zapisany w zmiennej $Command
.
Ciąg polecenia jest ujęta w pojedynczy cudzysłów, ponieważ zawiera zmienną , $_
która reprezentuje bieżący obiekt. Gdyby została ona ujęta w podwójny cudzysłów, zmienna $_
zostanie zamieniona na jej wartość, zanim została zapisana w zmiennej $Command
.
Przykład 4. Przykład pobierania i uruchamiania polecenia cmdlet Pomocy
$Cmdlet_name = "Get-ComputerInfo"
$Example_number = 1
$Example_code = (Get-Help $Cmdlet_name).examples.example[($Example_number-1)].code
Invoke-Expression $Example_code
To polecenie pobiera i uruchamia pierwszy przykład w Get-EventLog
temacie Pomocy polecenia cmdlet.
Aby uruchomić przykład innego polecenia cmdlet, zmień wartość $Cmdlet_name
zmiennej na nazwę polecenia cmdlet. Zmień zmienną $Example_number
na przykładową liczbę, którą chcesz uruchomić. Polecenie kończy się niepowodzeniem, jeśli przykładowa liczba jest nieprawidłowa.
Uwaga
Jeśli przykładowy kod z pliku pomocy zawiera dane wyjściowe w przykładzie, program PowerShell podejmie próbę uruchomienia danych wyjściowych wraz z kodem i zostanie zgłoszony błąd.
Parametry
-Command
Określa polecenie lub wyrażenie do uruchomienia. Wpisz polecenie lub wyrażenie lub wprowadź zmienną zawierającą polecenie lub wyrażenie. Parametr Command jest wymagany.
Typ: | String |
Position: | 0 |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | True |
Akceptowanie symboli wieloznacznych: | False |
Dane wejściowe
Możesz potokować ciąg reprezentujący wyrażenie, aby wywołać do tego polecenia cmdlet. Użyj zmiennej automatycznej $Input
, aby reprezentować obiekty wejściowe w poleceniu .
Do tego polecenia cmdlet można przekazać potok obiektu reprezentującego wyrażenie. Użyj zmiennej automatycznej $Input
, aby reprezentować obiekty wejściowe w poleceniu .
Dane wyjściowe
None
To polecenie cmdlet nie zwraca własnych danych wyjściowych, ale wywołane polecenie może zwracać dane wyjściowe.
Uwagi
Program Windows PowerShell zawiera następujące aliasy dla programu Invoke-Expression
:
iex
W większości przypadków wywołujesz wyrażenia przy użyciu operatora wywołania programu PowerShell i osiągasz te same wyniki. Operator wywołania jest bezpieczniejszą metodą. Aby uzyskać więcej informacji, zobacz about_Operators.