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

入力

String

式を表す文字列をパイプ処理して、このコマンドレットに呼び出すことができます。 コマンドの $Input 入力オブジェクトを表すには、自動変数を使用します。

PSObject

式を表す オブジェクトをパイプ処理して、このコマンドレットに呼び出すことができます。 コマンドの $Input 入力オブジェクトを表すには、自動変数を使用します。

出力

None

このコマンドレットはそれ自体の出力を返しませんが、呼び出されたコマンドは出力を返す可能性があります。

メモ

PowerShell には、 の次のエイリアスが Invoke-Expression含まれています。

  • すべてのプラットフォーム:
    • iex

ほとんどの場合、PowerShell の呼び出し演算子を使用して式を呼び出し、同じ結果を得ることができます。 呼び出し演算子は、より安全なメソッドです。 詳細については、「 about_Operators」を参照してください。