如果你运行的是 PowerShell 6.0 或更高版本,说明你已经安装了更新版 的 PowerShellGet 和 PackageManagement 。 你应该确保你运行的是这些模块的最新版本。
如果你用的是PowerShell 7.4或更高版本,你还安装了 Microsoft.PowerShell.PSResourceGet 。 Microsoft.PowerShell.PSResourceGet 是 PowerShell 的新包管理解决方案。 有了这个模块,你就不需要再使用 PowerShellGet 和 PackageManagement。 它是与现有 的PowerShellGet 和 PackageManagement 模块并排安装的。
Windows PowerShell 自带 PowerShellGet 和 PackageManagement 版本 1.0.0.1。 如果你运行的是 Windows PowerShell 5.1,必须升级到最新版本的 PowerShellGet 和 PackageManagement。 PowerShellGet v1.x 的所有版本均已不再支持。
请按照以下说明安装或更新到这些模块的最新版本。
步骤1:启用TLS 1.2
要访问PowerShell画廊,您必须使用传输层安全(TLS)1.2或更高版本。 请使用以下命令在你的PowerShell会话中启用TLS 1.2。
[Net.ServicePointManager]::SecurityProtocol =
[Net.ServicePointManager]::SecurityProtocol -bor
[Net.SecurityProtocolType]::Tls12
将此命令添加到你的PowerShell配置文件脚本中,确保每个PowerShell会话都配置TLS 1.2。 有关配置文件的详细信息,请参阅 about_Profiles。
步骤2:检查已安装的版本
要检查当前安装的模块版本,请执行以下命令:
$Names = @('PowerShellGet', 'PackageManagement', 'Microsoft.PowerShell.PSResourceGet')
Get-Module -Name $Names -ListAvailable
在新安装的Windows系统上运行Windows PowerShell 5.1时,你应该会得到以下输出:
Directory: C:\Program Files\WindowsPowerShell\Modules
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Binary 1.0.0.1 PackageManagement {Find-Package, Get-Package, ...
Script 1.0.0.1 PowerShellGet {Install-Module, Find-Module, ...
如果 PowerShellGet 版本比 1.0.0.1 它更新,你可以 检查更新 并 安装最新版本。
如果你仍在运行版本 1.0.0.1,必须按照步骤让 PowerShellGet 安装更新后的NuGet提供者和 nuget.exe 命令行工具。 继续执行下一步。
步骤3:检查更新
要检查PowerShell画廊中模块的最新版本,请执行以下命令:
$Names = @('PowerShellGet', 'PackageManagement', 'Microsoft.PowerShell.PSResourceGet')
Find-Module -Name $Names -Repository PSGallery
你应该得到类似以下结果的结果:
Version Name Repository Description
------- ---- ---------- -----------
1.4.8.1 PackageManagement PSGallery PackageManagement (a.k.a. OneGet) is a n…
2.2.5 PowerShellGet PSGallery PowerShell module with commands for disc…
1.1.1 Microsoft.PowerShell.PSResourceGet PSGallery PowerShell module with commands for disc…
步骤4:更新NuGet组件(如有需要)
PowerShellGet 命令要求更新后的 NuGet 提供者才能与 PowerShell 画廊协作。 这些 Publish-* 命令用于使用 nuget.exe 或 dotnet.exe 发布资源。 如果这两个工具都不可用,PowerShellGet 安装 nuget.exe。 如果你还在运行PowerShellGet版本1.0.0.1,它Find-Module会提示你安装NuGet提供者。 输入 Y 来安装该服务提供者。
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.
当你回答 Y时,PowerShellGet会安装NuGet提供者和 nuget.exe 命令行工具(如有必要)。
步骤5:安装最新版本
要安装这些模块的最新版本,请执行以下作:
Install-Module PowerShellGet -Repository PSGallery -Force -AllowClobber
Install-Module Microsoft.PowerShell.PSResourceGet -Repository PSGallery
注释
安装 PowerShellGet时,它会自动安装最新版本 的PackageManagement。