Invoke-Expression
Uruchamia polecenia lub wyrażenia na komputerze lokalnym.
Składnia
Invoke-Expression
[-Command] <String>
[<CommonParameters>]
Opis
Polecenie cmdlet Invoke-Expression
oblicza lub uruchamia określony ciąg jako polecenie i zwraca wyniki wyrażenia lub polecenia. Bez Invoke-Expression
ciąg przesłany w wierszu polecenia jest zwracany (echo) bez zmian.
Wyrażenia są oceniane i uruchamiane w bieżącym zakresie. Aby uzyskać więcej informacji, zobacz about_Scopes.
Ostrożność
Podejmij uzasadnione środki ostrożności podczas korzystania z polecenia cmdlet Invoke-Expression
w skryptach. Jeśli używasz Invoke-Expression
do uruchomienia polecenia wprowadzonego 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 Invoke-Expression
do oceny wyrażenia. Bez Invoke-Expression
wyrażenie jest drukowane, ale nie jest oceniane.
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
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 używają Invoke-Expression
do uruchamiania skryptu TestScript.ps1na komputerze lokalnym. Dwa polecenia są równoważne. Pierwszy używa parametru Command, aby określić polecenie do uruchomienia.
Drugi używa operatora potoku (|
) do wysyłania ciągu 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 jego 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 temacie pomocy Get-EventLog
cmdlet.
Aby uruchomić przykład innego polecenia cmdlet, zmień wartość zmiennej $Cmdlet_name
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.
Nuta
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. Wymagany jest parametr polecenia.
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 $Input
zmiennej automatycznej, aby reprezentować obiekty wejściowe w poleceniu .
Do tego polecenia cmdlet można przekazać potok obiektu reprezentującego wyrażenie. Użyj $Input
zmiennej automatycznej, 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 PowerShell zawiera następujące aliasy dla Invoke-Expression
:
- Wszystkie platformy:
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.