Управление модулями 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

Get-PSRepository - список подключенных репозиториев

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

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

Register-PSRepository -Name myLocalPackages -SourceLocation \\msk-fs01\PSRepo -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"):

ошибка Untrusted repository в Windows

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

Set-PSRepository -Name PSgallery -InstallationPolicy Trusted

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

Register-PSRepository -Default

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

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

Поиск модуля на сайте PowerShell Gallery

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

Find-Module *BIOS*

Find-Module - поиск по имени модуля

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

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-InstalledModule - список установленных сторонних модулей

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

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

Get-Module -ListAvailable

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

Import-Module DellBIOSProvider

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

Import-Module "C:\Modules\MyCustomModule"

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

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

Get-Module

Get-Module - список всех загруженных в PowerShell сессии модулей

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

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

Import-Module cannot beloaded because running scripts is disabled on this system

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

Set-ExecutionPolicy RemoteSigned

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

Get-Command -Module DellBIOSProvider

Get-Command -Module - список команд в модуле

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

$env:PSModulePath -split ";"

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

  • Модуля для всех пользователей — $Env:ProgramFiles\WindowsPowerShell\Modules
  • Модули текущего пользователя (не требует прав администратора для устновки)- $HOME\Documents\WindowsPowerShell\Modules
  • Встроенные PowerShell модули — $PSHOME\Modules

PSModulePath

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

Get-Module pswindowsupdate -ListAvailable

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 модулей, которые часто используются администраторами для управления инфраструктурой и автоматизацией


Предыдущая статья Следующая статья


Комментариев: 0 Оставить комментарий

Оставить комментарий

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

Я не робот( Обязательно отметьте)