共用方式為


Invoke-Expression

在本機電腦上執行命令或運算式。

Syntax

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

Description

Cmdlet 會 Invoke-Expression 評估或執行指定的字串做為命令,並傳回表示式或命令的結果。 如果沒有 Invoke-Expression,則會傳回命令行上提交的字串, (回應) 未變更。

表達式會在目前的範圍內進行評估並執行。 如需詳細資訊,請參閱 about_Scopes

警告

在腳本中使用 Invoke-Expression Cmdlet 時,採取合理的預防措施。 使用 Invoke-Expression 執行使用者輸入的命令時,請先確認命令在執行之前安全執行。 一般而言,最好使用預先定義的輸入選項來設計您的指令碼,而不要允許自由輸入。

範例

範例 1:評估表達式

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

此範例示範 如何使用 Invoke-Expression 來評估表達式。 如果沒有 Invoke-Expression,則會列印表達式,但不會評估。

第一個命令會將 (字串的值 Get-Process 指派給 $Command 變數) 。

第二個命令會顯示在命令列輸入變數名稱的效果。 PowerShell 會回應字串。

第三個命令會使用 Invoke-Expression 來評估字串。

範例 2:在本機計算機上執行腳本

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

這些命令會用來 Invoke-Expression 在本機計算機上執行腳本 TestScript.ps1。 兩個命令是相等的。 第一個會使用 Command 參數來指定要執行的命令。 第二個會使用管線運算子 (|) 將命令字串傳送至 Invoke-Expression

範例 3:在變數中執行命令

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

本範例會執行儲存在變數中的 $Command 命令字串。

命令字串會以單引號括住,因為它包含代表目前 對象的變數 $_。 如果變數是以雙引弧括住,則 $_ 變數會在變數儲存 $Command 之前將其值取代。

範例 4:取得並執行 Cmdlet 說明範例

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

此命令會擷取並執行 Cmdlet 說明主題中的 Get-EventLog 第一個範例。

若要執行不同 Cmdlet 的範例,請將變數的值 $Cmdlet_name 變更為 Cmdlet 的名稱。 而且,將 $Example_number 變數變更為您想要執行的範例數位。 如果範例數位無效,此命令就會失敗。

注意

如果說明檔中的範例程式代碼在範例中有輸出,PowerShell 會嘗試執行輸出以及程式代碼,並擲回錯誤。

參數

-Command

指定要執行的命令或運算式。 輸入命令或運算式,或輸入包含命令或運算式的變數。 需要 Command 參數。

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

輸入

String

您可以使用管線傳送字串,代表要叫用至此 Cmdlet 的運算式。 $Input使用自動變數來表示命令中的輸入物件。

PSObject

您可以使用管線傳送物件來表示要叫用至這個 Cmdlet 的運算式。 $Input使用自動變數來表示命令中的輸入物件。

輸出

None

此 Cmdlet 不會傳回本身的輸出,但叫用的命令可能會傳回輸出。

備註

PowerShell 包含下列的 Invoke-Expression別名:

  • 所有平台:
    • iex

在大部分情況下,您會使用PowerShell的呼叫運算符叫用表達式,並達到相同的結果。 呼叫運算子是更安全的方法。 如需詳細資訊,請參閱 about_Operators