如何在 PowerShell 模块清单 (psd1) 中定义 RequiredModules?

Uli*_*Uli 5 powershell module manifest

我试图创建两个PowerShell模块之间的简单依赖,但我得到的语法或一些错误。

Module1.psd1

@{
    RootModule        = 'Module1.psm1'
    ModuleVersion     = '1.0'
    GUID              = '11111111-1111-1111-1111-111111111111'
    Author            = 'uw'
    FunctionsToExport = @()
    CmdletsToExport   = @()
    VariablesToExport = '*'
    AliasesToExport   = @()
}
Run Code Online (Sandbox Code Playgroud)

Module2.psd1

@{
    RootModule        = 'Module2.psm1'
    ModuleVersion     = '1.0'
    GUID              = '22222222-2222-2222-2222-222222222222'
    Author            = 'uw'
    FunctionsToExport = @()
    CmdletsToExport   = @()
    VariablesToExport = '*'
    AliasesToExport   = @()
    RequiredModules   = @(
                          @{
                            ModuleName = "Module1"; 
                            ModuleVersion = "1.0"; 
                            Guid = "11111111-1111-1111-1111-111111111111"
                           }
                         )
}
Run Code Online (Sandbox Code Playgroud)

模块清单的Module2定义Module2取决于Module1.

运行时Test-ModuleManifest Module2.psd1,我收到以下错误:

Test-ModuleManifest : The specified RequiredModules entry 'Module1' in the module manifest 'Module2.psd1' is invalid. 
Try again after updating this entry with valid values.
Run Code Online (Sandbox Code Playgroud)

Uli*_*Uli 5

问题原来是Test-ModuleManifest期望所有必需的模块都安装在本地系统上。

所以修复是安装Module1,然后验证Module2.

请参阅https://github.com/PowerShell/PowerShellGet/blob/90c5a3d4c8a2e698d38cfb5ef4b1c44d79180d66/Tests/PSGetPublishModule.Tests.ps1#L1470