Начало работы с PowerShell Gallery

PowerShell Gallery – это конечная точка для всех ваших потребностей в PowerShell, будь то вы новичок или опытный пользователь. И хорошая новость в том, что здесь есть обширная коллекция документации, скриптов, модулей и других ресурсов, созданных сообществом PowerShell.

В этом руководстве вы узнаете, как находить, загружать и устанавливать ресурсы из PowerShell Gallery.

Следите за обновлениями и повышайте свою мастерство в написании сценариев уже сегодня!

Предварительные требования

Этот учебник будет практическим демонстрационным материалом. Чтобы идти в ногу, убедитесь, что у вас есть система с установленным PowerShell 5.1 или более поздней версией. В этом учебнике используется Windows 10 с установленным PowerShell 5.3, но также должны работать и другие версии Windows и PowerShell.

Установка .NET Framework

Прежде чем погружаться в PowerShell Gallery, вам сначала нужен способ взаимодействия с ним, и основной способ – это .NET Framework.

Сначала вам нужно установить .NET Framework, который критичен для модуля PowerShellGet. Модуль PowerShellGet требует как минимум .NET Framework версии 4.5+. Модуль PowerShellGet позволяет вам находить, устанавливать, обновлять и публиковать артефакты PowerShell.

Но в этом учебнике вы установите .NET Framework версии 4.8.

? Обратите внимание, что .NET Framework v4.8 может уже быть установлен на вашей системе. Если это так, вы можете пропустить этот шаг. Но если у вас установлена более старая версия .NET Framework, удалите ее и обновите до более новой версии.

Чтобы установить .NET Framework, выполните следующие шаги:

1. Откройте ваш любимый веб-браузер и перейдите на официальную страницу загрузки .NET Framework.

2. Затем нажмите ссылку Загрузить .NET Framework 4.8 Developer Pack, чтобы загрузить файл, аналогичный ndp48-devpack-enu. Этот файл является установочным пакетом для NET Framework версии 4.8.

Downloading .NET Framework 4.8

3. Дождитесь завершения загрузки и дважды щелкните загруженный файл, чтобы запустить установщик .NET Framework.

Launching the .NET Framework installer

? Если у вас возникли проблемы с установкой .NET Framework, попробуйте запустить файл установки в режиме [совместимости]

4. Установите флажок внизу, чтобы принять условия лицензии, и нажмите кнопку Установить, чтобы установить .NET Framework 4.8.

Accepting the license terms and conditions

Ниже вы можете увидеть ход установки, который может занять несколько минут, в зависимости от конфигурации вашей системы.

Viewing the installation progress

5. Теперь нажмите кнопку Закрыть, чтобы закрыть установщик после завершения установки.

Finishing the .NET Framework installation

6. Наконец, откройте PowerShell от имени администратора и выполните следующую [Start-Process] команду для открытия приложения Добавление или удаление программ (appwiz.cpl). Это приложение позволяет просматривать список установленных программ на вашей системе.

Start-Process "appwiz.cpl”

Вы увидите записи для .NET Framework 4.8 в списке установленных программ, как показано ниже.

Verifying the .NET Framework 4.8 installation

Установка модуля PowerShellGet

После установки и запуска .NET Framework вы можете установить основной компонент галереи PowerShell, модуль PowerShellGet.

Версия PowerShellGet (1.0.0.1), поставляемая вместе с Windows PowerShell 5.1, имеет ограниченные возможности. Если вы используете Windows PowerShell 5.1 или более старую версию, рассмотрите возможность использования обновленных функций PowerShell Gallery. На данный момент последняя версия 3.0.17-beta17.

Для установки модуля PowerShellGet выполните следующие действия:

1. Запустите следующую команду. Она не выводит результат, но активирует протокол безопасности транспортного уровня (TLS) 1.2 в вашей сессии PowerShell. TLS – это протокол безопасности, который шифрует данные, передаваемые по Интернету.

Активация TLS 1.2 крайне важна, поскольку по умолчанию PowerShell не настроен на использование TLS 1.2. Эта команда устанавливает SecurityProtocol для объекта System.Net.ServicePointManager на TLS 1.2 (Tls12). Таким образом, вы получаете доступ к PowerShell Gallery с использованием TLS 1.2 или выше.

