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 パラメーターが必要です。
型: | String |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
入力
System.String or PSObject
コマンドを表すオブジェクトをパイプ処理して、Invoke-Expression
できます。
$Input
自動変数を使用して、コマンド内の入力オブジェクトを表します。
出力
PSObject
呼び出されたコマンドによって生成された出力 (Command パラメーターの値) を返します。
メモ
ほとんどの場合、PowerShell の呼び出し演算子を使用して式を呼び出し、同じ結果を得られます。 呼び出し演算子は、より安全なメソッドです。 詳細については、about_Operatorsを参照してください。