Установите модуль powershell в закрытой сети

У меня простой вопрос, но пока я нигде не могу найти ответ на него.

Я использую PowerShell 5, и я работаю в закрытой среде, без возможности подключения к Интернету, я хочу установить на своей машине модуль вручную, в основном любой модуль, который доступен для загрузки, например, posh-ssh.

Это можно сделать? Скажем, сохранить модуль здесь и установить?

2 ответа

Решение

Позвольте мне дать вам два подхода в этом случае.

  1. Вы можете загрузить все необходимые модули из галереи и сохранить их в каком-либо окне общего доступа в одной из ваших систем. Затем просто установите модули из этой общей папки. Так что он будет выступать в качестве отдельного хранилища для вас.
  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) будут работать только в том случае, если загрузка включена на вашем сервере (т. Е. Ваш компьютер подключен к Интернету и загрузка НЕ ​​заблокирована брандмауэром.)

НТН

Другие вопросы по тегам