PowerShell 引数の受け取り方

2020/04/18

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

パラメーターの属性

基本的な書き方

引数は 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
)

Datetime 型で宣言

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

String 型の配列で宣言

Param(
  [Parameter()]
  [String[]]
  $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
)

参考