Модули 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-fs01\PSRepo -InstallationPolicy Trusted
Удалить зарегистрированный репозиторий:
Unregister-PSRepository myLocalPackages
По умолчанию репозиторий 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 Files\WindowsPowerShell\Modules):
Get-InstalledModule
Команда возвращает версии модулей, описание и репозитории из которого они получены. Можно вывести дополнительную информацию о модулях, например дату установи, дату публикации, каталог установки и т.д.
Get-InstalledModule| Select Name, Version, PublishedDate, InstalledDate , InstalledLocation

Вывести полный список доступных таких модулей можно командой:
Get-Module -ListAvailable
Чтобы использовать модуль, его нужно импортировать в текущий сеанс PowerShell. Для этого используется командлет
Import-Module DellBIOSProvider
Можно вручную импортировать модули из произвольного каталога:
Import-Module "C:\Modules\MyCustomModule"
$env:PSModulePath
при первом использовании командлета из состава модуля.Следующая команд выведет только модули, уже загруженные (импортированные) в сеанс. Проверить, что указанный модуль теперь загружен в память:
Get-Module

Import-Module : File C:\Program Files\WindowsPowerShell\Modules\DellBIOSProvider\2.9.1\DellBIOSProvider.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:ProgramFiles\WindowsPowerShell\Modules - Модули текущего пользователя (не требует прав администратора для устновки)-
$HOME\Documents\WindowsPowerShell\Modules - Встроенные PowerShell модули —
$PSHOME\Modules

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

Ручная (в том числе офлайн) установка модулей PowerShell
Для установки модулей из PSGallery, компьютер должен иметь доступ к онлайн репозиторию в Интернете. Если компьютер находится в изолированной сети, PowerShell модули можно скачать и установить вручную.
Вы можете либо сначала сохранить нужный PowerShell модуль из PSGallery в локальную папку на любом компьютере:
Save-Module –Name SqlServer –Path C:\ps\
И потом скопировать его в директорию
C:\Program Files\WindowsPowerShell\Modules
на офлайн компьютере.
Либо можно скачать с сайта 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 модулей, которые часто используются администраторами для управления инфраструктурой и автоматизацией
- NetSecurity – встроенный модуль для управления брандмауэром Windows
- ScheduledTasks – встроенный модуль для управления заданиями планировщика
- RSAT-AD-PowerShell – модуль для взаимодействия с инфраструктурой Active Directory
- PSWindowsUpdate – модуль для управления обновлениями Windows из командной строки PowerShell
- CredentialManager – модуль для программного доступа к диспетчеру учетных данных Windows
- SqlServer – PowerShell модуль для взаимодействия с СУБД MS SQL Server
- SimplySql – универсальный модуль для взаимодействия со всеми популярными SQL базами данных (включая MySql, MariaDB, PostgreSql, Oracle, SQL Server, SQLite).
- VMware.PowerCLI – модуль для администрирования инфраструктурой VMware
- Модуль клиента пакетного менеджера WinGet для Windows

