Invoke-Expression
ローカル コンピューターでコマンドまたは式を実行します。
構文
Default (既定)
Invoke-Expression
[-Command] <String>
[<CommonParameters>]
説明
Invoke-Expression
コマンドレットは、指定した文字列をコマンドとして評価または実行し、式またはコマンドの結果を返します。
Invoke-Expression
しないと、コマンド ラインで送信された文字列が変更されずに返されます (エコーされます)。
式が評価され、現在の範囲で実行されます。 詳細については、about_Scopesを参照してください。
注意事項
スクリプトで 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
しないと、式は出力されますが、評価されません。
最初のコマンドは、Get-Process
(文字列) の値を $Command
変数に割り当てます。
2 番目のコマンドは、コマンド ラインで変数名を入力した場合の効果を示しています。 PowerShell は文字列をエコーします。
3 番目のコマンドでは、Invoke-Expression
を使用して文字列を評価します。
例 2: ローカル コンピューターでスクリプトを実行する
Invoke-Expression -Command "C:\ps-test\testscript.ps1"
"C:\ps-test\testscript.ps1" | Invoke-Expression
これらのコマンドでは、Invoke-Expression
を使用して、ローカル コンピューターでスクリプト (TestScript.ps1
) を実行します。 2 つのコマンドは同等です。 1 つ目では、Command パラメーターを使用して、実行するコマンドを指定します。
2 つ目は、パイプライン演算子 (|
) を使用してコマンド文字列を Invoke-Expression
に送信します。
例 3: 変数でコマンドを実行する
$Command = 'Get-Process | where {$_.CPU -gt 1000}'
Invoke-Expression $Command
次の使用例は、$Command
変数に保存されたコマンド文字列を実行します。
コマンド文字列は、現在のオブジェクトを表す変数 $_
を含むため、単一引用符で囲まれています。 二重引用符で囲まれている場合、$_
変数は、$Command
変数に保存される前にその値に置き換えられます。
例 4: コマンドレットのヘルプの例を取得して実行する
$Cmdlet_name = "Get-ComputerInfo"
$Example_number = 1
$Example_code = (Get-Help $Cmdlet_name).examples.example[($Example_number-1)].code
Invoke-Expression $Example_code
このコマンドは、Get-EventLog
コマンドレットのヘルプ トピックの最初の例を取得して実行します。
別のコマンドレットの例を実行するには、$Cmdlet_name
変数の値をコマンドレットの名前に変更します。 そして、$Example_number
変数を実行したい例の番号に変更してください。 例の番号が無効な場合、コマンドは失敗します。
注
ヘルプファイルのサンプルコードに出力が含まれている場合、PowerShell はその出力をコードと共に実行しようとし、その結果エラーが発生します。
パラメーター
-Command
実行するコマンドまたは式を指定します。 コマンドまたは式を入力するか、コマンドまたは式を含む変数を入力します。 Command パラメーターが必要です。
パラメーターのプロパティ
型: | String |
規定値: | None |
ワイルドカードのサポート: | False |
DontShow: | False |
パラメーター セット
(All)
配置: | 0 |
必須: | True |
パイプラインからの値: | True |
プロパティ名別のパイプラインからの値: | False |
残りの引数からの値: | False |
CommonParameters
このコマンドレットでは、一般的なパラメーター -Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction、-WarningVariable の各パラメーターがサポートされています。 詳細については、about_CommonParametersを参照してください。
入力
String
式を表す文字列をパイプ処理して、このコマンドレットに呼び出すことができます。
$input
自動変数を使用して、コマンド内の入力オブジェクトを表します。
PSObject
式を表すオブジェクトをパイプ処理して、このコマンドレットに呼び出すことができます。
$input
自動変数を使用して、コマンド内の入力オブジェクトを表します。
出力
None
このコマンドレットはそれ自体の出力を返しませんが、呼び出されたコマンドは出力を返す可能性があります。
メモ
PowerShell には、Invoke-Expression
の次のエイリアスが含まれています。
- すべてのプラットフォーム:
iex
ほとんどの場合、PowerShell の呼び出し演算子を使用して式を呼び出し、同じ結果を得られます。 呼び出し演算子は、より安全なメソッドです。 詳細については、about_Operatorsを参照してください。