PowerShell v5 - Как установить модули на компьютер без подключения к интернету?

У меня есть компьютер (v3, интернет, без доступа администратора), который я использовал для загрузки WMF 5.0 и настройки другого компьютера (v5, без интернета, доступ администратора). Теперь я хочу использовать некоторые модули из PowerShellGet на компьютере под управлением v5, но без подключения к Интернету.

Мне нужна опция для загрузки файла *.psm1, который я могу затем скопировать и использовать. Так же, как у нас есть варианты для загрузки с GitHub.

Кто-нибудь с похожей проблемой и какие-либо обходные пути?

2 ответа

Решение

Установите модуль управления пакетами на компьютере PowerShell 3, а затем используйте модуль сохранения...

Или настройте ProGet где-нибудь "на краю" вашей сети и сделайте так, чтобы он отражал модули, которые вы хотите получить из общедоступной https://powershellgallery.com/ для ваших внутренних клиентов.

В противном случае просто создайте свой собственный URL для загрузки:

https://www.powershellgallery.com/api/v2/package/$Name/$Version

Вы даже можете сгенерировать прокси-модуль OData или просто использовать invoke-restmethod для поиска:

function Find-Module {
    param($Name)
    invoke-restmethod "https://www.powershellgallery.com/api/v2/Packages?`$filter=Id eq '$name' and IsLatestVersion" | 
    select-Object @{n='Name';ex={$_.title.'#text'}},
                  @{n='Version';ex={$_.properties.version}},
                  @{n='Uri';ex={$_.Content.src}}
}
function Save-Module {
    param(
        [Parameter(ValueFromPipelineByPropertyName=$true,Mandatory=$true)]
        $Name,
        [Parameter(ValueFromPipelineByPropertyName=$true,Mandatory=$true)]$Uri,
        [Parameter(ValueFromPipelineByPropertyName=$true)]$Version="",
        [string]$Path = $pwd
    )
    $Path = (Join-Path $Path "$Name.$Version.nupkg")
    Invoke-WebRequest $Uri -OutFile $Path
    Get-Item $Path
}

Теперь вы можете сделать то же самое, что и с официальным модулем:

Find-Module Pester | Save-Module -Path ~\Downloads

Обновите свой компьютер с доступом к Интернету до PowerShell 5.0 и используйте Save-Module сохранить модули из PowerShellGet. Пример:

Find-Module psreadline | Save-Module -Path c:\users\frode\Desktop

Это сохранит модуль (например, PSReadLine) в папку, которую вы можете скопировать на другой компьютер и установить как обычный модуль (см. Установка модуля PowerShell).

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