我正在尝试从Powershell命令行安装pswindowsupdate.2.0.0.4.nupkg
到一台没有连接到互联网的Win 7计算机上。我运行的是PS5.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的存储库进行交互。必须在'C:\Program \PackageManagement\ProviderAssemblies‘或’C:\ NuGet‘NuGet中提供NuGet提供程序。您还可以通过运行‘NuGet -MinimumVersion 2.8.5.201-Force’来安装-Name提供程序。您希望PowerShell现在安装和导入NuGet提供程序吗?
当然,说“是”不能安装NuGet提供商,因为我没有连接到互联网。
我获得了nuget.exe
(v4.7.0),将其存储在'C:\Program \PackageManagement\ProviderAssemblies‘中,并在我的path
语句中添加了'C:\Program \PackageManagement\ProviderAssemblies’。但是,执行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根本不涉及我的问题
发布于 2018-07-18 18:47:03
MSDocs为您的场景说明如下:
为了第一次执行,PackageManagement需要一个因特网连接来下载Nuget包提供程序。但是,如果您的计算机没有internet连接,并且需要使用Nuget或PowerShellGet提供程序,则可以在另一台计算机上下载它们并将它们复制到目标计算机上。使用以下步骤执行此操作:
Install-PackageProvider -Name NuGet -RequiredVersion 2.8.5.201 -Force
从具有internet连接的计算机安装提供程序。$env:ProgramFiles\PackageManagement\ReferenceAssemblies\\\<ProviderName\>\\\<ProviderVersion\>
或$env:LOCALAPPDATA\PackageManagement\ProviderAssemblies\\\<ProviderName\>\\\<ProviderVersion\>
中的提供程序。Get-PackageProvider -ListAvailable
列出计算机上可用的所有包提供程序。然后使用Import-PackageProvider -Name NuGet -RequiredVersion 2.8.5.201
将提供程序导入到当前的PowerShell会话。发布于 2020-04-07 10:45:07
尽管我尝试了前面的所有答案,但只有以下一个解决了问题:
1-开放Powershell (作为管理)
2-运行:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
3-运行:
Install-PackageProvider -Name NuGet
作者是Niels:微软论坛
发布于 2018-07-19 12:09:26
我接受了trebleCode的答案,但我想提供更多的细节,说明我在我的未连接的Win 7机器上安装nupkg的兴趣pswindowsupdate.2.0.0.4.nupkg
的步骤,方法是遵循trebleCode的答案。
首先:在仔细研究了一下之后,我想我找到了trebleCode所指的MS文档:
为了继续,正如trebleCode所说的,我做了以下工作
在我连接的机器上安装NuGet提供程序
在连接的机器(Win 10计算机)上,我从PS命令行运行Install-PackageProvider -Name NuGet -RequiredVersion 2.8.5.208 -Force
。Nuget软件是从网络中获得的,并安装在我的本地连接机器上。
安装之后,我在NuGet上找到了C:\Program Files\PackageManagement\ProviderAssemblies
提供程序(注意:相对于\ReferenceAssemblies
,文件夹名\ProviderAssemblies
是相对于trebleCode的答案的一个细微差别。
提供程序软件位于如下文件夹结构中:
C:\Program Files\PackageManagement\ProviderAssemblies
\NuGet
\2.8.5.208
\Microsoft.PackageManagement.NuGetProvider.dll
在我的未连接机器上安装NuGet提供程序
我将\NuGet文件夹(及其所有子文件夹)从连接的计算机复制到一个拇指驱动器上,并将其复制到我的未连接(Win 7)机器上的C:\Program Files\PackageManagement\ProviderAssemblies
中。
我在我的未连接(Win 7)机器上启动PS (v5),并运行Import-PackageProvider -Name NuGet -RequiredVersion 2.8.5.208
将提供程序导入到当前的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
安装pswindowsupdate支持的NuGet包
我在我的未连接的pswindowsupdate.2.0.0.4.nupkg
机器上获得nupkg pswindowsupdate.2.0.0.4.nupkg
并将其复制到c:\users\foo\Documents\PSRepository
上。
通过执行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
我想我可以走了
https://stackoverflow.com/questions/51406685
复制相似问题