Установка PowerShell модулей в офлайн режиме (без доступа в Интернет)

Большинство популярных модулей PowerShell устанавливаются в онлайн режиме из официального репозитория PowerShell Gallery (PSGallery) с помощью команды Install-Module . Однако, вы не сможете установить нужный модуль PowerShell, если ваш компьютер находится в изолированной от интернета сети или доступ к PSRepository ограничен. Или в сценарии с установкой модуля на сервере, на которых как правило заблокирован прямой доступ в интернет. В этой статье рассмотрим способ офлайн установки модулей PowerShell и импорта модуля с удаленного компьютера на примере модуля для управления SQLServer.

Обратите внимание, что на сайте PowershellGallery.com отсутствуют ссылки на загрузку модулей. Единственное, что вы можете загрузить с сайта это пакет NuGet (файл .nupkg ). С помощью определенных манипуляций вы сможете установить PowerShell модуль из nupkg файла, но это будет не совсем полноценная установка модуля (основная проблема – не устанавливаются зависимости).

Установка PowerShell модулей в офлайн режиме (без доступа в Интернет)Установка PowerShell модулей в офлайн режиме (без доступа в Интернет)

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

Сначала нужно установить нужный вам PowerShell модуль на компьютере, на котором доступ в интернет не ограничен.

На компьютере должна быть установлена версия PowerShell не ниже 5.1:

$PSVersionTable.PSVersion

Проверьте, что модуль присутствует в галерее PSGallery:

Find-Module –Name *SqlServer*| Select Name, Version, Repository

Установка PowerShell модулей в офлайн режиме (без доступа в Интернет)Установка PowerShell модулей в офлайн режиме (без доступа в Интернет)

Скачайте нужный вам модуль на ваш компьютер в указанный каталог:

Save-Module –Name SqlServer –Path C:ps

Скопируйте папку с модулем на другой компьютер, на котором вы хотите его установить.

Разберемся, в каких каталогах хранятся модули PowerShell:

$env:PSModulePath -split ";"

Как вы видите, PowerShell модули могут хранится по одному из следующих путей:

  • C:UsersrootDocumentsWindowsPowerShellModules ( $HomeDocumentsPowerShellModules ) – модули в этом каталоге в доступны только данному пользователю (CurrentUser)
  • C:Program FilesWindowsPowerShellModules ($Env:ProgramFilesWindowsPowerShellModules) — путь используется при установке модуля для всех пользователей компьютера (-Scope AllUsers)
  • C:Windowssystem32WindowsPowerShellv1.0Modules (каталог для встроенных модулей по-умолчанию)

Скопируйте модуль в каталог C:Program FilesWindowsPowerShellModules .

Проверьте, что модуль SQLServer теперь доступен:

Get-Module -Name SQLServer -ListAvailable

Каталог модуля можно узнать так:

(Get-Module -ListAvailable SQLServer).path

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

Get-Command -Module SQLServer

Аналогичным образом вы можете установить любой модуль. Я чаще всего использую этот способ для установки PowerShell модуля SQLServer, PSWindowsUpdate и PowerCLI для VMWare .

Установка PowerShell модулей AzureAD и Exchange Online в офлайн системах по понятным причинам не имеет смысла.

Импорт PowerShell модуля по сети с другого компьютера

Если вы не хотите устанавливать PowerShell модуль на всех компьютерах, вы можете импортировать любой модуль с другого компьютера по сети с помощью PSRemoting:

$session = New-PSSession -ComputerName msk-sql01

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

Get-Module -PSSession $session –ListAvailable

Импортировать указанный модуль на ваш компьютер:

Import-Module -PSsession $session -Name SqlServer

Не забудьте закрыть сессию после окончания:

Remove-PSSession $session

Еще более интересный способ локально использовать PowerShell модуль, установленный на удаленном компьютере через неявное удаленное управление (Implicit remoting).

Подключитесь к удалённому компьютеру через Invoke-Command и импортируйте нужный вам модуль PowerShell:
$session = New-PSSession -ComputerName msk-sql01
Invoke-Command {Import-Module SqlServer} -Session $session

Экспортируйте командлеты модуля из удаленной сессии в локальный модуль

Export-PSSession -Session $s -CommandName *-Sql* -OutputModule RemSQLServer -AllowClobber

Данная команда создаст на вашем компьютер новый PowerShell модуль RemSQLServer (в каталоге C:Program FilesWindowsPowerShellModules ). Сами командлеты при этом не копируются.

Закройте сессию:

Remove-PSSession $session

Теперь чтобы использовать командлеты PowerShell из этого модуля достаточно импортировать его в сессию:

Import-Module RemSQLServer

Все командлеты модуля SQL теперь доступны без установки явного подключения к удаленному компьютеру. Попробуйте выполнить запрос к MS SQL с помощью Invoke-Sqlcmd . Все команды доступны пока вы не закроете консоль PowerShell или не удалите модуль.

admin

Share
Published by
admin

Recent Posts

После включения диагностического запуска не удается войти в Windows — как исправить?

Некоторые пользователи, экспериментируя с конфигурацией системы в окне msconfig могут столкнуться с ситуацией, когда после…

2 недели ago

WinScript — очистка и настройка Windows 11 и 10

На сайте не раз публиковались обзоры программ, предназначенных для очистки или настройки последних версий Windows.…

2 недели ago

Предварительный просмотр накопительного обновления не устанавливается — решение

При установке некоторых обновлений Windows 11, имеющих в названии «Предварительный просмотр накопительного обновления», многие пользователи…

2 недели ago

FixExec — восстановление ассоциаций .exe, .bat и .com файлов

Некоторые пользователи Windows 11, 10 и предыдущих версий системы могут столкнуться с ситуацией, когда исполняемые…

2 недели ago

Ошибка 0x800705b4 при обновлении Windows 11 и 10 — как исправить?

При установке обновлений Windows 11/10 некоторые пользователи могут столкнуться с ошибкой с кодом 0x800705b4 и…

2 недели ago

Обслуживание вашей версии Windows 11 окончено — что делать?

Пользователи Windows 11 могут столкнуться с сообщением «Обслуживание вашей версии Windows окончено» (Your version of…

2 недели ago