Compartir a través de


Arranque de los componentes de NuGet para Windows PowerShell 5.1

En una nueva implementación de Windows, Windows PowerShell 5.1 no incluye a los componentes de NuGet necesarios para interactuar con la Galería de PowerShell. PowerShellGet incluye lógica para actualizar estos componentes siempre que pueda conectarse a la Galería de PowerShell. Si la máquina no está conectada a Internet, debe copiar los archivos necesarios de un origen de confianza en la máquina desconectada.

El proveedor NuGet actualizado es necesario por los comandos para funcionar con la Galería PowerShell. Los Publish-* comandos se usan nuget.exe para publicar recursos.

Instala la última versión de PowerShellGet en un equipo conectado a internet

Para instalar la última versión de PowerShellGet, ejecuta el siguiente comando:

Install-Module -Name PowerShellGet -Repository PSGallery

Responde al mensaje con Y para instalar el proveedor 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.

Cuando respondes Y, PowerShellGet instala el proveedor NuGet y la nuget.exe herramienta de línea de comandos (si es necesario).

Nota:

Cuando instalas PowerShellGet, se instala automáticamente la última versión de PackageManagement.

Copia los archivos requeridos al ordenador aislado

Tras instalar las actualizaciones en la máquina conectada a internet, copia manualmente los componentes al nodo aislado mediante un proceso offline de confianza.

  1. Copie los módulos PowerShellGet y PackageManagement en la máquina sin conexión. Utiliza el siguiente comando para localizar los módulos en la máquina fuente:

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

    El resultado debería parecerse al siguiente resultado:

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

    Copia todas las carpetas del módulo en la misma ubicación en la máquina aislada. Por ejemplo, si los módulos están ubicados en PowerShellGet\2.2.5 y PackageManagement\1.4.8.1 las carpetas tienen los mismos nombres de carpeta bajo $env:PROGRAMFILES\WindowsPowerShell\Modules en la máquina objetivo.

    Nota:

    Necesitas privilegios administrativos para copiar archivos a $env:PROGRAMFILES.

  2. Copia nuget.exe a la máquina aislada. PowerShellGet se instala nuget.exe en la siguiente ubicación: $env:LOCALAPPDATA\Microsoft\Windows\PowerShell\PowerShellGet\nuget.exe

    Si el archivo no está presente en esa ubicación, o bien se instala en otro sitio o PowerShellGet ha encontrado la CLI .NET (dotnet.exe). Puedes descargar la última versión de nuget.exe .https://aka.ms/psget-nugetexe

    Copia nuget.exe en $env:LOCALAPPDATA\Microsoft\Windows\PowerShell\PowerShellGet\nuget.exe el ordenador objetivo.

Desbloquear los archivos copiados

Cuando copias archivos desde otro ordenador, Windows puede bloquear los archivos. Para desbloquear los archivos copiados, ejecuta los siguientes comandos en la máquina destino:

$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