web-dev-qa-db-ja.com

PowerShell v5-インターネットに接続されていないコンピューターにモジュールをインストールする方法

私はWMF 5.0をダウンロードして別のマシン(v5、インターネットなし、管理アクセス)をセットアップするために使用したマシン(v3、インターネット、管理アクセスなし)を持っています。ここで、v5を実行しているがインターネット接続を使用していないマシンでPowerShellGetのいくつかのモジュールを使用したいと思います。

* .psm1ファイルをダウンロードして、コピーして使用できるオプションが必要です。 GitHubからダウンロードするオプションがあるように。

同様の問題と回避策を持っている人はいますか?

7
zerocool18

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
7
Jaykul

PowerShell 5.0へのインターネットアクセスでマシンを更新し、 Save-Module PowerShellGetからモジュールを保存します。例:

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

これにより、モジュール(PSReadLineなど)がフォルダーに保存され、他のマシンにコピーして、通常のモジュールのようにインストールできます( PowerShellモジュールのインストール を参照)。

2
Frode F.