Não é possível publicar o módulo do PowerShell para Repo local dependente de um módulo gerenciado externamente

0

Eu escrevi e compilei um módulo do PowerShell que é essencialmente um wrapper glorificado do módulo ActiveDirectory. Meu módulo também possui um arquivo de Manifesto do Módulo adequado. Eu também criei um PSRepository que está hospedado em um servidor e é onde eu gostaria de hospedar este módulo.

Quando eu executo o seguinte comando:

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

Eu recebo este erro:

Publish-PSArtifactUtility : PowerShellGet cannot resolve the module dependency 'ActiveDirectory' of the module 'ADWrap' on the repository 'MyRepo'. Verify that the dependent module 'ActiveDirectory' is available in the repository 'MyRepo'. If this dependent module 'ActiveDirectory' is managed externally, add it to the ExternalModuleDependencies entry in the PSData section of the module manifest.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet.0.0.1\PSModule.psm1:1227 char:17
+ Publish-PSArtifactUtility -PSModuleInfo $moduleInfo '
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [Publish-PSArtifactUtility], InvalidOperationException
+ FullyQualifiedErrorId : UnableToResolveModuleDependency,Publish-PSArtifactUtility

Não há muita informação sobre a entrada ExternalModuleDependencies. Procurei o Google e encontrei esses sites que ajudaram um pouco aqui

Após gerar o Manifesto do Módulo, fiz o seguinte para atualizar as propriedades dele:

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

Isso me deu o que parece ser a maneira correta de incluir o código ExternalModuleDepencies, mas ainda recebo o erro. O código PrivateData é o manifesto do módulo com esta aparência:

# 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

Não tenho certeza do que está perdendo e não vi muito sobre esse tipo de problema on-line, portanto, qualquer ajuda seria bem-vinda.

    
por cyborgcommando0 26.07.2018 / 00:55

1 resposta

0

Bem, eu encontrei algo interessante. Essa resposta no PowerShell.org indicou que a propriedade ExternalModuleDependencies (gerada pelo cmdlet Update-ModuleManifest) era realmente gerado incorretamente.

Eu abri manualmente o manifesto do módulo atualizado e alterei isso:

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

para isso:

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

Parece que a dependência precisa estar em um formato de matriz. Por que isso não apenas gera automaticamente como está além de mim. Consegui publicar meu módulo depois disso!

    
por 26.07.2018 / 01:00