
PowerShell スクリプトの引数とパラメーター
PowerShellを活用していると引数を使用したいと思い自分なりに整理しました。
PowerShell スクリプトで引数を受け取る方法(基本)
PowerShell スクリプトでは引数は自動的に $Args[] に格納
第一引数は $Args[0]、第二引数は $Args[1] といった形で引き渡されます。
(ps1の記述)
$args[0],$args[1] といった形で引数を受け取り使用します。
(ps1実行時)
C:\>.\Sample2.ps1 Test1 Test2
以降は、少しだけ高度で便利な属性やパラメータについて記述
引数を宣言する方法:Param属性の利用
Powershell スクリプト冒頭に次のように予め引数を宣言して、スクリプト実行時にどの引数へ渡すのか指定が出来ます。
Param($Arg1,$Arg2) #第一引数を$Arg1,第二引数を$Arg2に格納する
Write-Host $Arg1 #第一引数の内容確認のため省略可
Write-Host $Arg2 #第二引数の内容確認のため省略可
次のように改行して記述も可能
Param(
$Arg1, #カンマが必要
$Arg2
)
<引数指定>
Paramを記述することでPowershell スクリプト実行時にどの引数に値を渡すか指定も可能です。
Sample2.ps1 -Arg1 Test1 -Arg2 Test2
<引数の型指定>宣言した型以外の引数を渡すとエラーが返ります。
Param(
[String]$Arg1, #$Arg1は文字列型,
[Int]$Arg2 #$Arg2は整数型で宣言
)
<引数に初期値をセット>引数を指定しなければ初期値が利用されます。
Param(
[String]$Arg1 = "Test1",
[Int]$Arg2 = 123
)
初期値に環境変数やコマンドレットの結果をセットすることも可能
Param(
[String]$Hostname = $Env:COMPUTERNAME, #ホスト名を初期値に設定
[Datetime]$Date = (Get-Date) #現在日時を初期値に設定
)
引数を必須パラメーターとする:Parameter 属性
[parameter(mandatory=$true)]の Parameter 属性を設定し、引数を必須とすることができます。
Param(
[parameter(mandatory=$true)][String]$Arg1,
[parameter(mandatory=$true)][int]$Arg2
)
決められた値以外受け付けない:Validate 属性
Param(
[ValidateSet("Test1","Test2")][String]$Arg1,
[ValidateSet("123","321")][int]$Arg2
)