PowerShellの引数の受け取り方まとめ!

powershell

PowerShellの引数の受け取り方を知りたいときはないでしょうか。

けど、そんな中で悩むことは、

・PowerShellの引数の受け取り方がいくつもあってどれを使ってよいかわからない

ですよね。

今回はそんなお悩みを解決する

・PowerShellの引数の受け取り方

についてまとめます!

PowerShellには関数やスクリプトの引数を受け取るためのいくつかの方法があります。

1. コマンドライン引数で受け取る

引数は関数宣言の後にカンマ区切りで指定することができます。
以下サンプルコードです。

# This is a basic example of accepting command-line arguments
function greetUser($firstName, $lastName) {
    Write-Host "こんにちは!$firstName $lastName"
}

# Now we can call this function with two arguments
greetUser "タカヒロ" "エク短"

結果です。

こんにちは!タカヒロ エク短

2. Paramキーワードで受け取る

または、`param`キーワードを使って引数を受け取ることもできます。
これにより引数の順序に柔軟性を持たせることができます。

DynamicParamキーワードを使用して動的パラメータを定義するサンプルコードです。

# This is an example of using the param keyword
function greetUser {
    param (
        [string]$firstName,
        [string]$lastName
    )
    
    Write-Host "こんにちは!$firstName $lastName"
}

# Now we can call this function with two arguments
greetUser -firstName "タカヒロ" -lastName "エク短"

結果です。

こんにちは!タカヒロ エク短

3. 動的パラメータで受け取る

DynamicParamキーワードを使用すると、引数のリストを動的に生成できます。
引数が実行時に決定される場合に有効です。

function greetUser {
    param (
        [string]$firstName
    )

    DynamicParam {
        $paramDictionary = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        $lastNameAttribute = New-Object System.Management.Automation.ParameterAttribute
        $lastNameAttribute.Mandatory = $true
        $lastNameAttribute.Position = 1

        $lastNameParam = New-Object System.Management.Automation.RuntimeDefinedParameter('lastName', [string], $lastNameAttribute)
        $paramDictionary.Add('lastName', $lastNameParam)

        return $paramDictionary
    }

    process {
        Write-Host "こんにちは! $firstName $($lastName.Value)"
    }
}

通常、PowerShellのパラメータは関数の定義時に静的に指定されますが、DynamicParamを使用すると、実行時にパラメータを動的に追加することができ、
特定の条件に基づいて実行時に異なるパラメータを受け取ることができます。

上記のコードでは、最初に$firstNameという静的なパラメータを定義しています。
その後、DynamicParamブロック内で$lastNameという動的なパラメータを定義しています。
$lastNameは必須パラメータ($true)です。

出力サンプルです。
動的なパラメータlastNameを指定して呼び出し

greetUser -firstName "タカヒロ" -lastName "エク短"

結果です。

こんにちは!タカヒロ

タカヒロ
タカヒロ
当方のPowerShell 7.3.6ですと、DynamicParamの部分が出力されませんでした。
DynamicParamの方法は環境によっては機能しない可能性がありますことご了承願います。

さいごに

いかがでしょうか。

今回は、

・PowerShellの引数の受け取り方

についてまとめました。

また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。









コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です