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

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

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

установка модуля powershell из галереи powershellgallery в автономном режиме с помощью файла nupkg

Как установить модули PowerShell на автономные компьютеры?

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

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

$PSVersionTable.PSVersion

Убедитесь, что модуль существует в PSGallery:

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

Найти модуль в галерее powershell

Загрузите модуль в указанную локальную папку на вашем компьютере:

Save-Module –Name SqlServer –Path C:\PS\

Save-Module: загрузить модуль powershell в локальную папку

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

Давайте посмотрим, в каких папках хранятся модули PowerShell:

$env:PSModulePath -split ";"

Где хранятся модули PowerShell?

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

  • C:\Users\username\Documents\WindowsPowerShell\Modules ($Home\Documents\PowerShell\Modules) — модули PowerShell в этой папке доступны только этому пользователю (CurrentUser);
  • C:\Program Files\WindowsPowerShell\Modules ($Env:ProgramFiles\WindowsPowerShell\Modules) — путь используется для установки модуля для всех пользователей компьютера (-Scope AllUsers);
  • C:\Windows\system32\WindowsPowerShell\v1.0\Modules — папка по умолчанию для встроенных модулей.

Скопируйте модуль в C:\Program Files\WindowsPowerShell\Modules.

копирование файлов модулей powershell на автономный компьютер

Убедитесь, что модуль SQLServer теперь доступен:

Get-Module -Name SQLServer -ListAvailable

Get-Module installed

Вы можете получить каталог модуля, как показано ниже:

(Get-Module -ListAvailable SQLServer).path

получить путь к модулю powershell

Отображение списка команд, доступных в модуле:

Get-Command -Module SQLServer

Таким же образом можно установить любой модуль. Я часто использую этот метод для установки модулей SQLServer, PSWindowsUpdate или PowerCLI for VMware.

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

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

$session = New-PSSession -ComputerName dub-sql1

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

Get-Module -PSSession $session –ListAvailable

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

Import-Module -PSsession $session -Name SqlServer

Не забудьте закрыть сеанс по завершении работы:

Remove-PSSession $session

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

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

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

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

Команда создает новый модуль RemoteSQLServer PowerShell на вашем компьютере (в C:\Program Files\WindowsPowerShell\Modules). Сами файлы команд не копируются.

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

Remove-PSSession $session

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

Import-Module RemoteSQLServer

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

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

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