Часто задаваемые вопросы о коллекция PowerShell

Что такое модуль PowerShell?

Модуль PowerShell — это многоразовый пакет, содержащий некоторую функциональность PowerShell. Всё в PowerShell (функции, переменные, ресурсы DSC и т.д.) может быть упаковано в модули. Обычно модули — это папки, содержащие определённые типы файлов, хранящихся на определённом пути. Существует несколько типов модулей PowerShell.

Что такое скрипт PowerShell?

Скрипт PowerShell — это серия команд, которые хранятся в .ps1-файле для обеспечения повторного использования и обмена. Рабочие процессы PowerShell также являются скриптами PowerShell, которые определяют набор задач и обеспечивают их последовательность. Для получения дополнительной информации, пожалуйста, посетите раздел «Начало работы с PowerShell».

Чем скрипты PowerShell отличаются от PowerShell Modules?

Модули обычно лучше подходят для обмена, но мы включаем совместное использование скриптов, чтобы вам было проще вносить рабочие процессы и скрипты в сообщество. Для получения дополнительной информации смотрите следующие блоги:

Как я могу опубликовать в коллекция PowerShell?

Вы должны зарегистрировать аккаунт в коллекция PowerShell, прежде чем публиковать пакеты в Галерее. Это связано с тем, что для публикации пакетов требуется NuGetApiKey, который предоставляется при регистрации. Для регистрации используйте личный, рабочий или учебный аккаунт, чтобы войти в коллекция PowerShell. При первом входе требуется одноразовая регистрация. После этого ваш NuGetApiKey будет доступен на странице вашего профиля.

После регистрации в Галерее используйте cmdlets Publish-Module или Publish-Script , чтобы опубликовать свой пакет в Галерее. Для получения дополнительной информации о том, как запускать эти cmdlet, посетите вкладку Publish или ознакомьтесь с документацией Publish-Module и Publish-Script .

Вам не нужно регистрироваться или входить в Галерею для установки или сохранения пакетов.

Я получил сообщение «Не обработано запрос». когда я пытался опубликовать пакет в коллекция PowerShell. Что это обозначает?

Полное сообщение об ошибке: «Не удалось обработать запрос.» «Указанный API ключ недействителен или не имеет разрешения на доступ к указанному пакету.» Удалённый сервер выдал ошибку: (403) Запрещено.»

Эта ошибка может возникать по следующим причинам.

  • Указанный API ключ недействителен. Убедитесь, что вы указали действующий API из вашей учетной записи. Чтобы получить свой API-ключ, посмотрите страницу своего профиля.
  • Указанное название пакета не принадлежит вам. Если вы убедились, что ваш API ключ правильный, возможно, уже существует пакет с тем же именем, что и тот, который вы пытаетесь использовать. Возможно, посылка была удалена владельцем, в таком случае она не появится в результатах поиска. Чтобы определить, существует ли пакет с таким же именем, откройте браузер и перейдите на страницу деталей пакета: https://www.powershellgallery.com/packages/<packageName>. Например, если перейти напрямую, https://www.powershellgallery.com/packages/pester вы попадёте на страницу с деталями модуля Pester, независимо от того, нет ли он в списке. Если пакет с противоречивым именем уже существует и не включён в список, вы можете:
    • Выберите другое название для вашей посылки.
    • Свяжитесь с владельцами существующего пакета.

Почему я не могу войти с личного аккаунта, а вчера мог войти?

Обратите внимание, что ваш аккаунт галереи не поддерживает изменения вашего основного псевдонима. Для получения дополнительной информации смотрите Microsoft Email Aliases.

Почему я не вижу все пакеты галереи, когда выбираю все галочки категории на вкладке пакетов?

Выбирая галочку «Категория», вы получаете сообщение: «Я хотел бы видеть все посылки в этой категории». Будут отображаться только пакеты из выбранных категорий. Аналогично, выбирая все галочки категории, вы пишете: «Я хотел бы видеть все посылки в любой категории». Однако некоторые пакеты в галерее не относятся ни к одной из перечисленных категорий, поэтому они не появятся в результатах. Чтобы увидеть все пакеты в галерее, снимите галочку из всех категорий или снова выберите вкладку пакетов.

Каковы требования для публикации модуля в коллекция PowerShell?

