PowerShell — это не просто оболочка командной строки, а мощный инструмент автоматизации. Одним из ключевых преимуществ является возможность расширять функциональность с помощью собственных модулей. Такие модули можно хранить локально, делиться ими внутри команды или публиковать в официальной PowerShell Gallery (PSGallery), чтобы сделать их доступными всему сообществу. В этой статье разберёмся, как создать простой модуль, структурировать его, протестировать и затем опубликовать.
Что такое модуль PowerShell
Модуль — это набор функций, скриптов и других ресурсов, объединённых в одну структуру. Он позволяет:
– Упрощать повторное использование кода.
– Делать функции доступными в любом проекте.
– Делегировать настройку и распространение инструментов через PSGallery.
Создание структуры модуля
Для начала создадим папку для будущего модуля. Название папки должно совпадать с названием модуля.
New-Item -ItemType Directory -Path "C:\Modules\MyModule"
Внутри неё создадим файл MyModule.psm1, где будут храниться функции, и файл MyModule.psd1 — манифест модуля.
– MyModule.psm1 содержит код PowerShell-функций.
– MyModule.psd1 — декларативный файл с метаданными: версия, автор, описание, поддерживаемые платформы.
Пример простой функции
В файл MyModule.psm1 добавим базовую функцию:
function Get-HelloWorld {
param([string]$Name = "World")
"Hello, $Name!"
}
Теперь подключим модуль локально:
Import-Module "C:\Modules\MyModule\MyModule.psm1"
Get-HelloWorld -Name "PowerShell"
Создание манифеста модуля
Манифест упрощает распространение модуля. Его можно создать автоматически:
New-ModuleManifest -Path "C:\Modules\MyModule\MyModule.psd1" -RootModule "MyModule.psm1" -Author "ВашеИмя" -Description "Пример PowerShell модуля"
Файл .psd1 можно отредактировать вручную, добавив информацию о версии и зависимостях.
Публикация в PSGallery
1. Установите модуль PowerShellGet, если он ещё не установлен.
2. Зарегистрируйтесь на сайте PowerShell Gallery и получите API-ключ.
3. Выполните команду публикации:
Publish-Module -Path "C:\Modules\MyModule" -NuGetApiKey "ВАШ_API_КЛЮЧ"
После этого модуль появится в PSGallery и его смогут скачать другие пользователи:
Install-Module -Name MyModule
Рекомендации по разработке модулей
– Добавляйте документацию для функций с помощью комментариев `<# .SYNOPSIS #>`.
– Поддерживайте семантическое версионирование (например, 1.0.0, 1.1.0).
– Тестируйте модуль с помощью Pester для проверки корректности кода.
– Используйте GitHub или Azure DevOps для хранения исходников и CI/CD публикации.
Создание и публикация модулей PowerShell — это способ делиться опытом, автоматизировать задачи и ускорять работу команд. Начиная с простых функций, вы можете выстроить полноценную экосистему своих инструментов. А публикация в PSGallery делает ваш вклад доступным тысячам пользователей по всему миру.