How do I install the Nuget provider for PowerShell on a unconnected machine so I can install a nuget package from the PS command line?

前端 未结 5 1383
有刺的猬
有刺的猬 2020-12-24 11:16

I\'m trying to install pswindowsupdate.2.0.0.4.nupkg from the Powershell command line on a Win 7 computer not connected to the internet. I\'m running PS 5.1.14

相关标签:
5条回答
  • 2020-12-24 11:28

    I accepted trebleCode's answer, but I wanted to provide a bit more detail regarding the steps I took to install the nupkg of interest pswindowsupdate.2.0.0.4.nupkg on my unconnected Win 7 machine by way of following trebleCode's answer.

    First: after digging around a bit, I think I found the MS docs that trebleCode refers to:

    Bootstrap the NuGet provider and NuGet.exe

    Install-PackageProvider

    To continue, as trebleCode stated, I did the following

    Install NuGet provider on my connected machine

    On a connected machine (Win 10 machine), from the PS command line, I ran Install-PackageProvider -Name NuGet -RequiredVersion 2.8.5.201 -Force. The Nuget software was obtained from the 'Net and installed on my local connected machine.

    After the install I found the NuGet provider software at C:\Program Files\PackageManagement\ProviderAssemblies (Note: the folder name \ProviderAssemblies as opposed to \ReferenceAssemblies was the one minor difference relative to trebleCode's answer.

    The provider software is in a folder structure like this:

    C:\Program Files\PackageManagement\ProviderAssemblies
       \NuGet
          \2.8.5.208
             \Microsoft.PackageManagement.NuGetProvider.dll
    

    Install NuGet provider on my unconnected machine

    I copied the \NuGet folder (and all its children) from the connected machine onto a thumb drive and copied it to C:\Program Files\PackageManagement\ProviderAssemblies on my unconnected (Win 7) machine

    I started PS (v5) on my unconnected (Win 7) machine and ran Import-PackageProvider -Name NuGet -RequiredVersion 2.8.5.201 to import the provider to the current PowerShell session.

    I ran Get-PackageProvider -ListAvailable and saw this (NuGet appears where it was not present before):

    Name                     Version          DynamicOptions                                                                                                                                                                      
    ----                     -------          --------------                                                                                                                                                                      
    msi                      3.0.0.0          AdditionalArguments                                                                                                                                                                 
    msu                      3.0.0.0                                                                                                                                                                                              
    NuGet                    2.8.5.208        Destination, ExcludeVersion, Scope, SkipDependencies, Headers, FilterOnTag, Contains, AllowPrereleaseVersions, ConfigFile, SkipValidate                                             
    PowerShellGet            1.0.0.1          PackageManagementProvider, Type, Scope, AllowClobber, SkipPublisherCheck, InstallUpdate, NoPathUpdate, Filter, Tag, Includes, DscResource, RoleCapability, Command, PublishLocati...
    Programs                 3.0.0.0          IncludeWindowsInstaller, IncludeSystemComponent
    

    Create local repository on my unconnected machine

    On unconnected (Win 7) machine, I created a folder to serve as my PS repository (say, c:\users\foo\Documents\PSRepository)

    I registered the repo: Register-PSRepository -Name fooPsRepository -SourceLocation c:\users\foo\Documents\PSRepository -InstallationPolicy Trusted

    Install the NuGet package

    I obtained and copied the nupkg pswindowsupdate.2.0.0.4.nupkg to c:\users\foo\Documents\PSRepository on my unconnected Win7 machine

    I learned the name of the module by executing Find-Module -Repository fooPsRepository

    Version    Name                                Repository           Description                                                                                                                      
    -------    ----                                ----------           -----------                                                                                                                      
    2.0.0.4    PSWindowsUpdate                     fooPsRepository      This module contain functions to manage Windows Update Client.
    

    I installed the module by executing Install-Module -Name pswindowsupdate

    I verified the module installed by executing Get-Command –module PSWindowsUpdate

    CommandType     Name                                               Version    Source                                                                                                                 
    -----------     ----                                               -------    ------                                                                                                                 
    Alias           Download-WindowsUpdate                             2.0.0.4    PSWindowsUpdate                                                                                                        
    Alias           Get-WUInstall                                      2.0.0.4    PSWindowsUpdate                                                                                                        
    Alias           Get-WUList                                         2.0.0.4    PSWindowsUpdate                                                                                                        
    Alias           Hide-WindowsUpdate                                 2.0.0.4    PSWindowsUpdate                                                                                                        
    Alias           Install-WindowsUpdate                              2.0.0.4    PSWindowsUpdate                                                                                                        
    Alias           Show-WindowsUpdate                                 2.0.0.4    PSWindowsUpdate                                                                                                        
    Alias           UnHide-WindowsUpdate                               2.0.0.4    PSWindowsUpdate                                                                                                        
    Alias           Uninstall-WindowsUpdate                            2.0.0.4    PSWindowsUpdate                                                                                                        
    Cmdlet          Add-WUServiceManager                               2.0.0.4    PSWindowsUpdate                                                                                                        
    Cmdlet          Enable-WURemoting                                  2.0.0.4    PSWindowsUpdate                                                                                                        
    Cmdlet          Get-WindowsUpdate                                  2.0.0.4    PSWindowsUpdate                                                                                                        
    Cmdlet          Get-WUApiVersion                                   2.0.0.4    PSWindowsUpdate                                                                                                        
    Cmdlet          Get-WUHistory                                      2.0.0.4    PSWindowsUpdate                                                                                                        
    Cmdlet          Get-WUInstallerStatus                              2.0.0.4    PSWindowsUpdate                                                                                                        
    Cmdlet          Get-WUJob                                          2.0.0.4    PSWindowsUpdate                                                                                                        
    Cmdlet          Get-WULastResults                                  2.0.0.4    PSWindowsUpdate                                                                                                        
    Cmdlet          Get-WURebootStatus                                 2.0.0.4    PSWindowsUpdate                                                                                                        
    Cmdlet          Get-WUServiceManager                               2.0.0.4    PSWindowsUpdate                                                                                                        
    Cmdlet          Get-WUSettings                                     2.0.0.4    PSWindowsUpdate                                                                                                        
    Cmdlet          Get-WUTest                                         2.0.0.4    PSWindowsUpdate                                                                                                        
    Cmdlet          Invoke-WUJob                                       2.0.0.4    PSWindowsUpdate                                                                                                        
    Cmdlet          Remove-WindowsUpdate                               2.0.0.4    PSWindowsUpdate                                                                                                        
    Cmdlet          Remove-WUServiceManager                            2.0.0.4    PSWindowsUpdate                                                                                                        
    Cmdlet          Set-WUSettings                                     2.0.0.4    PSWindowsUpdate                                                                                                        
    Cmdlet          Update-WUModule                                    2.0.0.4    PSWindowsUpdate 
    

    I think I'm good to go

    0 讨论(0)
  • 2020-12-24 11:28

    Try this:

    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
    
    Install-PackageProvider NuGet -Force
    
    Set-PSRepository PSGallery -InstallationPolicy Trusted
    
    0 讨论(0)
  • 2020-12-24 11:38

    MSDocs state this for your scenario:

    In order to execute the first time, PackageManagement requires an internet connection to download the Nuget package provider. However, if your computer does not have an internet connection and you need to use the Nuget or PowerShellGet provider, you can download them on another computer and copy them to your target computer. Use the following steps to do this:

    1. Run Install-PackageProvider -Name NuGet -RequiredVersion 2.8.5.201 -Force to install the provider from a computer with an internet connection.

    2. After the install, you can find the provider installed in $env:ProgramFiles\PackageManagement\ReferenceAssemblies\\\<ProviderName\>\\\<ProviderVersion\> or $env:LOCALAPPDATA\PackageManagement\ProviderAssemblies\\\<ProviderName\>\\\<ProviderVersion\>.

    3. Place the folder, which in this case is the Nuget folder, in the corresponding location on your target computer. If your target computer is a Nano server, you need to run Install-PackageProvider from Nano Server to download the correct Nuget binaries.

    4. Restart PowerShell to auto-load the package provider. Alternatively, run Get-PackageProvider -ListAvailable to list all the package providers available on the computer. Then use Import-PackageProvider -Name NuGet -RequiredVersion 2.8.5.201 to import the provider to the current Windows PowerShell session.

    0 讨论(0)
  • 2020-12-24 11:41

    The provider is bundled with PowerShell>=6.0.

    If all you need is a way to install a package from a file, just grab the .msi installer for the latest version from the github releases page, copy it over to the machine, install it and use it.

    0 讨论(0)
  • 2020-12-24 11:51

    Although I've tried all the previous answers, only the following one worked out:

    1 - Open Powershell (as Admin)

    2 - Run:

    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
    

    3 - Run:

    Install-PackageProvider -Name NuGet
    

    The author is Niels Weistra: Microsoft Forum

    0 讨论(0)
提交回复
热议问题