Управление модулями PowerShell в Windows

Модули PowerShell – это собранные в пакет наборы командлетов PowerShell для управления различными компонентами Windows, серверными ролями, облачными сервисами. Модули используются для управления инфраструктурой и автоматизации различных задач. В централизованном репозитории PowerShell Gallery доступны тысячи готовых модулей (как от Microsoft, так и от других вендоров и частных разработчиков), доступный для загрузки и установки на компьютеры. В этой статье мы рассмотрим базовые команды для управления PowerShell модулями в Windows, включая управление репозиториями PowerShell, установку, обновление и удаление PS модулей.

Управление репозиториями PowerShell в Windows

PowerShell модули хранятся и устанавливаются в специальных хранилищах-репозиторях. По умолчанию в Windows подключен официальный публичный репозиторий Microsoft, который называется PSGallery (PowerShell Gallery, https://www.powershellgallery.com/). Вывести список подключенных репозиториев в Windows:

Get-PSRepository

Администратор может подключить дополнительные репозитории (в том числе приватные), или даже подключить локальный репозиторий, который хранится в локальной директории или в сетевой папке в локальной сети (по UNC пути).

Например, добавить новый PowerShell репозиторий в сетевой папке:

Register-PSRepository -Name myLocalPackages -SourceLocation \msk-fs01PSRepo -InstallationPolicy Trusted

Удалить зарегистрированный репозиторий:

Unregister-PSRepository myLocalPackages

Модули в PowerShell репозиториях хранятся в формате NuGet пакетов (расширение файла .nupkg).

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

Untrusted repository You are installing the modules from an untrusted repository. If you trust this repository, change its InstallationPolicy value by running the Set-PSRepository cmdlet. Are you sure you want to install the modules from 'PSGallery'? 
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"):

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

Set-PSRepository -Name PSgallery -InstallationPolicy Trusted

Если вы случайно удалили дефолтный репозиторий PSGallery на компьютере, можно восстановить его командой:

Register-PSRepository -Default

Установка модулей PowerShell в Windows из репозитория

Для установки PowerShell модуля, нужно указать его имя. Команду установки модуля PowerShell можно сформировать на сайте PowerShell Gallery.

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

Find-Module *BIOS*

Скопируйте имя нужного модуля, и выполните команду установки:

Install-Module DellBIOSProvider

Указанный модуль будет закружен и установлен на компьютере.

Дополнительные опции установки:

  • -Repository – можно вручную указать репозиторий, из которого выполнить установку/поиск модуля
  • -RequiredVersion – позволяет указать нужную вам версию PowerShell модуля (по умолчанию устанавливается последняя доступная версия)
  • -Scope – позволяет установить модуль только для текущего пользователя ( CurrentUser ) или для всех пользователей компьютера ( AllUsers ).
  • -Force – принудительная установка PowerShell модуля с подавление любых запросов

Вывести список установленных на компьютере модулей сторонних PowerShell (по умолчанию устанавливаются в C:Program FilesWindowsPowerShellModules):

Get-InstalledModule

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

Get-InstalledModule| Select Name, Version, PublishedDate, InstalledDate , InstalledLocation

В Windows есть встроенные (предустановленные) модулей, включая модули администрирования Windows Server и ролей (в рамках пакетов инструментов управления RSAT). Встроенные системные модули находятся в папке: C:WINDOWSsystem32WindowsPowerShellv1.0Modules

Вывести полный список доступных таких модулей можно командой:

Get-Module -ListAvailable

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

Import-Module DellBIOSProvider

Можно вручную импортировать модули из произвольного каталога:

Import-Module "C:ModulesMyCustomModule"

PowerShell автоматически загружает (импортирует) модули в память из каталогов, указанных в $env:PSModulePath при первом использовании командлета из состава модуля.

Следующая команд выведет только модули, уже загруженные (импортированные) в сеанс. Проверить, что указанный модуль теперь загружен в память:

Get-Module

По умолчанию в клиентских Windows 10 и 11 использование сторонних модулей запрещено настройками политики выполнения скриптов PowerShell. Поэтому при попытке использовать новый модуль появится ошибка:

Import-Module : File C:Program FilesWindowsPowerShellModulesDellBIOSProvider2.9.1DellBIOSProvider.psm1 cannot be loaded because running scripts is disabled on this system

Чтобы разрешить запуск локальных PowerShell скриптов (включая модули), выполните:

Set-ExecutionPolicy RemoteSigned

Вывести список доступных в модуле команд PowerShell (командлетов):

Get-Command -Module DellBIOSProvider

Список каталогов, из которых можно импортировать модули содержимся в переменной окружения PSModulePath:

$env:PSModulePath -split ";"

По умолчанию это

  • Модуля для всех пользователей — $Env:ProgramFilesWindowsPowerShellModules
  • Модули текущего пользователя (не требует прав администратора для устновки)- $HOMEDocumentsWindowsPowerShellModules
  • Встроенные PowerShell модули — $PSHOMEModules

На компьютере может быть установлено несколько версий одного модуля. Список версий модуля можно вывести командой:

Get-Module pswindowsupdate -ListAvailable

Ручная (в том числе офлайн) установка модулей PowerShell

Для установки модулей из PSGallery, компьютер должен иметь доступ к онлайн репозиторию в Интернете. Если компьютер находится в изолированной сети, PowerShell модули можно скачать и установить вручную.

Вы можете либо сначала сохранить нужный PowerShell модуль из PSGallery в локальную папку на любом компьютере:

Save-Module –Name SqlServer –Path C:ps

И потом скопировать его в директорию C:Program FilesWindowsPowerShellModules на офлайн компьютере.

Либо можно скачать с сайта PSGallery пакет модуля в формате .nupkg (например, sqlserver.22.4.5.1.nupkg), скопировать его в локальную папку и создать локальный репозиторий:

Register-PSRepository -Name myLocalPackages -SourceLocation C:LocalRepo -InstallationPolicy Trusted

Теперь можно установить модуль из локальной папки:

Install-Module sqlserver -Repository myLocalPackages

Обновление модулей PowerShell

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

Update-Module -Name SqlServer

Чтобы обновить все установленные модули с подавление запросов на подтверждение, выполните:

Update-Module -Force

После обновления модуля, его нужно заново импортировать в сессию PowerShell. Для этого нужно либо закрыть и заново открыть консоль PS, либо принудительно импортировать модуль:

Import-Module -Name SmbShare -Force

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

Для удаления ненужного PowerShell модуля используется команда:

Uninstall-Module -Name PSWindowsUpdate

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

Remove-Module -Name PSWindowsUpdate

После этого можно удалить с опцией -Force:

Uninstall-Module -Name PSWindowsUpdate -Force

Популярные модули PowerShell для администраторов

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


Комментарии

Добавить комментарий

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