PowerShell 引数の受け取り方

更新 2020/04/18

この記事の内容
  1. パラメーターの属性
  2. 基本的な書き方
  3. 引数を必須にする
  4. パイプラインから引数を受け取る
  5. 引数の型を宣言する
  6. String 型で宣言
  7. Int 型で宣言
  8. Datetime 型で宣言
  9. String 型の配列で宣言
  10. Switch 型で宣言
  11. 引数に初期値を設定する
  12. リテラルで設定する
  13. コマンドレットで初期値を設定する例
  14. 検証属性
  15. 受け取るパラメーターの数を制限する
  16. 受け取るパラメーターの文字数を制限する
  17. 受け取るパラメーターの数値範囲を制限する
  18. 決められたパラメーター以外は弾く
  19. Null を通さない
  20. Null や値が空は通さない
  21. 受け取るパラメーターを正規表現で制限する
  22. バリデーションスクリプトをかける
  23. 参考

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

パラメーターの属性

基本的な書き方

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

参考

ページの先頭へ ↑