我想嵌套多个模块/脚本,我想将实际文件保存在多个目录中:
BuildTests[dir]
|BuildTests.psd1
|GenericTests[dir]
||GenericTests.psd1
||GenericTest1.ps1
||GenericTest2.ps1
|SpecificTests[dir]
||SpecificTests.psd1
||SpecificTest1.ps1
||SpecificTest2.ps1
我想为每个.ps1文件保留1个函数 我尝试过以下方法:
BuildTests.psd1中的定义NestedModules = @('.\GenericTests\GenericTests.psd1','.\SpecificTests\SpecificTests.psd1')
定义ScriptsToProcess = @('GenericTest1.ps1','GenericTest2.ps1')
相应地配置SpecificTests.psd1
基本上这可行,但是当检查get-module时,我看到.ps1文件中的所有函数都被导入了两次,使用-verbose参数进一步检查import-module,我可以看到有一次它是“加载模块... test1.ps1“和下一行是”Dot-Sourcing the script file .... test1.ps1“。
我尝试过.psd1中的不同变体(从.ps1更改为.psm1并将它们包含在嵌套模块中),但我似乎总是导入重复项或根本没有导入任何函数。
答案 0 :(得分:0)
看起来它工作正常,令我困惑的是多次输出/导入相同功能的详细输出:
PS D:\DevRepository\ParentModule> Import-Module .\ParentModule.psd1 -Verbose VERBOSE: Loading module from path 'D:\DevRepository\ParentModule\ParentModule.psd1'. VERBOSE: Loading module from path 'D:\DevRepository\ParentModule\Modules1\Modules1.psd1'. VERBOSE: Loading module from path 'D:\DevRepository\ParentModule\Modules1\TestCase1.ps1'. VERBOSE: Dot-sourcing the script file 'D:\DevRepository\ParentModule\Modules1\TestCase1.ps1'. VERBOSE: Exporting function 'test-case1'. VERBOSE: Importing function 'test-case1'. VERBOSE: Exporting function 'test-case1'. VERBOSE: Importing function 'test-case1'.
然后检查模块ExportedFunctions属性:
PS D:\DevRepository\ParentModule> Get-Module ParentModule | select ExportedFunctions ExportedFunctions ----------------- {[test-case1, test-case1]}
实际上列出了键/值对:
PS D:\DevRepository\ParentModule> (Get-Module ParentModule).ExportedFunctions Key Value --- ----- test-case1 test-case1