38
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

引数の取り方備忘録

ブログからの転載

引数を受け取るための宣言方法と使いそうなパラメーターの備忘録

パラメーターの属性

基本的な書き方

引数は Param 属性を使用して宣言します。

Param(
  [Parameter()]
  $ParameterName
)

複数のパラメーター属性を設定するときはカンマで区切ります。

Param(
  [Parameter(Argument1=value1,
             Argument2=value2)]
  $ParameterName
)

引数を必須にする

パラメーター属性に、Mandatory を宣言します

Param(
  [Parameter(Mandatory=$true)]
  $ParameterName
)

パイプラインから引数を受け取る

Param(
  [Parameter(ValueFromPipeline=$true)]
  $ParameterName
)

引数の型を宣言する

String 型で宣言

Param(
  [Parameter()]
  [String]
  $ParameterName
)

Int 型で宣言

Param(
  [Parameter()]
  [Int]
  $ParameterName
)

String 型の配列で宣言

Param(
  [Parameter()]
  [String[]]
  $ParameterName
)

Datetime 型で宣言

Param(
  [Parameter()]
  [Datetime]
  $ParameterName
)

Switch 型で宣言

Param(
  [Parameter()]
  [Switch]
  $ParameterName
)

引数に初期値を設定する

リテラルで設定する

Param(
  [Parameter()]
  [String]
  $ParameterName = 'DefaultParameter'
)

コマンドレットで初期値を設定する例

セパレーターなし今日の年月日をデフォルトの引数にする例。

Param(
  [Parameter()]
  [String]
  $ParameterName = (Get-Date -Format 'yyyyMMdd')
)

検証属性

受け取るパラメーターの数を制限する

1~5 個のパラメーターを受け取る例。

Param(
  [Parameter()]
  [ValidateCount(1,5)]
  [String[]]
  $ParameterName
)

受け取るパラメーターの文字数を制限する

1~5 文字の制限をかける例。

Param(
  [Parameter()]
  [ValidateLength(1,5)]
  [String]
  $ParameterName
)

受け取るパラメーターの数値範囲を制限する

1~5 で制限をかける例。

Param(
  [Parameter()]
  [ValidateRange(1,5)]
  [Int]
  $ParameterName
)

決められたパラメーター以外は弾く

Low, Middle, High 以外は弾く例。

Param(
  [Parameter()]
  [ValidateSet("Low", "Middle", "High")]
  [Int]
  $ParameterName
)

Null を通さない

Param(
  [Parameter()]
  [ValidateNotNull()]
  $ParameterName
)

Null や値が空のは通さない

Param(
  [Parameter()]
  [ValidateNotNullOrEmpty()]
  $ParameterName
)

受け取るパラメーターを正規表現で制限する

3 文字の数値 + 半角ハイフン + 4 文字の数値のみ通す例。

Param(
  [Parameter()]
  [ValidatePattern("^\d{3}\-\d{4}$")]
  [String]
  $ParameterName
)

バリデーションスクリプトをかける

ファイルの存在チェックをかける例。

Param(
  [Parameter()]
  [ValidateScript({Test-Path -LiteralPath $_ -PathType Leaf})]
  $ParameterName
)

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
38
Help us understand the problem. What are the problem?