Установите модуль powershell в закрытой сети
У меня простой вопрос, но пока я нигде не могу найти ответ на него.
Я использую PowerShell 5, и я работаю в закрытой среде, без возможности подключения к Интернету, я хочу установить на своей машине модуль вручную, в основном любой модуль, который доступен для загрузки, например, posh-ssh.
Это можно сделать? Скажем, сохранить модуль здесь и установить?
2 ответа
Позвольте мне дать вам два подхода в этом случае.
- Вы можете загрузить все необходимые модули из галереи и сохранить их в каком-либо окне общего доступа в одной из ваших систем. Затем просто установите модули из этой общей папки. Так что он будет выступать в качестве отдельного хранилища для вас.
- Вы можете создать внутренний FTP и хранить его там. Затем с помощью powershell вы можете легко загрузить их все, и они будут доступны и в закрытой сети.
Надеюсь, поможет.
Как @jyao попросил несколько примеров, вот мой ответ с примерами:
Самый простой способ установить / сделать модули PowerShell доступными в закрытой сети (или на автономном компьютере) - это сначала использовать сетевой компьютер для загрузки необходимых модулей, а затем сохранить / скопировать эти модули в папку, доступную из в закрытой сети.
ШАГИ:
Примечание. Я использую модуль "SQLServer" в следующем примере:
- Войдите на компьютер, который подключен к сети и на котором загрузка не заблокирована брандмауэром.
Сохраните нужный модуль (в локальной папке), например:
Save-Module -Name "SQLServer" -Path C:\SavedPSModules
Теперь скопируйте модуль в автономный компьютер (в одну из папок Modules, где PowerShell ищет модули), например:
Copy-Item "C:\SavedPSModules\SQLServer" -Destination "C:\User\{usr_name}\Documents\WindowsPowerShell\Modules" -Recurse -ToSession $Session;
#assuming целевые компьютеры находятся в пределах доступного домена / сети.Наконец, проверьте, правильно ли установлен модуль:
$module = "SQLServer" #Check if module is installed: $error.clear() Import-Module $module -ErrorAction SilentlyContinue If($error){ Write-Host $module 'module is NOT installed (install it first before importing.)' }else{ Write-Host "$module module is installed " -NoNewline #Check if module is imported: if (Get-Module -Name $module) { Write-Host "and is already imported (i.e. its cmdlets are ready/available to be used.)" Write-Host "`n$module module is installed in the following folder: `n`t $((Get-Module -Name SqlServer).ModuleBase[0])" } else { Write-Warning "however, it is NOT imported yet (use `"Import-Module`" to import it)." } }
Заметки:
Переменная $env:PSModulePath содержит места, где PowerShell ищет установленные модули. Если вы хотите сохранить свои модули в общей сетевой папке, просто добавьте свое местоположение к этой переменной. Для просмотра списка текущих установленных модулей-папок используйте следующее:
$env:PSModulePath -split ';'
Если папка "Модули" не существует, вам может потребоваться ее создать, например:
Mkdir C:\Users\{user_name}\Documents\WindowsPowerShell\Modules;
Помните: командлет Find-Module (и его одноуровневые командлеты, такие как Save-Module & Install-Module) будут работать только в том случае, если загрузка включена на вашем сервере (т. Е. Ваш компьютер подключен к Интернету и загрузка НЕ заблокирована брандмауэром.)
НТН