PowerShell メインファイルから別モジュールに定義した関数、変数、クラスファイルをインテリセンスで呼び出せるコーディング手法

EXCEL

呼び元となるメインファイル上から、別モジュールファイルに定義した関数、変数、クラスメソッドなどを、VBAの開発ツールと同様にインテリセンス(自動補完)が効くようにできるコーディングさせる方法の一例

 以下、メインファイル(Main.ps1)、関数、変数を記載したモジュールファイル、クラスを記載したファイルになる。

<#
    ファイル名 : 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()
<#
    ファイル名 : 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
<#
    ファイル名 : 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 
    }
}

実行結果

Exec DoModuleFunction
DoFunctionByValue : 12
DoFunctionByValue 実行結果 True
モジュール変数    
違う変数に入れ替え
2
5
methodが実行されました。
PS C:\Users\hp\papanda925\ps1> 

ポイント

 ポイントは、 Using Module でモジュールファイルを読み込むこと

ライセンス:本記事のテキスト/コードは特記なき限り CC BY 4.0 です。引用の際は出典URL(本ページ)を明記してください。
利用ポリシー もご参照ください。

コメント

タイトルとURLをコピーしました