Большинство популярных модулей PowerShell устанавливаются в онлайн-режиме из официального репозитория PowerShell Gallery (PSGallery) с помощью команды Install-Module
. Однако, если ваш компьютер находится в изолированной от интернета сети или доступ к PSRepository ограничен, установка модулей PowerShell становится проблемой. В этой статье мы рассмотрим способы офлайн установки модулей PowerShell и их импорта с удаленного компьютера на примере модуля для управления SQL Server.
На сайте PowershellGallery.com отсутствуют ссылки на загрузку модулей. Единственное, что вы можете загрузить с сайта это пакет NuGet (файл .nupkg ), но это будет не совсем полноценная установка модуля (основная проблема – не устанавливаются зависимости).
Чтобы установить модуль PowerShell в офлайн среде, необходимо сначала скачать модуль на компьютер с доступом к интернету, а затем перенести его на офлайн-компьютер.
1. Проверьте версию PowerShell на компьютере, она должна быть не ниже 5.1:
$PSVersionTable.PSVersion
2. Убедитесь, что нужный модуль доступен в PowerShell Gallery:
Find-Module –Name *SqlServer* | Select Name, Version, Repository
3. Скачайте нужный модуль на компьютер:
Save-Module –Name SqlServer –Path C:\ps\
Это скачает модуль SqlServer в указанный каталог.
4. Скопируйте папку с модулем на офлайн-компьютер, куда хотите его установить.
5. Определите, в каких каталогах PowerShell хранит модули:
$env:PSModulePath -split ";"
Вы увидите пути, где PowerShell хранит модули, например:
— C:\Users\root\Documents\WindowsPowerShell\Modules — модули доступны только данному пользователю. (CurrentUser)
— C:\Program Files\WindowsPowerShell\Modules — путь для установки модулей для всех пользователей компьютера. (Scope AllUsers)
— C:\Windows\system32\WindowsPowerShell\v1.0\Modules — каталог для встроенных модулей по-умолчанию
6. Скопируйте модуль в каталог C:\Program Files\WindowsPowerShell\Modules.
7. Проверьте доступность модуля:
Get-Module -Name SQLServer -ListAvailable
8. Узнайте путь, где установлен модуль:
(Get-Module -ListAvailable SQLServer).path
9. Выведите список команд модуля:
Get-Command -Module SQLServer
Аналогичным образом вы можете установить любой модуль. Чаще всего используют этот способ для установки PowerShell модуля SQLServer, PSWindowsUpdate и PowerCLI для VMWare.
Если вы не хотите устанавливать модуль на всех компьютерах, можно импортировать модуль с другого компьютера через PSRemoting.
1. Создайте сессию PowerShell с удаленным компьютером:
$session = New-PSSession -ComputerName msk-sql01
2. Выведите список установленных модулей на удаленном компьютере:
Get-Module -PSSession $session –ListAvailable
3. Импортируйте нужный модуль на ваш локальный компьютер:
Import-Module -PSsession $session -Name SqlServer
4. После завершения работы закройте сессию:
Remove-PSSession $session
Вы можете использовать командлеты PowerShell, установленные на удаленном компьютере, без явной установки модуля.
1. Подключитесь к удаленному компьютеру и импортируйте модуль:
$session = New-PSSession -ComputerName msk-sql01
Invoke-Command {Import-Module SqlServer} -Session $session
2. Экспортируйте командлеты модуля из удаленной сессии в локальный модуль:
Export-PSSession -Session $session -CommandName *-Sql* -OutputModule RemSQLServer -AllowClobber
Это создаст на вашем компьютере новый PowerShell модуль RemSQLServer (в каталоге C:\Program Files\WindowsPowerShell\Modules ).
3. Закройте сессию:
Remove-PSSession $session
4. Теперь вы можете использовать командлеты, импортировав новый модуль:
Import-Module RemSQLServer
Командлеты модуля SQL Server будут доступны до тех пор, пока сессия PowerShell остается активной.
Эти методы позволяют установить и использовать PowerShell модули в офлайн системах или импортировать их с другого компьютера, что особенно полезно в средах с ограниченным доступом в интернет.