次の方法で共有


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を できます。 $Input自動変数を使用して、コマンド内の入力オブジェクトを表します。

出力

PSObject

呼び出されたコマンドによって生成された出力 (Command パラメーターの値) を返します。

メモ

  • 式は、評価可能なステートメントであり、Windows PowerShell コマンドなどの結果を生成します。

  • スクリプトで Invoke-Expression コマンドレットを使用する場合は、適切な予防措置を講じる必要があります。 Invoke-Expression を使用してユーザーが入力したコマンドを実行する場合は、実行する前にコマンドが安全に実行されることを確認します。 一般に、フリーフォーム入力を許可するのではなく、定義済みの入力オプションを使用してスクリプトを設計することをお勧めします。