#author("2021-12-05T23:45:22+00:00","default:admin","admin") #author("2021-12-06T06:14:19+00:00","default:admin","admin") -[[Powershellで引数を受け取る:https://microsoftou.com/ps-arguments/]] -[[引数の取り方備忘録:https://qiita.com/miyamiya/items/ffb81859771a6a847ea4]] -[[PowerShellの引数展開に関する仕様まとめ:https://qiita.com/nimzo6689/items/166ad623d95f80d9c53b]] *基本 [#fb60ab28] -Powershellスクリプトでは、引数は自動的に $Args[] に格納される -引数を予め宣言する場合は Param($Arg1,$Arg2, ...) を使用する --Param($Arg1,$Arg2, ...) はスクリプトの最初で宣言すること(そうしないとエラーになる) --複数定義する場合はカンマを入れる必要がある -引数の型を宣言する場合は以下のようにする Param( [String]$Arg1, #$Arg1は文字列型, [Int]$Arg2 #$Arg2は整数型で宣言 ) -引数にdefault値をセットする場合は以下のようにする Param( [String]$Arg1 = "Test1", [Int]$Arg2 = 123 ) -引数を指定しなければ初期値が利用される -引数を必須パラメタとする場合は [parameter(mandatory=$true)] を付ける Param( [parameter(mandatory=$true)][String]$Arg1, [parameter(mandatory=$true)][int]$Arg2 ) -引数の最大長は 32767 文字? *バリデーション [#x73c8423] -[[パラメーターの検証属性について/前編:https://tech.blog.aerie.jp/entry/2014/04/21/115311]] -[[パラメーターの検証属性について/後編:https://tech.blog.aerie.jp/entry/2014/05/06/035412]] -指定値のみ受け入れるようにしたい場合は以下のようにする Param( [ValidateSet("Test1","Test2")][String]$Arg1, [ValidateSet("123","321")][int]$Arg2 ) *トラブルシューティング [#n2b76217] **「Param」という用語は、コマンドレット、関数、スクリプトファイル、または操作可能なプログラムの名前として認識されません。名前のスペルを確認するか、パスが含まれていた場合は、パスが正しいことを確認してから再試行してください。 [#y52df89d] -[[PowerShell 2.0および「「Param」という用語は、コマンドレット、関数、スクリプトファイル、または操作可能なプログラムの名前として認識されません」:https://www.webdevqa.jp.net/ja/powershell/powershell-20%E3%81%8A%E3%82%88%E3%81%B3%E3%80%8C%E3%80%8Cparam%E3%80%8D%E3%81%A8%E3%81%84%E3%81%86%E7%94%A8%E8%AA%9E%E3%81%AF%E3%80%81%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%AC%E3%83%83%E3%83%88%E3%80%81%E9%96%A2%E6%95%B0%E3%80%81%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%80%81%E3%81%BE%E3%81%9F%E3%81%AF%E6%93%8D%E4%BD%9C%E5%8F%AF%E8%83%BD%E3%81%AA%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%AE%E5%90%8D%E5%89%8D%E3%81%A8%E3%81%97%E3%81%A6%E8%AA%8D%E8%AD%98%E3%81%95%E3%82%8C%E3%81%BE%E3%81%9B%E3%82%93%E3%80%8D/966951912/]] -Param(...) はスクリプトの先頭に置かないと上記エラーが出るので注意!!