如何在未连接的计算机上安装适用于PowerShell的Nuget提供程序,以便可以从PS命令行安装nuget软件包?

Nov*_*Eng 9 powershell nuget

我正在尝试pswindowsupdate.2.0.0.4.nupkg通过Powershell命令行在未连接到Internet的Win 7计算机上进行安装。我正在运行PS 5.1.14409.1005。我从https://www.preview.powershellgallery.com/packages/PSWindowsUpdate/2.0.0.4获得了nupkg

PS命令Install-Module -Name pswindowsupdate.2.0.0.4.nupkg -Repository {path to pswindowsupdate.2.0.0.4.nupkg}将引发错误消息:

PowerShellGet需要NuGet提供程序版本“ 2.8.5.201”或更高版本才能与基于NuGet的存储库进行交互。NuGet提供程序必须在“ C:\ Program Files \ PackageManagement \ ProviderAssemblies”或“ C:\ Users {我的登录名} \ AppData \ Local \ PackageManagement \ ProviderAssemblies”中可用。您也可以通过运行“ Install-PackageProvider-名称NuGet -MinimumVersion 2.8.5.201 -Force”来安装NuGet提供程序。您是否希望PowerShell现在安装和导入NuGet提供程序?

当然,说“是”无法安装NuGet提供程序,因为我没有连接到互联网。

我获得了nuget.exe(v4.7.0),将其存储在“ C:\ Program Files \ PackageManagement \ ProviderAssemblies”中,并将“ C:\ Program Files \ PackageManagement \ ProviderAssemblies”添加到我的path语句中。但是,执行Install-Module -Name pswindowsupdate.2.0.0.4.nupkg -Repository {path to pswindowsupdate.2.0.0.4.nupkg}仍然失败。

究竟是什么NuGet provider?仅仅是nuget.exe吗?如何获取和安装PowerShell的Nuget提供程序(v2.8.5.201或更高版本),以便可以从PowerShell命令行安装此nuget软件包?

注意:Visual Studio完全不涉及我的问题

Lui*_*eia 98

虽然我已经尝试了所有以前的答案,但只有以下一个解决了:

1 - 打开 Powershell(以管理员身份)

2 - 运行:

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Run Code Online (Sandbox Code Playgroud)

3 - 运行:

Install-PackageProvider -Name NuGet
Run Code Online (Sandbox Code Playgroud)

作者是 Niels Weistra: 微软论坛

  • 我认为这应该是*解决方案。 (8认同)
  • 解决了我有互联网连接但安装包仍然抱怨连接问题的问题 (6认同)
  • 由于某种原因,Microsoft 没有将该存储库更新为更好的 SSL 版本,因此我在使用命令 2 允许降级 TLS 版本之前收到错误。谢谢你的提示! (5认同)
  • 如果系统上启用了 FIPS,也会引发错误 (2认同)

Nov*_*Eng 16

我接受了trebleCode的答案,但是我想通过遵循trebleCode的答案,提供更多有关在pswindowsupdate.2.0.0.4.nupkg未连接的Win 7机器上安装感兴趣的nupkg的步骤的详细信息。

首先:经过一番挖掘,我认为我找到了trebleCode所指的MS文档:

引导NuGet提供程序和NuGet.exe

Install-PackageProvider

如trebleCode所述,继续进行以下操作

在连接的计算机上安装NuGet提供程序

在连接的计算机(Win 10计算机)上,从PS命令行运行Install-PackageProvider -Name NuGet -RequiredVersion 2.8.5.201 -Force。Nuget软件是从'Net获得的,并安装在我本地连接的计算机上。

安装后,我在C:\Program Files\PackageManagement\ProviderAssemblies(找到:NuGet提供程序软件,位于(注意:文件夹名称与trebleCode的答案\ProviderAssemblies相比,\ReferenceAssemblies是一个较小的差异)。

提供程序软件的文件夹结构如下:

C:\Program Files\PackageManagement\ProviderAssemblies
   \NuGet
      \2.8.5.208
         \Microsoft.PackageManagement.NuGetProvider.dll
Run Code Online (Sandbox Code Playgroud)

在未连接的计算机上安装NuGet提供程序

我将\ NuGet文件夹(及其所有子文件夹)从已连接的计算机复制到了拇指驱动器上,并将其复制到C:\Program Files\PackageManagement\ProviderAssemblies了未连接的(Win 7)计算机上

我在未连接的(Win 7)计算机上启动了PS(v5),然后运行Import-PackageProvider -Name NuGet -RequiredVersion 2.8.5.201以将提供程序导入当前PowerShell会话。

我跑去Get-PackageProvider -ListAvailable看了(NuGet出现在以前不存在的地方):

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
Run Code Online (Sandbox Code Playgroud)

在未连接的计算机上创建本地存储库

在未连接(Win 7)的计算机上,我创建了一个文件夹用作PS存储库(例如c:\users\foo\Documents\PSRepository

我注册了该仓库: Register-PSRepository -Name fooPsRepository -SourceLocation c:\users\foo\Documents\PSRepository -InstallationPolicy Trusted

安装NuGet软件包

我获得了nupkg并将其复制pswindowsupdate.2.0.0.4.nupkgc:\users\foo\Documents\PSRepository未连接的Win7机器上

我通过执行了解了模块的名称 Find-Module -Repository fooPsRepository

Version    Name                                Repository           Description                                                                                                                      
-------    ----                                ----------           -----------                                                                                                                      
2.0.0.4    PSWindowsUpdate                     fooPsRepository      This module contain functions to manage Windows Update Client.
Run Code Online (Sandbox Code Playgroud)

我通过执行安装模块 Install-Module -Name pswindowsupdate

我通过执行验证了安装的模块 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 
Run Code Online (Sandbox Code Playgroud)

我想我很好


tre*_*ode 5

MSDocs针对您的情况说明了这一点:

为了第一次执行,PackageManagement需要Internet连接才能下载Nuget软件包提供程序。但是,如果您的计算机没有Internet连接,并且需要使用Nuget或PowerShellGet提供程序,则可以将它们下载到另一台计算机上,然后将它们复制到目标计算机上。使用以下步骤执行此操作:

  1. 运行Install-PackageProvider -Name NuGet -RequiredVersion 2.8.5.201 -Force从具有Internet连接的计算机上安装提供程序。

  2. 安装后,您可以在$ env:ProgramFiles \ PackageManagement \ ReferenceAssemblies \\\\或$ env:LOCALAPPDATA \ PackageManagement \ ProviderAssemblies \\\\中找到安装的提供程序。

  3. 将文件夹(在本例中为Nuget文件夹)放置在目标计算机上的相应位置。如果目标计算机是Nano服务器,则需要从Nano Server运行Install-PackageProvider来下载正确的Nuget二进制文件。

  4. 重新启动PowerShell以自动加载程序包提供程序。或者,运行Get-PackageProvider -ListAvailable列出计算机上所有可用的软件包提供程序。然后,使用Import-PackageProvider -Name NuGet -RequiredVersion 2.8.5.201将提供程序导入当前的Windows PowerShell会话。

  • 我面临同样的问题并按照您的步骤操作,但对于步骤 4,当我执行 Get-PackageProvider -ListAvailable 时,nuget 仍然不显示。C:\Program Files\PackageManagement\ProviderAssemblies\nuget\2.8.5.201 存在,但似乎根本无法使用 Nuget。 (2认同)

mel*_*ous 5

尝试这个:

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

Install-PackageProvider NuGet -Force

Set-PSRepository PSGallery -InstallationPolicy Trusted
Run Code Online (Sandbox Code Playgroud)