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 "エク短"
結果です。
こんにちは!タカヒロ
DynamicParamの方法は環境によっては機能しない可能性がありますことご了承願います。
さいごに
いかがでしょうか。
今回は、
についてまとめました。
また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。
コメントを残す