[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12

? Обратите внимание, что эти изменения применяются только к текущей сессии PowerShell. Однако вы можете настроить PowerShell всегда использовать TLS 1.2, добавив указанную выше команду в свой профиль PowerShell.

Далее выполните команду Install-PackageProvider, приведенную ниже, чтобы установить поставщик пакетов NuGet. Поставщик пакетов NuGet позволяет устанавливать и управлять пакетами из репозитория пакетов NuGet. Этот репозиторий является центральным хранилищем пакетов с открытым исходным кодом для платформы .NET.

Поставщик пакетов NuGet необходим перед использованием командлета [Install-Module] для установки модулей из PowerShell Gallery. Почему? Многие модули в PowerShell Gallery распространяются в виде пакетов NuGet.

Install-PackageProvider -Name NuGet -Force
Installing the NuGet package provider

После установки вы теперь можете воспользоваться API NuGet. API NuGet позволяет получать доступ к репозиторию пакетов NuGet для создания инструментов и приложений, взаимодействующих с репозиторием пакетов NuGet. Как взаимодействовать? Выполняйте различные задачи, такие как поиск, установка и обновление пакетов.

Обычно существует две версии API NuGet, которые вы можете использовать в зависимости от ваших требований и возможностей вашего клиента и сервера.

Version Description Usage
v2 Uses XML as the data format for communication between the client and server.

This version is based on the original NuGet API introduced in 2011 and is the legacy version of the API.

The v2 API is recommended if you use an older version of NuGet or a client or server that does not support the v3 API.

This version is supported by all versions of NuGet and is compatible with older clients and servers.

v3 Uses JSON as the data format for communication between the client and server. This version was introduced in 2013 as an improvement over the v2 API and included many new features and improvements.

Many new features included are support for side-by-side package installation, improved search capabilities, and large package support.

The v3 API is recommended if you use a newer NuGet version. The v3 API is faster and more efficient than the v2 API.

This version is not supported by older versions of NuGet and may not be compatible with older clients and servers.

? В общем случае рекомендуется использовать NuGet API v3, поскольку он предоставляет самые актуальные функции и возможности.

3. Запустите нижеприведенную команду Set-PSRepository, которая не выводит информацию, но устанавливает ваш репозиторий PowerShell Gallery (PSGallery) в качестве доверенного источника пакетов. Это позволяет устанавливать модули из PowerShell Gallery.

Set-PSRepository -Name PSGallery -InstallationPolicy Trusted -ErrorAction Stop

4. Теперь выполните команду Install-Module ниже, чтобы установить последнюю версию (-AllowPrerelease) модуля PowerShellGet.

Install-Module -Name PowerShellGet -AllowPrerelease -Force
Installing the latest version of PowerShellGet

5. Наконец, выполните команду Get-InstalledModule ниже, чтобы убедиться, что модуль PowerShellGet был успешно установлен.

Get-InstalledModule PowerShellGet

Вы увидите, что модуль PowerShellGet перечислен, как показано ниже, с репозиторием PSGallery, если установка прошла успешно.

Verifying the PowerShellGet module installation

Обнаружение модулей из PowerShell Gallery

Теперь, когда у вас установлен модуль PowerShellGet, вы можете искать и устанавливать модули из PowerShell Gallery. Это позволяет расширить возможности вашей среды PowerShell и более эффективно автоматизировать сложные задачи.

Для поиска модуля в галерее PowerShell вы можете использовать командлет Find-Module. Этот командлет ищет в галерее PowerShell модули, соответствующие указанным критериям поиска, таким как имя модуля, версия или тег.

1. Выполните команду Find-Module ниже, чтобы найти модули в галерее PowerShell с именем, соответствующим AzureRM.

Find-Module -Name AzureRM

Вывод ниже указывает только на один модуль, соответствующий имени AzureRM в галерее PowerShell. Вы также можете увидеть основную информацию о каждом модуле, такую как его имя, версия, репозиторий и т. д.

Discovering modules from the PowerShell Gallery

2. Затем выполните одну из следующих команд для поиска модулей с использованием -Tag с ключевым словом Azure. Параметр -Tag нечувствителен к регистру, поэтому вы можете использовать azure или Azure как ключевое слово тега.

Зачем использовать теги для модуля? Тег – это ключевое слово или метка, связанная с модулем, описывающая его содержание и функциональность в галерее PowerShell.

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

Find-Module -Tag 'Azure'
Find-Module -Tag 'azure'

PowerShell Gallery – это обширный репозиторий ресурсов, в котором участвуют множество авторов. Здесь вы найдете множество модулей, связанных с популярными ключевыми словами, такими как Azure.

В результате, вы увидите длинный список модулей, соответствующих вашему ключевому слову или тегу, как на следующих скриншотах.

Searching for modules in the PowerShell Gallery using a tag

? Вы также можете использовать теги для группировки связанных модулей и быстрого поиска связанных ресурсов. Например, используйте тег Virtualization, чтобы сгруппировать модули, связанные с виртуализационными технологиями, такими как Hyper-V или VMware.

3. Теперь выполните следующую команду, чтобы сузить поиск и найти конкретный модуль, объединив параметры в командлете Find-Module.

Нижеприведенная команда находит модуль из PowerShell Gallery, учитывая следующие параметры:

  • -Name – Поиск модулей с определенным именем Az.Compute.

  • -Tag – Поиск модулей с тегами Azure и Microsoft.
Find-Module -Name 'Az.Compute' -Tag 'Azure', 'Microsoft’
Filtering module search results

Установка и обновление модулей

Как только вы нашли интересующий вас модуль, установка этого модуля находится всего в нескольких нажатиях клавиш. Вы можете использовать командлет Install-Module для загрузки модулей из PowerShell Gallery и установки их на вашей локальной системе.

1. Выполните следующую команду, чтобы загрузить и установить модуль Az.Compute из PowerShell Gallery.

Если команда выполнена успешно, она не выдаст вывода, но вы проверите установку на следующем шаге.

Install-Module -Name 'Az.Compute'

2. Затем выполните следующую команду Get-InstalledModule, чтобы проверить наличие модуля Az.Compute в вашей системе.

Get-InstalledModule -Name 'Az.Compute'
Verifying a module installation

? В качестве альтернативы, выполните командлет Get-InstalledModule без параметров, чтобы отобразить список всех установленных модулей в вашей системе. Но будьте осторожны, прокручивая список, если установлено слишком много модулей, это может неприятно сказаться на глазах.

Listing all installed modules

3. Теперь выполните следующую команду Update-Module, которая не выводит результат, но ищет последнюю версию определенного модуля (т.е. Az.Compute) и обновляет его.

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

Update-Module -Name Az.Compute

Удаление модулей PowerShell

Иногда вам может потребоваться удалить модуль из вашей системы. Например, если вам больше не нужен модуль или он вызывает проблемы.

Для удаления модуля из вашей системы вы можете использовать командлет Uninstall-Module. Этот командлет удаляет модуль и все его файлы из вашей системы, фактически деинсталлируя его.

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

Выполните следующую команду Uninstall-Module, чтобы удалить конкретный модуль (Az.Compute) с вашей системы. Если деинсталляция прошла успешно, эта команда не выведет никаких результатов.

Uninstall-Module -Name Az.Compute

? Если другие программы или скрипты используют данный модуль в настоящее время, команда Uninstall-Module выдаст ошибку, и деинсталляция не будет выполнена.

Заключение

Модули PowerShell – это мощные инструменты, которые позволяют добавлять функциональность в ваше средство PowerShell быстро. В этом руководстве, совместно с PowerShell Gallery, вы можете открывать и устанавливать модули всего несколькими командами.

Воспользуйтесь преимуществами PowerShell Gallery и найдите модули PowerShell, чтобы настраивать и усовершенствовать свои сценарии и рабочие процессы в PowerShell уже сегодня!

Source:
https://adamtheautomator.com/powershell-gallery/