Windows PowerShell でコマンドライン引数を取得する

Marion Paul Kenneth Mendoza 2023年1月30日
  1. PowerShell スクリプトでパラメーターを定義する
  2. PowerShell スクリプトの名前付きパラメーター
  3. PowerShell スクリプトのパラメーターにデフォルト値を割り当てる
  4. PowerShell スクリプトでパラメーターを切り替える
  5. PowerShell スクリプトの必須パラメーター
Windows PowerShell でコマンドライン引数を取得する

引数は、param() と呼ばれる Windows PowerShell パラメーター関数を使用して処理します。Windows PowerShell パラメーター関数は、スクリプトの基本的なコンポーネントです。パラメータは、開発者がスクリプトユーザーが実行時に入力を提供できるようにする方法です。

この記事では、パラメーター関数を使用してスクリプトを作成する方法、それらを使用する方法、およびパラメーターを作成するためのいくつかのベストプラクティスについて学習します。

PowerShell スクリプトでパラメーターを定義する

管理者は、パラメーター関数 param() を使用して、スクリプトおよび関数のパラメーターを作成できます。関数には、変数によって定義された 1つ以上のパラメーターが含まれています。

Hello_World.ps1

param(
     $message
)

ただし、パラメータが必要なタイプの入力のみを受け入れるようにするために、ベストプラクティスでは、パラメータブロック [Parameter()] を使用してデータ型をパラメータに割り当て、変数の前に角括弧 [] でデータタイプを囲むことがベストプラクティスです。

Hello_World.ps1

param(
    [Parameter()]
    [String]$message
)

上記の Hello_World.ps1 の例では、変数 message は、指定された値のデータ型が String の場合にのみ、渡された値を受け入れます。

PowerShell スクリプトの名前付きパラメーター

スクリプトでパラメータ関数を使用する 1つの方法は、パラメータ名を使用することです。このメソッドは、名前付きパラメータと呼ばれます。名前付きパラメーターを介してスクリプトまたは関数を呼び出す場合、パラメーターのフルネームとして変数名を使用します。

この例では、Hello_World.ps1 を作成し、パラメーター関数内に変数を定義しました。パラメータ関数内に 1つ以上の変数を配置できることを忘れないでください。

Hello_World.ps1

param(
    [Parameter()]
    [String]$message,
    [String]$emotion
)

Write-Output $message
Write-Output "I am $emotion"

次に、.ps1 ファイルを実行するときに、名前付きパラメーターを引数として使用できます。

.\Hello_World.ps1 -message 'Hello World!' -emotion 'happy'

出力:

Hello World!
I am happy

PowerShell スクリプトのパラメーターにデフォルト値を割り当てる

スクリプト内でパラメーターに値を指定することにより、パラメーターに値を事前に割り当てることができます。次に、実行行から値を渡さずにスクリプトを実行すると、スクリプト内で定義された変数のデフォルト値が使用されます。

param(
    [Parameter()]
    [String]$message = "Hello World",
    [String]$emotion = "happy"
)

Write-Output $message
Write-Output "I am $emotion"
.\Hello_World.ps1

出力:

Hello World!
I am happy

PowerShell スクリプトでパラメーターを切り替える

使用できるもう 1つのパラメーターは、[switch] データ型で定義されたスイッチパラメーターです。switch パラメータは、バイナリ値またはブール値に使用され、true または false を示します。

Hello_World.ps1

param(
    [Parameter()]
    [String]$message,
    [String]$emotion,
    [Switch]$display
)
if($display){
    Write-Output $message
    Write-Output "I am $emotion"
}else{
    Write-Output "User denied confirmation."
}

以下の構文を使用して、script パラメーターを使用してスクリプトを呼び出すことができます。

.\Hello_World.ps1 -message 'Hello World!' -emotion 'happy' -display:$false

出力:

User denied confirmation.

PowerShell スクリプトの必須パラメーター

スクリプトの実行時に使用する必要のあるパラメーターが 1つ以上あるのが一般的です。パラメータブロック [Parameter()] 内に Mandatory 属性を追加することで、パラメータを必須にすることができます。

Hello_World.ps1:

param(
    [Parameter(Mandatory)]
    [String]$message,
    [String]$emotion,
    [Switch]$display
)
if($display){
    Write-Output $message
    Write-Output "I am $emotion"
}else{
    Write-Output "User denied confirmation."
}

Hello_World.ps1 を実行すると、Windows PowerShell はスクリプトの実行を許可せず、値の入力を求めます。

.\Hello_World.ps1

出力:

cmdlet hello_world.ps1 at command pipeline position 1
Supply values for the following parameters:
message:
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn