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).