#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(...) はスクリプトの先頭に置かないと上記エラーが出るので注意!!

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS