Pages Menu
Categories Menu

Опубликовано | Нет комментариев

Windows PowershellGet и NuGet

Традиционный способ установки модуля в Windows — найти его в Интернете, затем загрузить и установить. Но в Windows Server 2016 этот способ управления модулями на машине был полностью изменён. Теперь он поставляется с встроенным в Windows PowerShell модулем PowershellGet. PowershellGet поможет вам найти, скачать, установить и управлять модулями на машине.

PowershellGet работает с несколькими поставщиками. Эти поставщики - клиентские инструменты, которые подключаются к представленному источником репозиторию модуля, (локация - URL). Наиболее важный работающий с Windows Server 2016 поставщик PowershellGet - это NuGet. NuGet — менеджер пакетов для Windows. Он обеспечивает возможность работы не только с модулями, но и с приложениями или пакетами. NuGet может работать с несколькими источниками, но PSGallery — наиболее простые и привилегированные источники репозитория для PowershellGet.

Все функциональные возможности модуля управления включены в модуль PowershellGet. Первым делом, для управления модулями, необходимо импортировать модуль в консоль Windows PowerShell. Чтобы сделать это, запустите Integrated Scripting Environment (ISE) Windows PowerShell и для загрузки модуля PowershellGet выполните следующую команду:

PS C:\users\me>> import-module PowershellGet –Verbose

VERBOSE: Loading module from path PS C:\WINDOWS\system32> import-module PowerShellGet -Verbose
VERBOSE: Loading module from path 'C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PowerShellGet.psd1'.
VERBOSE: Loading 'FormatsToProcess' from path 'C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSGet.Format.ps1xml'.
VERBOSE: Loading module from path 'C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1'.
VERBOSE: Importing function 'Find-Command'.
VERBOSE: Importing function 'Find-DscResource'.
VERBOSE: Importing function 'Find-Module'.
VERBOSE: Importing function 'Find-RoleCapability'.
VERBOSE: Importing function 'Find-Script'.
VERBOSE: Importing function 'Get-InstalledModule'.
VERBOSE: Importing function 'Get-InstalledScript'.
VERBOSE: Importing function 'Get-PSRepository'.
VERBOSE: Importing function 'Install-Module'.
VERBOSE: Importing function 'Install-Script'.
VERBOSE: Importing function 'New-ScriptFileInfo'.
VERBOSE: Importing function 'Publish-Module'.
VERBOSE: Importing function 'Publish-Script'.
VERBOSE: Importing function 'Register-PSRepository'.
VERBOSE: Importing function 'Save-Module'.
VERBOSE: Importing function 'Save-Script'.
VERBOSE: Importing function 'Set-PSRepository'.
VERBOSE: Importing function 'Test-ScriptFileInfo'.
VERBOSE: Importing function 'Uninstall-Module'.
VERBOSE: Importing function 'Uninstall-Script'.
VERBOSE: Importing function 'Unregister-PSRepository'.
VERBOSE: Importing function 'Update-Module'.
VERBOSE: Importing function 'Update-ModuleManifest'.
VERBOSE: Importing function 'Update-Script'.
VERBOSE: Importing function 'Update-ScriptFileInfo'.
VERBOSE: Importing alias 'fimo'.
VERBOSE: Importing alias 'inmo'.
VERBOSE: Importing alias 'pumo'.
VERBOSE: Importing alias 'upmo'.

Использование переключателя Verbose с командлетом Import-Module отображает в консоли все импортированные функции, командлеты и алиасы. В этом модуле доступны восемь функций и две переменные четырёх алиасов.

При первом использовании командлета PowershellGet, он проверяет установку на машине NuGet. Если NuGet не установлен, появится диалоговое окно подтверждения со следующим содержанием:

Для взаимодействия с NuGet-базированными галереями, PowershellGet необходим NuGet_anycpu.exe. NuGet_anycpu.exe доступен в 'C:\ProgramData\OneGet\ProviderAssemblies' или 'C:\Users\<username>\AppData\Local\OneGet\ProviderAssemblies'.

Дополнительные сведения о NuGet, на http://www.nuget.org. Вы хотите, чтобы PowershellGet сейчас загрузил NuGet_anycpu.exe?

При нажатии кнопки Да на машине загружается и устанавливается NuGet.

Предоставляемые PowershellGet командлеты делятся на две большие категории: модули и командлеты репозитория. PowershellGet предоставляет командлеты для поиска, установки, публикации и обновления модулей из хранилища. А также он обеспечивает командлеты для чтения текущих настроек репозитория, обновления, регистрации и отмены их регистрации.

По умолчанию доступны два репозитория: PSGallery и MSPSGallery. PowershellGet для подключения к этим хранилищам использует NuGet. Запуск Get-PSRepository отображает все существующие на машине репозитории.

Get-PSRepository

Запуск командлета Get-PSRepository с именем репозитория отображает конфигурацию этого репозитория.

Get-PSRepository_name

На выходе, SourceLocation указывает URL-адрес репозитория, PackageManagementProvider идентифицирует, используемый для подключения к хранилищу пакет поставщика (в данном случае NuGet), Trusted указывает, является ли это хранилище надёжным, а PublishLocation показывает используемый для предоставления модулей URL-адрес.

Запуск командлета Set-PSRepository устанавливает значения конфигурации репозитория. Например, следующий командлет Set-PSRepository изменяет значение конфигурации для репозитория PSGallery с Untrusted на Trusted. После изменения значения, выполнив командлет Get-PSRepository, можно просмотреть новую конфигурацию.

PS C:\Users\me> Set-PSRepository -Name "PSGallery" -InstallationPolicy Trusted

PS C:\Users\me> Get-PSRepository

Set-PSRepository

Командлет Register-PSRepository используется для добавления и регистрации нового репозитория. Для правильной работы с репозиторием командлету требуется имя репозитория, для загрузки модулей его исходное местоположение, для публикации новых модулей в репозитории местоположение публикации, политика установки и диспетчер пакетов. Выполнение этого командлета с Chocolatey в качестве имени, http://chocolatey.org/api/v2/ как место источника и публикации, Trusted как значение политики установки, и NuGet в качестве диспетчера пакетов - добавляет на машину название нового модуля репозитория следующим образом:

Register-PSRepository

После регистрации, командлет Find-Module может искать репозитории, а командлет Install-Module загружать и устанавливать модули. Chocolatey здесь приводится только в качестве примера. Это может быть любой репозиторий, хостинг модулей Windows PowerShell.

Запуск Unregister-PSRepository с параметром Name удаляет ранее зарегистрированный репозиторий.

PS C:\Users\me> Unregister-PSRepository -Name Chocolatey

Наиболее важной функцией модуля PowershellGet является поиск и установка модулей. Запуск командлета Find-Module без каких-либо параметров выводит все, доступные в рамках всех хранилищ, модули как показано здесь:

Find-Module

Запуск командлета Find-Module с параметром Name выводит связанные с этим именем модули.
Выполнение этого командлета с Bing в качестве значения параметра Name содержит сведения о Bing, как показано здесь:

Find-Module_bing

Примечание. Параметр Name также принимает подстановочные знаки.

Командлет Find-Module принимает дополнительные параметры MinimumVersion и RequiredVersion. В то же время нельзя использовать их оба. Чтобы загрузить определённую версию, используйте параметр RequiredVersion. Чтобы загрузить самую последнюю версию, более новую или равную MinimumVersion, укажите MinimumVersion. Запуск командлета Find-Module с Bing в качестве значения для параметра Name и 4.0 в качестве значения для параметра MinimumVersion - находит модуль Bing 5.0.

MinimumVersion

Запуск командлета Find-Module с Bing в качестве значения для параметра Name и 4.0 как значение для параметра RequiredVersion - приводит к ошибке:

RequiredVersion

Однако при запуске командлета Find-Module с Bing в качестве значения параметра Name и 5.0 в качестве значения параметра RequiredVersion выводит полную информация о модуле Bing:

RequiredVersion_name

После нахождения соответствующих модулей, следующий шаг - установка модуля.

Специально для этой цели, PowershellGet предоставляет командлет Install-Module. Этот командлет очень похож на Find-Module. Он также, в качестве параметров принимает Name, RequiredVersion и MinimumVersion.

Следующий блок кода демонстрирует запуск Install-Module с параметром Name и переключателем Verbose. Вместе с параметром Name можно использовать MinimumVersion или RequiredVersion.

Обратите внимание, что последняя строка вывода данных свидетельствует о том, что модуль установлен. Кроме того, обратите внимание, что модули по умолчанию загружаются в папку: ProgramFiles\WindowsPowershell\Modules. Windows PowerShell использует эту папку для установки модулей.

Verbose

Verbose-1

На данный момент можно использовать модуль Bing, импортировав его в текущую рабочую среду Windows PowerShell с помощью командлета Import-Module. После первоначальной установки и запуска Update-Module, обновляются существующие модули.

Этот модуль принимает параметры Name и RequiredVersion, но не принимает параметр MinimumVersion, как показано здесь:

PS C:\Users\me> Update-Module -Name Bing
PS C:\Users\me> Update-Module -Name "Bing" -RequiredVersion "5.0"

Для добавления в репозитории новых модулей также существует командлет Publish-Module.

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.

↓