无法将依赖于外部管理模块的 PowerShell 模块发布到本地存储库

无法将依赖于外部管理模块的 PowerShell 模块发布到本地存储库

我编写并编译了一个 PowerShell 模块,它本质上是 ActiveDirectory 模块的美化包装器。我的模块也有一个正确的模块清单文件。我还创建了一个托管在服务器上的 PSRepository,我希望在那里托管我的这个模块。

当我运行以下命令时:

Publish-Module -Name ADWrap -Repository MyRepo -Tags ActiveDirectory -Force -Verbose

我收到此错误:

Publish-PSArtifactUtility:PowerShellGet 无法解析存储库“MyRepo”上模块“ADWrap”的模块依赖项“ActiveDirectory”。验证依赖模块“ActiveDirectory”在存储库“MyRepo”中是否可用。如果此依赖模块“ActiveDirectory”由外部管理,请将其添加到模块清单 PSData 部分中的 ExternalModuleDependencies 条目中。
在 C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:1227 char:17
+ Publish-PSArtifactUtility -PSModuleInfo $moduleInfo `
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [Publish-PSArtifactUtility],InvalidOperationException
+ FullyQualifiedErrorId : UnableToResolveModuleDependency,Publish-PSArtifactUtility

关于 ExternalModuleDependencies 条目的信息并不多。我搜索了 Google,找到了这些网站,它们有点帮助这里

生成模块清单后,我执行以下操作来更新其属性:

Update-ModuleManifest -Path "\\Server\PowerShell Modules\ADWrap\Version 1.6.1\ADWrap\ADWrap.psd1" -ExternalModuleDependencies 'ActiveDirectory'

这给了我一个看似正确的方法来包含 ExternalModuleDepencies 代码,但我仍然收到错误。模块清单中的 PrivateData 代码如下所示:

# Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell.
PrivateData = @{

    PSData = @{

        # Tags applied to this module. These help with module discovery in online galleries.
        # Tags = @()

        # A URL to the license for this module.
        # LicenseUri = ''

        # A URL to the main website for this project.
        # ProjectUri = ''

        # A URL to an icon representing this module.
        # IconUri = ''

        # ReleaseNotes of this module
        # ReleaseNotes = ''

        # External dependent modules of this module
        ExternalModuleDependencies = 'ActiveDirectory'

    } # End of PSData hashtable

 } # End of PrivateData hashtable

我不确定我遗漏了什么,而且我在网上没有看到很多关于此类问题的信息,因此如能得到任何帮助我将不胜感激。

答案1

我发现了一些有趣的东西。PowerShell.org 上的这个答案表示 ExternalModuleDependencies 属性(我通过 Update-ModuleManifest cmdlet 生成)实际上生成不正确。

我手动打开了更新的模块清单并进行了以下更改:

    # External dependent modules of this module
    ExternalModuleDependencies = 'ActiveDirectory'

更改为:

    # External dependent modules of this module
    ExternalModuleDependencies = @('ActiveDirectory')

看起来依赖项需要采用数组格式。为什么它不像这样自动生成,我不明白。之后我就可以发布我的模块了!

相关内容