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-Expressionparametru 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-Expressionparametru 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.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

Dane wejściowe

String

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 .

PSObject

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 PowerShell zawiera następujące aliasy dla programu 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.