Windows PowerShell スクリプトにパラメーターを渡す
コマンドレットと同じ方法でパラメーターを受け入れるようにスクリプトを構成できます。 これは、ユーザーがコマンドレットに対して入力する方法と一致するため、ユーザーが入力するのに適した方法です。 一貫性があることで、ユーザーは理解しやすくなります。
パラメーター値を格納する変数を識別するには、 Param() ブロックを使用します。 変数名はかっこの間に定義します。 Param() ブロックを使用するための構文は次のとおりです。
Param(
[string]$ComputerName ,
[int]$EventID
)
Param() ブロックで定義されている変数名は、パラメーターの名前でもあります。 前の例では、この Param() ブロックを含むスクリプトには、使用できる -ComputerName パラメーターと -EventID パラメーターがあります。 スクリプトのパラメーター名を入力するとき、コマンドレット パラメーターの場合と同様にタブ補完を使用できます。 パラメーターを使用してスクリプトを実行するための構文は、次のとおりです。
.\GetEvent.ps1 -ComputerName LON-DC1 -EventID 5772
注意
パラメーターは既定で位置指定されます。 パラメーター名が指定されていない場合は、パラメーター値は順番にパラメーターに渡されます。 たとえば、スクリプト名の後の最初の値は、最初のパラメーター変数に配置されます。
注意
スクリプトに Param() ブロックを配置しない場合でも、名前のないパラメーターを使用してスクリプトにデータを渡すことができます。 スクリプト名の後に指定された値は、スクリプト内で $args 配列内で使用できます。
変数型の定義
Param() ブロックで変数型を定義することをお勧めします。 変数型を定義するとき、その変数型に変換できない値をユーザーが入力すると、エラーが生成されます。 これは、ユーザーが入力したデータを検証するための 1 つの方法です。
オンまたはオフにするオプションがある場合は、パラメーターにスイッチ変数型を使用できます。 スクリプトを実行するとき、パラメーターの存在によって変数が $true に設定されます。 パラメーターが存在しない場合、変数の値は $false です。 たとえば、通常、ユーザーにいくつかの状態情報を表示するスクリプトでは、画面へのすべての出力を抑制する -quiet パラメーターを作成できます。
ユーザーにとって構文が単純であるため、パラメーターについては、スイッチ変数がブール変数よりも一般的に好まれます。 ユーザーは、$true 値または $false 値を含める必要はありません。
既定値
パラメーターの既定値は Param() ブロックで定義できます。 定義した既定値は、ユーザーがパラメーターの値を指定しない場合にのみ使用されます。 これにより、必要なすべてのパラメーターに値が確実に設定されます。
次の例は、既定値を設定する方法を示します。
Param(
[string]$ComputerName = "LON-DC1"
)
ユーザー入力の要求
ユーザーがパラメーター値を指定しない場合、入力を求めることもできます。 これにより、指定できる論理的な既定値がない場合に、ユーザーがパラメーターの値を確実に指定するようになります。
次の例は、ユーザーに入力を求める方法を示します。
Param(
[int]$EventID = Read-Host "Enter event ID"
)
注意
Param() ブロックの Parameter() 属性を使用して、スクリプト内のパラメーターの追加の詳細オプション (必須パラメーターの作成など) を構成できます。
その他の読み取り:Parameter() 属性の詳細については、about_Functions_Advanced_Parametersを参照してください。