呼び元となるメインファイル上から、別モジュールファイルに定義した関数、変数、クラスメソッドなどを、VBAの開発ツールと同様にインテリセンス(自動補完)が効くようにできるコーディングさせる方法の一例
例
以下、メインファイル(Main.ps1)、関数、変数を記載したモジュールファイル、クラスを記載したファイルになる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<# ファイル名 : Main.ps1 の内容 #> #Using Moduleで対象モジュールを取り込む #これによりインテリセンスが効く Using Module .\Module.psm1 #関数、変数の格納されたモジュールファイル Using Module .\Class.psm1 #クラスで実装したモジュールファイル #モジュールファイルからの関数の呼び出し DoModuleFunction $Ret = DoFunctionByValue([int]12) Write-Host 'DoFunctionByValue 実行結果' $Ret.ToString() #モジュールファイルからの変数の呼び出し write-host $global:ModuleVariable write-host $global:ModuleValueStrings #モジュール定義された変数を塗り替え、モジュール関数で変更具合を確認 $global:ModuleValueStrings = '違う変数に入れ替え' ShowModuleValueStrings #クラスを生成 $test = New-Object TestCls #クラスのプロパティに値を設定 $test.ClassDataInt = 1 $test.ClassDataStr = '文字列' #クラスのメソッドを実行 write-host $test.Add(1) write-host $test.Add(3) write-host $test.Domethod() |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<# ファイル名 : Module.psm1 #> #モジュール変数 $global:ModuleValueInteger = 9999 #何らかの数値(例:リトライ値等) $global:ModuleValueStrings = 'モジュール変数' # #モジュール関数 function DoModuleFunction { #何らかの処理を記載 Write-Host "Exec DoModuleFunction" } #モジュール関数、引数あり function DoFunctionByValue( [int]$aa = 1) { write-host 'DoFunctionByValue :' $aa.ToString() return $true } function ShowModuleValueStrings { write-host $global:ModuleValueStrings } #これが大事、定義した変数の公開 Export-ModuleMember -Variable ModuleValueInteger Export-ModuleMember -Variable ModuleValueStrings #これが大事、定義した関数の公開 Export-ModuleMember -Function DoModuleFunction Export-ModuleMember -Function DoFunctionByValue Export-ModuleMember -Function ShowModuleValueStrings |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<# ファイル名 : Class.psm1 #> class TestCls { # プロパティ [int] $ClassDataInt [string] $ClassDataStr # 静的プロパティ static [int] $StaticData #メソッド Domethod() { Write-host "methodが実行されました。" } [int] Add([int]$Indata){ $this.ClassDataInt += $Indata return $this.ClassDataInt } } |
実行結果
1 2 3 4 5 6 7 8 9 |
Exec DoModuleFunction DoFunctionByValue : 12 DoFunctionByValue 実行結果 True モジュール変数 違う変数に入れ替え 2 5 methodが実行されました。 PS C:\Users\hp\papanda925\ps1> |
ポイント
ポイントは、 Using Module でモジュールファイルを読み込むこと
コメント