Invoke-Expression

在本地電腦執行指令或表達式。

語法

Default (預設值)

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

Description

Invoke-Expression cmdlet 會以指令形式評估或執行指定的字串,並回傳該表達式或指令的結果。 若無 Invoke-Expression,命令列提交的字串會被回傳(回碼)且未更改。

運算式會被評估並在目前範圍內執行。 如需詳細資訊,請參閱 about_Scopes。

Caution

在腳本中使用 Invoke-Expression 指令長時,請採取合理的預防措施。 使用使用者輸入的指令時 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,表達式會被列印,但不會被評估。

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

第二個指令顯示在命令列輸入變數名稱的效果。 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 成你想執行的範例數字。 若範例編號不正確,指令會失敗。

Note

如果說明檔中的範例程式碼在範例中有輸出,PowerShell 會嘗試將輸出與程式碼一同執行,並會拋出錯誤。

參數

-Command

指定要執行的指令或表達式。 輸入指令或表達式,或輸入包含該指令或表達式的變數。 必須使用 指令 參數。

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:0
必要:True
來自管線的值:True
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

CommonParameters

此 cmdlet 支援常見參數:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 如需詳細資訊,請參閱 about_CommonParameters。

輸入

String

你可以將代表要調用的表達式的字串輸入這個 cmdlet。 使用 $input 自動變數來表示命令中的輸入物件。

PSObject

你可以將一個代表要調用的表達式的物件輸入這個 cmdlet。 使用 $input 自動變數來表示命令中的輸入物件。

輸出

None

此 cmdlet 本身不會回傳任何輸出,但呼叫的指令可能會回傳輸出。

備註

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

  • 所有平臺:
    • iex

大多數情況下,你用 PowerShell 的呼叫運算子呼叫表達式,結果都是一樣的。 呼叫接線員是較安全的做法。 如需詳細資訊,請參閱 about_Operators。