在本機電腦上執行命令或運算式。
語法
Invoke-Expression [-Command] <string> [<CommonParameters>]
描述
Invoke-Expression Cmdlet 會以命令的形式評估或執行指定的字串,並傳回命令或運算式的結果。缺少 Invoke-Expression,在命令列送出的字串會返回 (回應) 不變。
參數
-Command <string>
指定要執行的命令或運算式。請輸入命令或運算式,或輸入包含命令或運算式的變數。Command 參數為必要項。
必要? |
true |
位置? |
1 |
預設值 |
|
接受管線輸入? |
true (ByValue) |
接受萬用字元? |
false |
<CommonParameters>
這個 Cmdlet 支援一般參數:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。如需詳細資訊,請參閱 about_Commonparameters.
輸入和輸出
輸入型別是可經由管道輸出至 Cmdlet 的物件型別。傳回型別則是 Cmdlet 所傳回的物件型別。
輸入 |
System.String 或 PSObject 您可經由管道將代表命令的物件輸出至 Invoke-Expression。請使用 $input 自動變數表示命令中的輸入物件。 |
輸出 |
PSObject 傳回呼叫的命令 (Command 參數的值) 所產生的輸出。 |
附註
-- 運算式是一種可被評估且產生結果的陳述式,例如 Windows PowerShell 命令。
-- 在指令碼中使用 Invoke-Expression Cmdlet 時,請採取合理的防範措施。使用 Invoke-Expression 執行使用者輸入的命令時,請在執行前確認可以放心執行命令。一般而言,最好是以預先定義的輸入選項設定指令碼,而不是允許任意輸入。
範例 1
C:\PS>$command = "Get-Process" C:\PS> $command Get-Process C:\PS> 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 變數。 第二個命令會顯示在命令列輸入變數名稱的效果。Windows PowerShell 會回應字串。 第三個命令會使用 Invoke-Expression 評估字串。
範例 2
C:\PS>invoke-expression -command "C:\ps-test\testscript.ps1" C:\PS> "C:\ps-test\testscript.ps1" | invoke-expression 描述 ----------- 這些命令會使用 Invoke-Expression 在本機電腦上執行 TestScript.ps1 指令碼。這兩個命令功能相同。第一個命令會使用 Command 參數指定要執行的命令。第二個命令會使用管線運算子 (|) 將命令字串傳送給 Invoke-Expression。
範例 3
C:\PS>$cmd = 'get-process | where {$_.cpu -gt 1000}' C:\PS> iex $command 描述 ----------- 這個範例會執行 $cmd 變數中儲存的命令字串。 該命令字串因為包含代表目前物件的 $_ 變數而用單引號括住。如果用雙引號括住,$_ 變數在儲存到 $command 字串之前會被其值所取代。
範例 4
C:\PS>$cmdlet_name = "get-eventlog" C:\PS> $example_number = 1 C:\PS> $example_code = (get-help $cmdlet_name).examples.example[($example_number-1)].code C:\PS> invoke-expression $example_code 描述 ----------- 這個命令會擷取並執行 Get-EventLog Cmdlet 說明主題中的第一個範例。 若要執行不同 Cmdlet 的範例,請將 $cmdlet_name 變數的值變更為此 Cmdlet 的名稱。此外,請將 $example_number 變數變更成您想要執行的範例編號。如果範例編號無效,這個命令將會失敗。
請參閱