Bootstrap de NuGet-provider en NuGet.exe

NuGet.exe is niet opgenomen in de nieuwste NuGet-provider. Voor publicatiebewerkingen van een module of script vereist PowerShellGet het binaire uitvoerbare NuGet.exe. Alleen de NuGet-provider is vereist voor alle andere bewerkingen, waaronder zoeken, installeren, opslaan en verwijderen. PowerShellGet bevat logica voor het verwerken van een gecombineerde bootstrap van de NuGet-provider en NuGet.exe, of bootstrap van alleen de NuGet-provider. In beide gevallen mag slechts één promptbericht worden weergegeven. Als de computer niet is verbonden met internet, moet de gebruiker of een beheerder een vertrouwd exemplaar van de NuGet-provider en/of het NuGet.exe-bestand kopiëren naar de niet-verbonden computer.

Notitie

Vanaf versie 6 is de NuGet-provider opgenomen in de installatie van PowerShell.

Fout oplossen wanneer de NuGet-provider niet is geïnstalleerd op een computer die is verbonden met internet

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

Fout oplossen wanneer de NuGet-provider beschikbaar is en NuGet.exe niet beschikbaar is tijdens de publicatiebewerking op een computer die is verbonden met internet

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.

Fout opgelost wanneer zowel de NuGet-provider als de NuGet.exe niet beschikbaar zijn tijdens de publicatiebewerking op een computer die is verbonden met internet

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.

De NuGet-provider handmatig opstarten op een computer die niet is verbonden met internet

In de hierboven beschreven processen wordt ervan uitgegaan dat de computer is verbonden met internet en bestanden kan downloaden van een openbare locatie. Als dat niet mogelijk is, is de enige optie om een machine op te starten met behulp van de bovenstaande processen en de provider handmatig naar het geïsoleerde knooppunt te kopiëren via een offline vertrouwd proces. De meest voorkomende use-case voor dit scenario is wanneer een privégalerie beschikbaar is ter ondersteuning van een geïsoleerde omgeving.

Nadat u het bovenstaande proces hebt uitgevoerd om een computer met internetverbinding te bootstrapen, vindt u providerbestanden op de locatie:

C:\Program Files\PackageManagement\ProviderAssemblies\

De map-/bestandsstructuur van de NuGet-provider is (mogelijk met een ander versienummer):

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

Kopieer deze mappen en bestanden via een vertrouwd proces naar de offlinecomputers. Als u de provider op de offlinecomputer wilt gebruiken, moet deze worden geïmporteerd. Voer de volgende opdracht uit op de offlinecomputer:

Import-PackageProvider -Name NuGet

Handmatig bootstrapping NuGet.exe ter ondersteuning van publicatiebewerkingen op een computer die niet is verbonden met internet

Naast het proces voor het handmatig opstarten van de NuGet-provider, als de computer wordt gebruikt om modules of scripts te publiceren naar een privégalerie met behulp van de Publish-Module cmdlets of Publish-Script , is het NuGet.exe binaire uitvoerbare bestand vereist.

De meest voorkomende use-case voor dit scenario is wanneer een privégalerie beschikbaar is ter ondersteuning van een geïsoleerde omgeving. Er zijn twee opties om het NuGet.exe-bestand te verkrijgen.

Een optie is om een computer met internetverbinding op te starten en de bestanden naar de offlinecomputers te kopiëren met behulp van een vertrouwd proces. Na het bootstrappen van de computer met internetverbinding, bevindt het binaire NuGet.exe zich in een van de volgende twee mappen:

  • Als de Publish-Module cmdlets of Publish-Script zijn uitgevoerd met verhoogde machtigingen (als beheerder):

    $env:ProgramData\Microsoft\Windows\PowerShell\PowerShellGet
    
  • Als de cmdlets zijn uitgevoerd als een gebruiker zonder verhoogde machtigingen:

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

Een tweede optie is het downloaden van NuGet.exe van de NuGet.Org website: https://dist.nuget.org/index.html wanneer u een NugGet-versie voor productiemachines selecteert, controleert u of deze hoger is dan 2.8.5.208 en identificeert u de versie die het label 'aanbevolen' heeft gekregen. Vergeet niet om het bestand te deblokkeren als het is gedownload via een browser. Dit kan worden uitgevoerd met behulp van de Unblock-File cmdlet.

In beide gevallen kan het NuGet.exe-bestand worden gekopieerd naar elke locatie in $env:PATH, maar de standaardlocaties zijn:

  • Het uitvoerbare bestand beschikbaar maken, zodat alle gebruikers cmdlets en Publish-Script kunnen gebruikenPublish-Module:

    $env:ProgramData\Microsoft\Windows\PowerShell\PowerShellGet
    
  • Als u het uitvoerbare bestand alleen beschikbaar wilt maken voor een specifieke gebruiker, kopieert u alleen naar de locatie binnen het profiel van die gebruiker:

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