В галерее можно публиковать любой модуль PowerShell (скрипт-модули, бинарные или манифесты-модули). Чтобы опубликовать модуль, PowerShellGet должен знать о нём несколько вещей — версию, описание, автора и способ лицензирования. Эта информация считывается как часть процесса публикации из файла манифеста модуля (.psd1) или из значения параметра LicenseUricmdlet Publish-Module. Все модули, опубликованные в Галерее, должны иметь манифесты модулей. Любой модуль, включающий следующую информацию в свой манифест, может быть опубликован в Галерее:

  • Версия
  • Описание
  • Author
  • URI к условиям лицензирования модуля, либо в разделе PrivateData манифеста, либо в параметре LicenseUricmdlet Publish-Module .

Как создать правильно отформатированный манифест модуля?

Самый простой способ создать манифест модуля — запустить cmdlet New-ModuleManifest . В PowerShell 5.0 или более поздней версии New-ModuleManifest генерирует правильно оформленный манифест модуля с пустыми полями для полезных метаданных, таких как ProjectUri, LicenseUri и Tags. Просто заполните пробелы или используйте сгенерированный манифест как пример правильного форматирования.

Чтобы убедиться, что все необходимые поля метаданных заполнены правильно, используйте cmdlet Test-ModuleManifest .

Для обновления полей файла манифеста модуля используйте cmdlet Update-ModuleManifest .

Каковы требования для публикации сценария в Галерее?

Любой скрипт PowerShell (скрипты или рабочие процессы) может быть опубликован в галерее. Чтобы опубликовать скрипт, PowerShellGet должен знать о нём несколько вещей — версию, описание, автора и способ лицензирования. Эта информация читается в процессе публикации из раздела PSScriptInfo файла скрипта или из значения параметра LicenseUri cmdlet Publish-Script. Все скрипты, опубликованные в галерее, должны содержать метаданные. Любой сценарий, содержащий следующую информацию в разделе PSScriptInfo, может быть опубликован в Галерее:

  • Версия
  • Описание
  • Author
  • URI к условиям лицензии скрипта, либо в разделе PSScriptInfo скрипта, либо в параметре LicenseUri cmdlet Publish-Script .

Как искать?

Введите в текстовое поле то, что ищете. Например, если вы хотите найти модули, связанные с Azure SQL, просто введите «azure sql». Наша поисковая система будет искать эти ключевые слова во всех опубликованных пакетах, включая заголовки, описания и метаданные. Затем, основываясь на взвешенном уровне качества, он показывает самые близкие совпадения. Вы также можете искать по конкретному полю с помощью синтаксиса поля:"value" в поисковом запросе по следующим полям:

  • Метки
  • Функции
  • Командлеты
  • DscResources
  • PowerShellVersion

Например, при поиске PowerShellVersion:"2.0" отображаются только результаты, совместимые с PowerShellVersion 2.0 (на основе их манифеста модуля/скриптов).

Как создать правильно отформатированный скрипт-файл?

Самый простой способ создать правильно отформатированный скрипт-файл — запустить cmdlet New-ScriptFileInfo . В PowerShell 5.0 New-ScriptFileInfo генерирует правильно отформатированный скрипт-файл с пустыми полями для полезных метаданных, таких как ProjectUri, LicenseUri и Tags. Просто заполните пробелы или используйте сгенерированный скрипт как пример правильного форматирования.

Чтобы убедиться, что все необходимые поля метаданных заполнены правильно, используйте cmdlet Test-ScriptFileInfo .

Для обновления полей метаданных скрипта используйте cmdlet Update-ScriptFileInfo .

Какие ещё типы модулей PowerShell существуют?

Термин PowerShell module также относится к файлам, реализующим реальную функциональность. Файлы скрипт-модулей (.psm1) содержат код PowerShell. Файлы бинарных модулей (.dll) содержат скомпилированный код.

Вот один из способов подумать об этом: папка, которая инкапсулирует модуль, — это папка модуля. Папка модуля может содержать манифест модуля (.psd1), описывающий содержимое папки. Файлы, которые действительно выполняют эту работу — это файлы скрипт-модулей (.psm1) и файлы бинарных модулей (.dll). Ресурсы DSC размещаются в определённой подпапке и реализуются в виде файлов скрипт-модулей или файлов двоичных модулей.

Все модули в Галерее содержат манифесты модулей, и большинство из них содержат файлы скрипт-модулей или файлы двоичных модулей. Термин «модуль» может быть запутанным из-за разных значений. Если явно не указано иное, все значения слова module на этой странице относятся к папке module, содержащей эти файлы.

