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 |
入力
System.String or PSObject
コマンドを表す オブジェクトを に Invoke-Expression
パイプできます。
コマンドの $Input
入力オブジェクトを表すには、自動変数を使用します。
出力
PSObject
呼び出されたコマンドによって生成される出力 ( Command パラメーターの値) を返します。
メモ
ほとんどの場合、PowerShell の呼び出し演算子を使用して式を呼び出し、同じ結果を得られます。 呼び出し演算子は、より安全なメソッドです。 詳細については、「 about_Operators」を参照してください。