Invoke-Expression
ローカル コンピューターでコマンドまたは式を実行します。
構文
Invoke-Expression
[-Command] <String>
[<CommonParameters>]
説明
Invoke-Expression コマンドレットは、指定した文字列をコマンドとして評価または実行し、式またはコマンドの結果を返します。
Invoke-Expression
例
例 1: 式を評価する
PS C:\> $Command = "Get-Process"
PS C:\> $Command
Get-Process
PS C:\> 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: ローカル コンピューターでスクリプトを実行する
PS C:\> Invoke-Expression -Command "C:\ps-test\testscript.ps1"
PS C:\> "C:\ps-test\testscript.ps1" | Invoke-Expression
これらのコマンドは、Invoke-Expression を使用して、ローカル コンピューターでスクリプト (TestScript.ps1) を実行します。
2 つのコマンドは同等です。
1 つ目では、Command パラメーターを使用して、実行するコマンドを指定します。
2 つ目は、パイプライン演算子 (|) を使用してコマンド文字列を Invoke-Expression
例 3: 変数でコマンドを実行する
PS C:\> $Command = 'Get-Process | where {$_.cpu -gt 1000}'
PS C:\> Invoke-Expression $Command
次の使用例は、$Command変数に保存されたコマンド文字列を実行します。
コマンド文字列は、現在のオブジェクトを表す変数 $_
を含むため、単一引用符で囲まれています。
二重引用符で囲まれている場合、$_
変数は、$Command変数に保存される前にその値に置き換えられます。
例 4: コマンドレットのヘルプの例を取得して実行する
PS C:\> $Cmdlet_name = "Get-EventLog"
PS C:\> $Example_number = 1
PS C:\> $Example_code = (Get-Help $Cmdlet_name).examples.example[($Example_number-1)].code
PS C:\> Invoke-Expression $Example_code
このコマンドは、Get-EventLog コマンドレットのヘルプ トピックの最初の例を取得して実行します。
別のコマンドレットの例を実行するには、$Cmdlet_name 変数の値をコマンドレットの名前に変更します。 また、$Example_number 変数を実行する例の数値に変更します。 例の番号が無効な場合、コマンドは失敗します。
パラメーター
-Command
実行するコマンドまたは式を指定します。 コマンドまたは式を入力するか、コマンドまたは式を含む変数を入力します。 Command パラメーターが必要です。
型: | String |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
入力
System.String or PSObject
コマンドを表すオブジェクトをパイプ処理して、Invoke-Expressionを
出力
PSObject
呼び出されたコマンドによって生成された出力 (Command パラメーターの値) を返します。
メモ
式は、評価可能なステートメントであり、Windows PowerShell コマンドなどの結果を生成します。
スクリプトで Invoke-Expression コマンドレットを使用する場合は、適切な予防措置を講じる必要があります。 Invoke-Expression を使用してユーザーが入力したコマンドを実行する場合は、実行する前にコマンドが安全に実行されることを確認します。 一般に、フリーフォーム入力を許可するのではなく、定義済みの入力オプションを使用してスクリプトを設計することをお勧めします。