Я написал и скомпилировал модуль PowerShell, который по сути является прославленной оболочкой модуля ActiveDirectory. Мой модуль также имеет правильный файл Манифеста модуля. Я также создал PSRepository, который размещен на сервере, и именно здесь я хотел бы разместить свой модуль.

Когда я запускаю следующую команду:

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

Я получаю эту ошибку:

Publish-PSArtifactUtility: PowerShellGet не может разрешить зависимость модуля «ActiveDirectory» от модуля «ADWrap» от репозитория «MyRepo». Убедитесь, что зависимый модуль «ActiveDirectory» доступен в хранилище «MyRepo». Если этот зависимый модуль ActiveDirectory управляется извне, добавьте его в запись ExternalModuleDependencies в разделе PSData манифеста модуля.
В 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 ответ1

0

Ну, я нашел что-то интересное. Этот ответ на PowerShell.org показал, что свойство ExternalModuleDependencies (которое я сгенерировал с помощью командлета Update-ModuleManifest) действительно было сгенерировано неправильно.

Я вручную открыл обновленный манифест модуля и изменил это:

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

к этому:

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

Похоже, что зависимость должна быть в формате массива. Почему это не просто генерируется автоматически, как это вне меня. После этого я смог опубликовать свой модуль!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .