Pregunta No se puede publicar el módulo de PowerShell en el repositorio local dependiente de un módulo administrado externamente


He escrito y compilado un módulo de PowerShell que es esencialmente un envoltorio glorificado del módulo ActiveDirectory. Mi módulo también tiene un archivo de Manifiesto de Módulo adecuado. También creé un PSRepository alojado en un servidor y allí es donde me gustaría alojar este módulo mío.

Cuando ejecuto el siguiente comando:

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

Me sale este error:

Publish-PSArtifactUtility: PowerShellGet no puede resolver la dependencia del módulo 'ActiveDirectory' del módulo 'ADWrap' en el repositorio 'MyRepo'. Verificar que el   El módulo dependiente 'ActiveDirectory' está disponible en el repositorio 'MyRepo'. Si este módulo dependiente 'ActiveDirectory' se administra externamente, agréguelo al   Entrada ExternalModuleDependencies en la sección PSData del manifiesto del módulo.
  En C: \ Archivos de programa \ 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

No hay mucha información en la entrada ExternalModuleDependencies. Busqué a Google y encontré estos sitios que me ayudaron un poco aquí

Después de generar el Manifiesto del Módulo, hice lo siguiente para actualizar las propiedades del mismo:

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

Eso me dio lo que parece ser la forma correcta de incluir el código ExternalModuleDepencies, pero sigo recibiendo el error. El código de PrivateData es el manifiesto del módulo se ve así:

# 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

No estoy seguro de lo que me estoy perdiendo y no he visto mucho sobre este tipo de problema en línea, por lo que cualquier ayuda sería apreciada.


0


origen




Respuestas:


Bueno, encontré algo interesante. Esta respuesta en PowerShell.org indicó que la propiedad ExternalModuleDependencies (que he generado a través del cmdlet Update-ModuleManifest) en realidad se generó incorrectamente.

Abrí manualmente el manifiesto del módulo actualizado y lo cambié:

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

a esto:

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

Parece que la dependencia debe estar en un formato de matriz. Por qué no se genera automáticamente así, está más allá de mí. ¡Pude publicar mi módulo después de esto!


0