私はWMF 5.0をダウンロードして別のマシン(v5、インターネットなし、管理アクセス)をセットアップするために使用したマシン(v3、インターネット、管理アクセスなし)を持っています。ここで、v5を実行しているがインターネット接続を使用していないマシンでPowerShellGetのいくつかのモジュールを使用したいと思います。
* .psm1ファイルをダウンロードして、コピーして使用できるオプションが必要です。 GitHubからダウンロードするオプションがあるように。
同様の問題と回避策を持っている人はいますか?
PowerShell 3マシンに Package Management Module をインストールしてから、Save-Module ...
または ProGet をネットワークの「エッジ」のどこかに設定し、内部からのみ使用するクライアントに対して、パブリックから必要なモジュールをミラーリングします PowerShellGallery 。
失敗した場合は、独自のダウンロード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モジュールのインストール を参照)。