以下のような psake タスクがあります (わかりやすくするために簡略化しています)。
Task Invoke-Deploy {
Import-Module "somefunctions.psm1"
Import-Module "morefunctions.psm1"
Set-Something #This is a function defined in morefunctions.psm1
}
関数 Set-Something (モジュール morefunctions.psm1 で定義されている) は、関数 Get-Something (somefunctions.psm1 で定義されている) を呼び出そうとします。エラーが発生すると、次のようになります。
「Get-Something」という用語は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。
興味深いことに、「morefunctions.psm1」を「Import-Module "somefunctions.psm1"」にも変更すると、その時点ですべて正常に機能しました。ただし、他のモジュールの存在に依存する必要がない限り、モジュールを「疎結合」にしたいので、これを行う必要はありません。
Powershell の関数/変数のスコープに関する私の知識は限られていますが、インポートされた 2 つの異なるモジュールの関数が同じスコープに存在するため、それらのモジュールの 1 つの関数が他のモジュールの関数を呼び出すことができると考えました。
私はpsakeタスクの中にいるという事実によってその範囲が影響を受けているのではないかと疑っています. ティア。