Iniciar o programa de arranque do fornecedor nuGet e NuGet.exe

NuGet.exe não está incluído no fornecedor NuGet mais recente. Para operações de publicação de um módulo ou script, o PowerShellGet requer o executável binário NuGet.exe. Apenas o fornecedor NuGet é necessário para todas as outras operações, incluindo localizar, instalar, guardar e desinstalar. O PowerShellGet inclui lógica para processar um bootstrap combinado do fornecedor NuGet e NuGet.exe ou o bootstrap apenas do fornecedor NuGet. Em ambos os casos, só deve ocorrer uma única mensagem de aviso. Se o computador não estiver ligado à Internet, o utilizador ou um administrador tem de copiar uma instância fidedigna do fornecedor NuGet e/ou do ficheiro NuGet.exe para o computador desligado.

Nota

A partir da versão 6, o fornecedor NuGet está incluído na instalação do PowerShell.

Resolver o erro quando o fornecedor NuGet não foi instalado num computador ligado à 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

Resolver o erro quando o fornecedor NuGet está disponível e NuGet.exe não está disponível durante a operação de publicação num computador ligado à 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.

Resolver o erro quando o fornecedor NuGet e NuGet.exe não estão disponíveis durante a operação de publicação num computador ligado à 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.

Iniciar manualmente o programa de arranque do fornecedor NuGet num computador que não esteja ligado à Internet

Os processos demonstrados acima assumem que o computador está ligado à Internet e pode transferir ficheiros a partir de uma localização pública. Se isso não for possível, a única opção é iniciar o arranque de uma máquina utilizando os processos indicados acima e copiar manualmente o fornecedor para o nó isolado através de um processo fidedigno offline. O caso de utilização mais comum para este cenário é quando uma galeria privada está disponível para suportar um ambiente isolado.

Depois de seguir o processo acima para iniciar o arranque de um computador ligado à Internet, encontrará ficheiros de fornecedor na localização:

C:\Program Files\PackageManagement\ProviderAssemblies\

A estrutura de pastas/ficheiros do fornecedor NuGet será (possivelmente com um número de versão diferente):

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

Copie estas pastas e ficheiros com um processo fidedigno para os computadores offline. Para utilizar o fornecedor no computador offline, tem de ser importado. Execute o seguinte comando no computador offline:

Import-PackageProvider -Name NuGet

Iniciar NuGet.exe manualmente para suportar operações de publicação num computador que não esteja ligado à Internet

Além do processo de arranque manual do fornecedor NuGet, se o computador for utilizado para publicar módulos ou scripts numa galeria privada com os Publish-Module cmdlets ou Publish-Script , será necessário o ficheiro executável binário NuGet.exe.

O caso de utilização mais comum para este cenário é quando uma galeria privada está disponível para suportar um ambiente isolado. Existem duas opções para obter o ficheiro NuGet.exe.

Uma opção é iniciar o arranque de um computador ligado à Internet e copiar os ficheiros para os computadores offline através de um processo fidedigno. Depois de iniciar o arranque do computador ligado à Internet, o binário NuGet.exe estará localizado numa de duas pastas:

  • Se os Publish-Module cmdlets ou Publish-Script foram executados com permissões elevadas (Como Administrador):

    $env:ProgramData\Microsoft\Windows\PowerShell\PowerShellGet
    
  • Se os cmdlets foram executados como um utilizador sem permissões elevadas:

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

Uma segunda opção é transferir NuGet.exe a partir do site do NuGet.Org: https://dist.nuget.org/index.html ao selecionar uma versão nugGet para máquinas de produção, certifique-se de que é posterior à 2.8.5.208 e identifique a versão que foi identificada como "recomendada". Lembre-se de desbloquear o ficheiro se tiver sido transferido através de um browser. Isto pode ser efetuado com o Unblock-File cmdlet .

Em ambos os casos, o ficheiro NuGet.exe pode ser copiado para qualquer localização no $env:PATH, mas as localizações padrão são:

  • Para disponibilizar o executável para que todos os utilizadores possam utilizar Publish-Module e Publish-Script cmdlets:

    $env:ProgramData\Microsoft\Windows\PowerShell\PowerShellGet
    
  • Para disponibilizar o executável apenas a um utilizador específico, copie para a localização apenas dentro do perfil desse utilizador:

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