🦁
PowerShell パラメーターの作り方
基本
直接受け取る場合
param($val)
関数で受け取る場合
function FuncName{
param($val)
}
関数で受け取る場合(インライン)
function FuncName($val){
}
パラメーターに属性を付与する
パラメーターの属性は変数の前にセットして[ ]内に記述する。
属性内の引数はカンマで区切る
[parameter(Mandatory,Position=0)][string]$text
パラメーターのパラメーター属性
[parameter(<#この中に属性を付与する(複数の場合カンマ区切り)#>)]
引数の説明 | 引数 |
---|---|
パラメーターを必須にする | Mandatory |
パラメーターの位置指定 | Position=0 |
パラメーターセット名 | ParameterSetName="" |
パイプラインを受け取る | ValueFromPipeline |
パイプライン内の同名プロパティを利用する | ValueFromPipelineByPropertyName |
ヘルプメッセージの設定 | HelpMessage="" |
エイリアス属性
[Alias("")]
型を宣言する
型を宣言する場合、引数の前に型を記述する。
データ型一覧(MSDN)
[string]
パラメーターの値にセットすることを許可する(Allow)
Null をセット可能にする
必須パラメーターの値を空のコレクション$null
にすることができる。
[AllowNull()]
空文字をセット可能にする
必須パラメーターの値を空の文字列""
にすることができる。
[AllowEmptyString()]
空のコレクションをセット可能にする
必須パラメーターの値を空のコレクション@()
にすることができる。
[AllowEmptyCollection()]
パラメーターの入力規制を設定する(Validate)
パラメーター値の最小数と最大数を指定する
[ValidateCount(1,5)]$Horizonposition
パラメーターの最小文字数と最大文字数を指定する
[ValidateLength(1,10)]$Horizonposition
パラメーターの有効範囲を指定する
[ValidateRange("")]
引数の説明 | 引数 |
---|---|
0 より小さい | Negative |
0 以下 | NonPositive |
0 以上 | NonNegative |
0 より大きい | Positive |
引数に渡せる有効な値をセットする
[ValidateSet("Left" , "Center", "Right")]$Horizonposition
パラメーターの入力規制に正規表現を使用する
[ValidatePattern("")]
例:メールアドレスを受け取る
function Test-Email ([ValidatePattern("^[a-zA-Z0-9-_\.]+@[a-zA-Z0-9-_\.]+$")][string]$Email) {
write-host $Email
}
Test-Email -Email "Example@Email.com"
#> Example@Email.com
Test-Email -Email "hoge"
#> Cannot validate argument on parameter 'Email'. The argument "hoge" does not match the "^[a-zA-Z0-9-_\.]+@[a-zA-Z0-9-_\.]+$" pattern.
#> Supply an argument that matches "^[a-zA-Z0-9-_\.]+@[a-zA-Z0-9-_\.]+$" and try the command again.
パラメーターの入力規制にスクリプトを使用する
[ValidateScript(<#ScriptBlockを設定#>)]
例:過去の日付を受け付けない
function Test-FutureDate {
param (
[ValidateScript({ $_ -ge (Get-Date) })][DateTime]$Date
)
return $Date
}
Test-FutureDate -Date (Get-Date).AddDays(1)
#> 2023年2月2日 19:44:38
Test-FutureDate -Date (Get-Date)
#> Cannot validate argument on parameter 'Date'. The " $_ -ge (Get-Date) " validation script for the argument with value
#> "2023/01/31 19:45:19" did not return a result of True. Determine why the validation script failed, and then try the command again.
パラメーターの値に Null を受け付けない
[ValidateNotNull()]
パラメーターの値に Null・空文字・空配列を受け付けない
[ValidateNotNullOrEmpty()]
参考リンク
Discussion