Модули PowerShell: Руководство для начинающих по расширению функциональности

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

В этой статье вы узнаете, что такое модули PowerShell, как их найти и как использовать их для ускорения ваших задач по автоматизации. От управления виртуальными машинами до подключения к облачным сервисам или автоматизации Active Directory — модули делают это возможным.

Читать дальше, чтобы раскрыть полный потенциал PowerShell и точно справляться с вашими задачами!

Обнаружение доступных модулей PowerShell

Модули PowerShell — это основные строительные блоки, которые расширяют его функциональность. Но не все модули автоматически загружаются в вашу сессию — они часто остаются на вашей системе, ожидая своего обнаружения.

Чтобы исследовать модули, установленные на вашей системе, используйте команду Get-Module:

Get-Module

Вы можете заметить короткий список модулей. Это происходит потому, что Get-Module показывает только модули, которые уже импортированы в вашу сессию.

Чтобы увидеть все доступные модули на вашей системе, включая те, которые ещё не загружены, добавьте параметр -ListAvailable:

Get-Module -ListAvailable

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

Модули могут быть различных типов — скриптовые, бинарные или манифестные.

Чтобы сгруппировать модули по типу для более удобной проверки, попробуйте следующее:

gmo -ListAvailable | group ModuleType

Здесь вы используете псевдонимы для удобства.

Например, gmo является сокращением для Get-Module, а group — это псевдоним для Group-Object. Псевдонимы экономят время при выполнении команд в консоли.

Выявление версий модулей и деталей команд

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

Модули также содержат команды, доступные через свойство ExportedCommands.

Чтобы увидеть команды в модуле Microsoft.PowerShell.Management, выполните:

gmo Microsoft.PowerShell.Management | Select-ExpandProperty ExportedCommands

Эта команда отображает список команд, доступных в модуле.

Поиск директорий модулей

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

Чтобы показать расположение доступных модулей PowerShell:

gmo -list

Общие места включают:

  • C:\Program Files\PowerShell\7\Modules
  • C:\Program Files\WindowsPowerShell\Modules
  • C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules

Даже при запуске PowerShell Core модули из директорий Windows PowerShell могут по-прежнему появляться, так как PowerShell Core может их использовать.

У модулей есть специальные категории по свойству PSEdition, которое указывает на совместимость:

  • Core — создан для PowerShell Core.
  • Стол – Разработан для Windows PowerShell.
  • Оба – Совместим с обеими редакциями.

Управление переменной PSModulePath

PowerShell не ищет модули по всей системе автоматически — он полагается на конкретные пути, определенные переменной окружения PSModulePath. Если модуль не находится в одном из этих путей, PowerShell не сможет его найти, даже если вы установили его в другом месте.

Чтобы просмотреть переменную окружения PSModulePath:

$env:PSModulePath

Переменная содержит список директорий, разделенный точками с запятой.

Для удобства чтения разделите его на массив:

$env:PSModulePath -split ';'

PowerShell ищет модули в:

  • Каталогах уровня пользователя (например, в папке Документы вашего профиля пользователя).
  • Общие каталоги в Program Files.
  • Каталогах системного уровня, таких как C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules.

Вы также можете добавить пользовательские каталоги в путь поиска:

$env:PSModulePath + ';C:\MyNewModulePath'
$env:PSModulePath

Это изменение применяется к текущей сессии, направляя PowerShell искать модули в указанном пути.

Заключение

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

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

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

Source:
https://adamtheautomator.com/powershell-modules-guide/