Sdílet prostřednictvím


Invoke-Expression

Spouští příkazy nebo výrazy v místním počítači.

Syntax

Default (Výchozí)

Invoke-Expression
    [-Command] <String>
    [<CommonParameters>]

Description

Rutina Invoke-Expression vyhodnotí nebo spustí zadaný řetězec jako příkaz a vrátí výsledky výrazu nebo příkazu. Bez Invoke-Expressionse vrátí řetězec odeslaný na příkazovém řádku (ozvěna) beze změny.

Výrazy se vyhodnocují a spouští v aktuálním kontextu. Další informace najdete v části about_Scopes.

Upozornění

Při použití rutiny Invoke-Expression ve skriptech přijměte rozumná opatření. Při použití Invoke-Expression ke spuštění příkazu, který uživatel zadá, ověřte, zda je příkaz před spuštěním bezpečný. Obecně je nejlepší navrhnout skript s předdefinovanými možnostmi zadávání, a nikoli povolit volný vstup.

Příklady

Příklad 1: Vyhodnocení výrazu

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

Tento příklad ukazuje použití Invoke-Expression k vyhodnocení výrazu. Bez Invoke-Expressionse výraz vytiskne, ale nevyhodnotí.

První příkaz přiřadí k proměnné Get-Process hodnotu $Command (řetězec).

Druhý příkaz ukazuje účinek zadávání názvu proměnné na příkazovém řádku. PowerShell vypíše řetězec.

Třetí příkaz používá Invoke-Expression k vyhodnocení řetězce.

Příklad 2: Spuštění skriptu v místním počítači

Invoke-Expression -Command "C:\ps-test\testscript.ps1"
"C:\ps-test\testscript.ps1" | Invoke-Expression

Tyto příkazy používají Invoke-Expression ke spuštění skriptu TestScript.ps1v místním počítači. Oba příkazy jsou ekvivalentní. První použije parametr Command k určení příkazu, který se má spustit. Druhý používá operátor kanálu (|) k odeslání příkazového řetězce do Invoke-Expression.

Příklad 3: Spuštění příkazu v proměnné

$Command = 'Get-Process | where {$_.cpu -gt 1000}'
Invoke-Expression $Command

Tento příklad spustí příkazový řetězec uložený v proměnné $Command.

Řetězec příkazu je uzavřený v jednoduchých uvozovkách, protože obsahuje proměnnou, $_, která představuje aktuální objekt. Pokud by byla uzavřena do dvojitých uvozovek, $_ proměnná by byla nahrazena její hodnotou před uložením do proměnné $Command.

Příklad 4: Získání a spuštění nápovědy cmdletu

$Cmdlet_name = "Get-ComputerInfo"
$Example_number = 1
$Example_code = (Get-Help $Cmdlet_name).examples.example[($Example_number-1)].code
Invoke-Expression $Example_code

Tento příkaz načte a spustí první příklad v nápovědě ke cmdletu Get-EventLog.

Pokud chcete spustit příklad jiné rutiny, změňte hodnotu proměnné $Cmdlet_name na název rutiny. Změňte proměnnou $Example_number na ukázkové číslo, které chcete spustit. Příkaz selže, pokud není číslo příkladu platné.

Poznámka:

Pokud ukázkový kód ze souboru nápovědy obsahuje výstup v příkladu, PowerShell se pokusí spustit výstup společně s kódem a vyvolá se chyba.

Parametry

-Command

Určuje příkaz nebo výraz, který se má spustit. Zadejte příkaz nebo výraz nebo zadejte proměnnou, která obsahuje příkaz nebo výraz. Je vyžadován parametr Command.

Vlastnosti parametru

Typ:String
Default value:None
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

(All)
Position:0
Povinné:True
Hodnota z kanálu:True
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

CommonParameters

Tato rutina podporuje běžné parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction a -WarningVariable. Další informace najdete v about_CommonParameters.

Vstupy

String

Řetězec představující výraz, který má být vyvolán, můžete předat jako vstup této rutině (cmdletu). Použijte $Input automatickou proměnnou k reprezentaci vstupních objektů v příkazu.

PSObject

Objekt představující výraz, který se má vyvolat pro tuto rutinu, můžete nasouvat svisle. Použijte $Input automatickou proměnnou k reprezentaci vstupních objektů v příkazu.

Výstupy

None

Tato rutina nevrací žádný vlastní výstup, ale vyvolaný příkaz může vrátit výstup.

Poznámky

PowerShell obsahuje následující aliasy pro Invoke-Expression:

  • Všechny platformy:
    • iex

Ve většině případů vyvoláte výrazy pomocí operátoru volání PowerShellu a dosáhnete stejných výsledků. Operátor volání představuje bezpečnější metodu. Další informace najdete na about_Operators.