次の方法で共有


Windows PowerShell 5.1 の NuGet コンポーネントをブートストラップする

Windows の新しい展開では、Windows PowerShell 5.1 には、PowerShell ギャラリーと対話するために必要な NuGet コンポーネントは含まれません。 PowerShellGet には、PowerShell ギャラリーに接続できる限り、これらのコンポーネントを更新するロジックが含まれています。 コンピューターがインターネットに接続されていない場合は、信頼できるソースから切断されたコンピューターに必要なファイルをコピーする必要があります。

PowerShellギャラリーと連携するために、コマンドによって更新されたNuGetプロバイダーが必須です。 Publish-*コマンドはリソースを公開するために nuget.exe を使用します。

インターネットに接続されたマシンに最新バージョンのPowerShellGetをインストールしてください

PowerShellGetの最新バージョンをインストールするには、以下のコマンドを実行します:

Install-Module -Name PowerShellGet -Repository PSGallery

Nでプロンプトに 答えて NuGetプロバイダーをインストールしてください。

NuGet provider is required to continue
PowerShellGet requires NuGet provider version '2.8.5.201' or newer to interact with NuGet
-based repositories. The NuGet provider must be available in 'C:\Program Files\PackageMan
agement\ProviderAssemblies' or 'C:\Users\user1\AppData\Local\PackageManagement\ProviderAs
semblies'. You can also install the NuGet provider by running 'Install-PackageProvider -N
ame NuGet -MinimumVersion 2.8.5.201 -Force'. Do you want PowerShellGet to install and imp
ort the NuGet provider now?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): Y
VERBOSE: Installing NuGet provider.

Yに答えると、PowerShellGetはNuGetプロバイダーとnuget.exeコマンドラインツール(必要に応じて)をインストールします。

PowerShellGetをインストールすると、自動的にPackageManagementの最新バージョンがインストールされます。

必要なファイルを隔離されたコンピュータにコピーしてください

インターネット接続されたマシンにアップデートをインストールした後、信頼できるオフラインプロセスを通じて独立したノードに手動でコンポーネントをコピーします。

  1. PowerShellGet モジュールと PackageManagement モジュールをオフライン コンピューターにコピーします。 ソースマシン上のモジュールを特定するには、以下のコマンドを使用します。

    Get-Module PowerShellGet, PackageManagement -ListAvailable |
        Sort-Object Version -Descending |
        Select-Object Path -First 2
    

    結果は以下の出力に似ているはずです。

    Path
    ----
    C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\2.2.5\PowerShellGet.psd1
    C:\Program Files\WindowsPowerShell\Modules\PackageManagement\1.4.8.1\PackageManagement.psd1
    

    モジュールフォルダー全体を隔離されたマシンの同じ場所にコピーしてください。 例えば、モジュールが PowerShellGet\2.2.5 に位置し、 PackageManagement\1.4.8.1 フォルダーを $env:PROGRAMFILES\WindowsPowerShell\Modules の下の同じフォルダ名に割り当てている場合などです。

    ファイルを $env:PROGRAMFILESにコピーするには管理者権限が必要です。

  2. nuget.exeを分離されたマシンにコピーしてください。 PowerShellGetは以下の場所にインストール nuget.exe : $env:LOCALAPPDATA\Microsoft\Windows\PowerShell\PowerShellGet\nuget.exe

    もしその場所にファイルがなければ、どこか別の場所にインストールされているか、PowerShellGetで.NET CLI(dotnet.exe)を見つけます。 https://aka.ms/psget-nugetexeから最新バージョンのnuget.exeをダウンロードできます。

    ターゲットコンピュータの$env:LOCALAPPDATA\Microsoft\Windows\PowerShell\PowerShellGet\nuget.exenuget.exeコピーしてください。

コピーしたファイルのブロックを解除してください

他のコンピュータからファイルをコピーすると、Windowsがそのファイルをブロックすることがあります。 コピーされたファイルのブロックを解除するには、ターゲットマシンで以下のコマンドを実行してください。

$getChildItemSplat = @{
    Path = @(
      "$env:PROGRAMFILES\WindowsPowerShell\Modules\PowerShellGet"
      "$env:PROGRAMFILES\WindowsPowerShell\Modules\PackageManagement"
      "$env:LOCALAPPDATA\Microsoft\Windows\PowerShell\PowerShellGet\nuget.exe"
    )
    Recurse = $true
}
Get-ChildItem @getChildItemSplat | Unblock-File