Udostępnij za pośrednictwem


Uruchamianie dostawcy NuGet i NuGet.exe

NuGet.exe nie jest uwzględniona w najnowszym dostawcy NuGet. W przypadku operacji publikowania modułu lub skryptu polecenie PowerShellGet wymaga pliku wykonywalnego binarnego NuGet.exe. Tylko dostawca NuGet jest wymagany dla wszystkich innych operacji, w tym znajdowania, instalowania, zapisywania i odinstalowywania. Moduł PowerShellGet zawiera logikę do obsługi połączonego modułu rozruchowego dostawcy NuGet i NuGet.exe lub uruchamiania tylko dostawcy NuGet. W obu przypadkach powinien wystąpić tylko jeden komunikat z monitem. Jeśli maszyna nie jest połączona z Internetem, użytkownik lub administrator musi skopiować zaufane wystąpienie dostawcy NuGet i/lub plik NuGet.exe do odłączonego komputera.

Uwaga

Począwszy od wersji 6, dostawca NuGet jest uwzględniony w instalacji programu PowerShell.

Usuwanie błędu, gdy dostawca NuGet nie został zainstalowany na maszynie połączonej z Internetem

Find-Module -Repository PSGallery -Verbose -Name Contoso
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\PackageManagement\ProviderAssemblies' or
'C:\Users\user1\AppData\Local\PackageManagement\ProviderAssemblies'. You can also install the NuGet
provider by running 'Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force'. Do you
want PowerShellGet to install and import the NuGet provider now?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): n
Find-Module : NuGet provider is required to interact with NuGet-based repositories. Please ensure
that '2.8.5.201' or newer version of NuGet provider is installed.
At line:1 char:1
+ Find-Module -Repository PSGallery -Verbose -Name Contoso
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Find-Module], InvalidOperationException
   + FullyQualifiedErrorId : CouldNotInstallNuGetProvider,Find-Module
Find-Module -Repository PSGallery -Verbose -Name Contoso
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\PackageManagement\ProviderAssemblies' or
'C:\Users\user1\AppData\Local\PackageManagement\ProviderAssemblies'. You can also install the NuGet
provider by running 'Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force'. Do you
want PowerShellGet to install and import the NuGet provider now?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): Y
VERBOSE: Installing NuGet provider.

Version    Name                                Type       Repository           Description
-------    ----                                ----       ----------           -----------
2.5        Contoso                             Module     PSGallery        Contoso module

Rozwiązywanie błędu, gdy dostawca NuGet jest dostępny i NuGet.exe nie jest dostępny podczas operacji publikowania na maszynie połączonej z Internetem

Publish-Module -Name Contoso -Repository PSGallery -Verbose
NuGet.exe is required to continue
PowerShellGet requires NuGet.exe to publish an item to the NuGet-based repositories. NuGet.exe must
be available under one of the paths specified in PATH environment variable value. Do you want
PowerShellGet to install NuGet.exe now?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): N
Publish-Module : NuGet.exe is required to interact with NuGet-based repositories. Please ensure
that NuGet.exe is available under one of the paths specified in PATH environment variable value.
At line:1 char:1
+ Publish-Module -Name Contoso -Repository PSGallery -Verbose
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Publish-Module], InvalidOperationException
    + FullyQualifiedErrorId : CouldNotInstallNuGetExe,Publish-Module
Publish-Module -Name Contoso -Repository PSGallery -Verbose
NuGet.exe is required to continue
PowerShellGet requires NuGet.exe to publish an item to the NuGet-based repositories. NuGet.exe must
be available under one of the paths specified in PATH environment variable value. Do you want
PowerShellGet to install NuGet.exe now?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): Y
VERBOSE: Installing NuGet.exe.
VERBOSE: Successfully published module 'Contoso' to the module publish location 'https://www.powershellgallery.com/api/v2/'.
Please allow few minutes for 'Contoso' to show up in the search results.

Usuwanie błędu, gdy zarówno dostawca NuGet, jak i NuGet.exe nie są dostępne podczas operacji publikowania na maszynie połączonej z Internetem

Publish-Module -Name Contoso -Repository PSGallery -Verbose
NuGet.exe and NuGet provider are required to continue
PowerShellGet requires NuGet.exe and NuGet provider version '2.8.5.201' or newer to interact with
the NuGet-based repositories. Do you want PowerShellGet to install both NuGet.exe and NuGet provider
now?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): N
Publish-Module : PowerShellGet requires NuGet.exe and NuGet provider version '2.8.5.201' or newer
to interact with the NuGet-based repositories. Please ensure that '2.8.5.201' or newer version of
NuGet provider is installed and NuGet.exe is available under one of the paths specified in PATH
environment variable value.
At line:1 char:1
+ Publish-Module -Name Contoso -Repository PSGallery -Verbose
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Publish-Module], InvalidOperationException
    + FullyQualifiedErrorId : CouldNotInstallNuGetBinaries,Publish-Module
Publish-Module -Name Contoso -Repository PSGallery -Verbose
NuGet.exe and NuGet provider are required to continue
PowerShellGet requires NuGet.exe and NuGet provider version '2.8.5.201' or newer to interact with
the NuGet-based repositories. Do you want PowerShellGet to install both NuGet.exe and NuGet provider
now?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): Y
VERBOSE: Installing NuGet provider.
VERBOSE: Installing NuGet.exe.
VERBOSE: Successfully published module 'Contoso' to the module publish location 'https://www.powershellgallery.com/api/v2/'.
 Please allow few minutes for 'Contoso' to show up in the search results.

Ręczne uruchamianie dostawcy NuGet na maszynie, która nie jest połączona z Internetem

Przedstawione powyżej procesy zakładają, że maszyna jest połączona z Internetem i może pobierać pliki z lokalizacji publicznej. Jeśli to nie jest możliwe, jedyną opcją jest uruchomienie maszyny przy użyciu procesów podanych powyżej i ręczne skopiowanie dostawcy do izolowanego węzła za pomocą zaufanego procesu offline. Najbardziej typowym przypadkiem użycia w tym scenariuszu jest to, że prywatna galeria jest dostępna do obsługi środowiska izolowanego.

Po wykonaniu powyższego procesu uruchamiania połączonej z Internetem maszyny pliki dostawcy znajdziesz w lokalizacji:

C:\Program Files\PackageManagement\ProviderAssemblies\

Struktura folderu/pliku dostawcy NuGet będzie (prawdopodobnie z innym numerem wersji):

NuGet
--2.8.5.208
----Microsoft.PackageManagement.NuGetProvider.dll

Skopiuj te foldery i plik przy użyciu zaufanego procesu na maszynach w trybie offline. Aby użyć dostawcy na maszynie offline, należy go zaimportować. Uruchom następujące polecenie na maszynie offline:

Import-PackageProvider -Name NuGet

Ręczne uruchamianie NuGet.exe w celu obsługi operacji publikowania na maszynie, która nie jest połączona z Internetem

Oprócz procesu ręcznego uruchamiania dostawcy NuGet, jeśli maszyna zostanie użyta do publikowania modułów lub skryptów w prywatnej galerii przy użyciu Publish-Module poleceń cmdlet lub Publish-Script , NuGet.exe binarny plik wykonywalny będzie wymagany.

Najbardziej typowym przypadkiem użycia w tym scenariuszu jest to, że prywatna galeria jest dostępna do obsługi środowiska izolowanego. Istnieją dwie opcje uzyskania pliku NuGet.exe.

Jedną z opcji jest uruchomienie maszyny połączonej z Internetem i skopiowanie plików do maszyn offline przy użyciu zaufanego procesu. Po uruchomieniu połączonej z Internetem maszyny NuGet.exe binarne będą znajdować się w jednym z dwóch folderów:

  • Publish-Module Jeśli polecenia cmdlet lub Publish-Script zostały wykonane z podwyższonym poziomem uprawnień (jako administrator):

    $env:ProgramData\Microsoft\Windows\PowerShell\PowerShellGet
    
  • Jeśli polecenia cmdlet zostały wykonane jako użytkownik bez podwyższonych uprawnień:

    $HOME\AppData\Local\Microsoft\Windows\PowerShell\PowerShellGet\
    

Drugą opcją jest pobranie NuGet.exe z witryny internetowej NuGet.Org: https://dist.nuget.org/index.html podczas wybierania wersji NugGet dla maszyn produkcyjnych upewnij się, że jest ona późniejsza niż 2.8.5.208 i zidentyfikuj wersję oznaczoną etykietą "zalecane". Pamiętaj, aby odblokować plik, jeśli został pobrany przy użyciu przeglądarki. Można to wykonać za pomocą Unblock-File polecenia cmdlet .

W obu przypadkach plik NuGet.exe można skopiować do dowolnej lokalizacji w $env:PATHprogramie , ale standardowe lokalizacje to:

  • Aby udostępnić plik wykonywalny, aby wszyscy użytkownicy mogli używać Publish-Module poleceń cmdlet i Publish-Script wykonywać następujące czynności:

    $env:ProgramData\Microsoft\Windows\PowerShell\PowerShellGet
    
  • Aby udostępnić plik wykonywalny tylko określonemu użytkownikowi, skopiuj go do lokalizacji tylko w profilu tego użytkownika:

    $HOME\AppData\Local\Microsoft\Windows\PowerShell\PowerShellGet\