Invoke-Expression
ローカル コンピューター上でコマンドまたは式を実行します。
構文
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 パラメーターが必要です。
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
入力
式を表す文字列をパイプ処理して、このコマンドレットに呼び出すことができます。 コマンドの $Input
入力オブジェクトを表すには、自動変数を使用します。
式を表す オブジェクトをパイプ処理して、このコマンドレットに呼び出すことができます。 コマンドの $Input
入力オブジェクトを表すには、自動変数を使用します。
出力
None
このコマンドレットはそれ自体の出力を返しませんが、呼び出されたコマンドは出力を返す可能性があります。
メモ
PowerShell には、 の次のエイリアスが Invoke-Expression
含まれています。
- すべてのプラットフォーム:
iex
ほとんどの場合、PowerShell の呼び出し演算子を使用して式を呼び出し、同じ結果を得ることができます。 呼び出し演算子は、より安全なメソッドです。 詳細については、「 about_Operators」を参照してください。