Questão Impossível publicar o módulo do PowerShell para Repo local dependente de um módulo gerenciado externamente


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 meu.

Quando eu corro o seguinte comando:

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

Eu recebo este erro:

Publish-PSArtifactUtility: O PowerShellGet não pode resolver a dependência do módulo 'ActiveDirectory' do módulo 'ADWrap' no repositório 'MyRepo'. Verifique se o   O módulo dependente 'ActiveDirectory' está disponível no repositório 'MyRepo'. Se este módulo dependente 'ActiveDirectory' for gerenciado externamente, adicione-o ao   Entrada ExternalModuleDependencies na seção PSData do manifesto do módulo.
  Em C: \ Arquivos de Programas \ WindowsPowerShell \ Modules \ PowerShellGet \ 1.0.0.1 \ PSModule.psm1: 1227 char: 17
  + Publish-PSArtifactUtility -PSModuleInfo $ moduleInfo `
  + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~       + CategoryInfo: InvalidOperation: (:) [Publish-PSArtifactUtility], InvalidOperationException
      + FullyQualifiedErrorId: UnableToResolveModuleDependency, Publicar-PSArtifactUtility

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

Depois de 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 se parece com isto:

# 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

Eu não tenho certeza do que estou perdendo e eu não tenho visto muito sobre esse tipo de problema online, então qualquer ajuda seria apreciada.


0


origem




Respostas:


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

Eu abri manualmente o manifesto do módulo atualizado e mudei 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. Eu pude publicar meu módulo depois disso!


0