レポートを生成するための PowerShell スクリプトに取り組んでおり、エンド ユーザーが提供するモジュールを読み込んで呼び出しています。
最初に、ユーザー提供のセットアップ関数を呼び出してから、モジュールをロードします。
# Load user provided modules
($userModules = Get-ChildItem ($userModHome + "*.psm1")) | ForEach-Object { Import-Module (join-path $userModHome $_.Name) } | Out-Null
セットアップと読み込みを呼び出した後、モジュールのリストをループして、それぞれを呼び出します。これはすべて簡単ですが、私が達成したいことは、関数が必要とするすべてのものに対してグローバル変数を必要としないことです。
関数が必要とする可能性のあるすべてを含むオブジェクトを返すセットアップ関数を要求し、そのデータ構造を各モジュールに渡すことができますが、それは多くの余分なものを渡す可能性があります。
モジュールに何を渡すかを実行時に決定する方法があるかどうか、またはグローバル変数を使用せずにモジュールを動的にロードして実行する他のエレガントなソリューションがあるかどうか疑問に思っています。
一言で言えば、Powershell にリフレクションがあり、モジュールの詳細を判断して呼び出すことができるかどうかを尋ねていると思います。私が推測する難しい部分は、特定のモジュールに渡すパラメーターを決定することです。