Udostępnij za pośrednictwem


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-Expressioncią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-Expressionwyraż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

String

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 .

PSObject

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.