
記事記号:[mg1911] 初版:2011/Sep/30

名前
Invoke-Expression
概要
ローカル コンピューター上でコマンドまたは式を実行します。
構文
Invoke-Expression [-Command] <string> [<CommonParameters>]
説明
Invoke-Expression コマンドレットは、指定された文字列をコマンドとして評価また
は実行し、式またはコマンドの結果を返します。Invoke-Expression を使用しない場
合、コマンド ラインで送られた文字列はそのまま返されます (エコー表示されます)。
パラメーター
-Command <string>
実行するコマンドまたは式を指定します。コマンドまたは式を入力するか、コマ
ンドまたは式を含んでいる変数を入力します。Command パラメーターは必須です。
必須 true
位置 1
既定値
パイプライン入力を許可する true (ByValue)
ワイルドカード文字を許可する false
<CommonParameters>
このコマンドレットは、次の共通パラメーターをサポートします: Verbose、
Debug、ErrorAction、ErrorVariable、WarningAction、WarningVariable、
OutBuffer、および OutVariable。詳細については、
「get-help about_commonparameters」と入力してヘルプを参照してください。
入力
System.String または PSObject
コマンドを表すオブジェクトを Invoke-Expression に対してパイプ処理できま
す。$input 自動変数を使用して、コマンドの入力オブジェクトを表します。
出力
PSObject
呼び出されたコマンドによって生成された出力 (Command パラメーターの値)
を返します。
メモ
-- 式は、評価可能なステートメントで、Windows PowerShell コマンドなどの結
果を生成します。
-- スクリプトで Invoke-Expression コマンドレットを使用する場合、適切な対
策を講じてください。ユーザーが入力したコマンドを実行するために Invoke-Ex
pression を使用する場合、コマンドを実行する前に、実行しても安全であるこ
とを確認します。通常、フリーフォームの入力を許可するのではなく、事前に定
義された入力オプションを伴うスクリプトを設計することをお勧めします。
-------------------------- 例 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 変数に代入します。
2 番目のコマンドは、コマンド ラインで変数名を入力した結果を示します。Windows
PowerShell は文字列をエコー表示します。
3 番目のコマンドは、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) を実行します。これら 2 つのコマンドは同等です。
最初のコマンドは、Command パラメーターを使用して実行するコマンドを指定します。
2 番目のコマンドは、パイプライン演算子 (|) を使用してコマンド文字列を Invoke
-Expression に渡します。
-------------------------- 例 3 --------------------------
C:\PS>$cmd = 'get-process | where {$_.cpu -gt 1000}'
C:\PS> iex $command
説明
-----------
この例では、$cmd 変数に保存されたコマンド文字列を実行しています。
このコマンド文字列は、現在のオブジェクトを表す変数 $_ を含んでいるため、単一
引用符で囲まれています。このコマンド文字列が二重引用符で囲まれている場合、$c
ommand 文字列に保存される前にその値で $_ 変数が置換されます。
-------------------------- 例 4 --------------------------
C:\PS>$cmdlet_name = "get-eventlog"
C:\PS> $example_number = 1
C:\PS> $example_code = (get-help $cmdlet_name).examples.example[($example_nu
mber-1)].code
C:\PS> invoke-expression $example_code
説明
-----------
このコマンドは、Get-EventLog コマンドレット ヘルプ トピックの最初の例を取得し
て実行します。
別のコマンドレットの例を実行するには、そのコマンドレットの名前を $cmdlet_name
変数の値に設定し、$example_number 変数に実行する例の番号を設定します。例の番
号が無効な場合、コマンドは失敗します。
関連するリンク
Online version: http://go.microsoft.com/fwlink/?LinkID=113343
Invoke-Command

基本ソフト: Windows 7
キーワード: Windows PowerShell、ヘルプ、Cmdlet、Invoke-Expression