我正在尝试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完全不涉及我的问题
我接受了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
在未连接的计算机上安装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
在未连接的计算机上创建本地存储库
在未连接(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.nupkg
到c:\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.
我通过执行安装模块 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
我想我很好
MSDocs针对您的情况说明了这一点:
为了第一次执行,PackageManagement需要Internet连接才能下载Nuget软件包提供程序。但是,如果您的计算机没有Internet连接,并且需要使用Nuget或PowerShellGet提供程序,则可以将它们下载到另一台计算机上,然后将它们复制到目标计算机上。使用以下步骤执行此操作:
运行Install-PackageProvider -Name NuGet -RequiredVersion 2.8.5.201 -Force从具有Internet连接的计算机上安装提供程序。
安装后,您可以在$ env:ProgramFiles \ PackageManagement \ ReferenceAssemblies \\\\或$ env:LOCALAPPDATA \ PackageManagement \ ProviderAssemblies \\\\中找到安装的提供程序。
将文件夹(在本例中为Nuget文件夹)放置在目标计算机上的相应位置。如果目标计算机是Nano服务器,则需要从Nano Server运行Install-PackageProvider来下载正确的Nuget二进制文件。
重新启动PowerShell以自动加载程序包提供程序。或者,运行Get-PackageProvider -ListAvailable列出计算机上所有可用的软件包提供程序。然后,使用Import-PackageProvider -Name NuGet -RequiredVersion 2.8.5.201将提供程序导入当前的Windows PowerShell会话。