Невозможно опубликовать немонолитный модуль скрипта в локальной галерее PowerShell с 7 или более функциями - PullRequest
3 голосов
/ 24 мая 2019

Проблема:
Я не могу успешно опубликовать немонолитный модуль сценариев в своей локальной галерее PowerShell при использовании PowerShell 5.1, и мой модуль содержит 7 или более функций. Публикуется нормально с 6 или менее функциями.

Пример: FunctionsToExport = 'Get-Test1', 'Get-Test2', 'Get-Test3', 'Get-Test4', 'Get-Test5', 'Get-Test6', 'Get-Test7'

Публикация всегда висит на «VERBOSE: выполняется операция« Модуль публикации »на цели…», но никогда не завершается.

Я не вижу никаких ошибок, поэтому я не уверен, почему он зависает.

Что работает:
Я могу успешно опубликовать мой немонолитный модуль сценариев в своей локальной галерее PowerShell, если он содержит 6 или менее функций.

Пример: FunctionsToExport = 'Get-Test1', 'Get-Test2', 'Get-Test3', 'Get-Test4', 'Get-Test5', 'Get-Test6'

Это прекрасно работает: VERBOSE: Успешно опубликованный модуль…

Если я просто добавлю еще одну функцию и обновлю манифест, я больше не смогу публиковать без повторного зависания в том же месте.

Я почти уверен, что пропустил шаг, но мне сложно понять, что я пропустил.

Я изучаю дизайн немонолитного скриптового модуля у Майка Роббинса , читая его сообщений в блоге и просматривая его презентаций . Суть этого дизайна заключается в том, что каждая функция находится в отдельном файле PS1, который получен из файла PSM1.

Краткое описание того, как я строю свои скриптовые модули:

  • Создайте новый каркас модуля скрипта, используя пользовательский шаблон гипса.
  • Добавление функций в папку с именем Public.
  • Обновление версии модуля и раздела FunctionsToExport в манифесте.
  • Используйте PsDeploy или Publish-Module для развертывания в локальной галерее PowerShell.
  • Локальная галерея PowerShell - это просто папка на моем диске с данными G: \ JnPowerShellGallery.

Вот так я и публикую свой модуль в своей местной PSGallery.

Publish-Module -Path 'G:\_temp\JnTestModule' -Repository JnPowerShellGallery -NuGetApiKey 'AnyStringWillDo' -Verbose -InformationAction Continue

Вот ссылка OneDrive на мой тестовый модуль.
https://1drv.ms/f/s!AlsrG1Yfr5pHgts0RCM--SmRnUf3AA

Вывод $ PSVersionTable

PSVersion                      5.1.17134.590                                                                                                                              
PSEdition                      Desktop                                                                                                                                    
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}                                                                                                                    
BuildVersion                   10.0.17134.590                                                                                                                             
CLRVersion                     4.0.30319.42000                                                                                                                            
WSManStackVersion              3.0                                                                                                                                        
PSRemotingProtocolVersion      2.3                                                                                                                                        
SerializationVersion           1.1.0.1   

Я так близок к созданию моего первого конвейера выпуска для моих модулей PowerShell, но я застрял на этом этапе.

Кто-нибудь знает, что может быть причиной этой проблемы?

1 Ответ

2 голосов
/ 28 мая 2019

Хорошо, я только что узнал, что могу успешно опубликовать свой модуль с помощью PowerShell Core 6.2.0!

Джоэл на http://slack.poshcode.org/ канал подсказки PowerShell предложил изменить кодировку файла .psd1 на UTF8с спецификацией.Он сказал, что PowerShell 5 не нравится файлы .psd1, у которых нет спецификации.Они кодируются с UTF8 по умолчанию в vscode.Я попытался изменить кодировку, но это не помогло решить мою проблему.

Благодаря его предложению я подумал о попытке опубликовать свой модуль с PowerShell Core 6.2.0, и это сработало!

Это не совсем решает проблему с PowerShell 5.1, но я не против перейти на PowerShell Core 6.2.0 для публикации своих модулей.Это решает мою проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...