Как PackageManagement связан с PowerShellGet? (Ответ на высоком уровне)

Управление пакетами — это распространённый интерфейс для работы с любым менеджером пакетов. В конечном итоге, независимо от того, имеете ли вы дело с модулями PowerShell, MSI, Ruby gems, пакетами NuGet или Perl-модулями, вы сможете использовать команды PackageManagement (Find-Package и Install-Package) для их поиска и установки. PackageManagement делает это, имея для каждого менеджера пакетов свой поставщик пакетов, который подключается к PackageManagement. Всю основную работу выполняют поставщики; Они забирают контент из репозиториев и устанавливают его локально. Часто поставщики пакетов просто обходят существующие инструменты менеджера пакетов для определённого типа пакета.

PowerShellGet — это менеджер пакетов для пакетов PowerShell. Существует провайдер пакета PSModule, который предоставляет функциональность PowerShellGet через PackageManagement. Благодаря этому вы можете либо запустить Install-Module, либо Install-Package -Provider PSModule установить модуль из коллекция PowerShell. Некоторые функции PowerShellGet, включая Update-Module и Publish-Module, недоступны через команды PackageManagement.

В итоге, PowerShellGet ориентирован исключительно на премиальный опыт управления пакетами для контента PowerShell. Управление пакетами направлено на представление всех опытов управления пакетами через один общий набор инструментов. Если вам этот ответ кажется неудовлетворительным, в конце этого документа, в разделе «Как управление пакетами на самом деле связано с PowerShellGet? », есть длинный ответ.

Для получения дополнительной информации, пожалуйста, посетите страницу проекта PackageManagement.

Как NuGet связан с PowerShellGet?

коллекция PowerShell — это модифицированная версия галереи NuGet. PowerShellGet использует провайдера NuGet для работы с репозиториями на базе NuGet, такими как коллекция PowerShell.

Вы можете использовать PowerShellGet против любого действующего репозитория или файлового ресурса NuGet. Вам просто нужно добавить репозиторий, запустив cmdlet Register-PSRepository .

Значит ли это, что я могу использовать NuGet.exe для работы с галереей?

Yes.

Как именно PackageManagement связан с PowerShellGet? (Технические детали)

В глубине души PowerShellGet активно использует инфраструктуру управления пакетами.

На уровне cmdlet PowerShell Install-Module — это на самом деле тонкая обёртка вокруг Install-Package -Provider PSModule.

На уровне поставщика пакетов PackageManagement поставщик пакетов PSModule фактически вызывает других поставщиков пакетов PackageManagement. Например, когда вы работаете с галереями на базе NuGet (например, коллекция PowerShell), поставщик пакета PSModule использует NuGet Package Provider для работы с репозиторием.

Схема архитектуры PowerShellGet

Рисунок 1: Архитектура PowerShellGet

Что требуется для запуска PowerShellGet?

В целом мы рекомендуем выбрать последнюю версию модуля PowerShellGet (обратите внимание, что для этого требуется .NET 4.5).

Модуль PowerShellGet требует версии PowerShell 3.0 или новее.

Поэтому для PowerShellGet требуется одна из следующих операционных систем:

  • Windows 10
  • Windows 8.1 Профессиональная
  • Windows 8.1 Корпоративная
  • Windows 7 с пакетом обновления 1 (SP1)
  • Windows Server 2016
  • Windows Server 2012 R2
  • Windows Server 2008 R2 с пакетом обновления 1 (SP1)

PowerShellGet также требует .NET Framework 4.5 или выше. Дополнительные сведения см. в разделе "Установка .NET Framework для разработчиков".

Можно ли зарезервировать названия для пакетов, которые будут опубликованы в будущем?

Нельзя присквотить имена пакетов. Если вы считаете, что существующая посылка взяла название, которое больше подходит именно вам, попробуйте связаться с владельцем посылки. Если ответа не было в течение пары недель, вы можете связаться со службой поддержки, и команда коллекция PowerShell разберётся.

Как заявить право собственности на посылки?

Подробности смотрите раздел Managing Package Owners на PowerShellGallery.com .

Как мне справиться с владельцем посылки, который нарушает мою лицензию на посылки?

Мы призываем сообщество PowerShell работать вместе для разрешения любых споров, которые могут возникнуть между владельцами пакетов и владельцами других пакетов. Мы разработали процесс разрешения споров , который просим вас соблюдать до вмешательства PowerShellGallery.com администраторов.