提问人:sajis997 提问时间:3/4/2020 最后编辑:Tonisajis997 更新时间:11/8/2022 访问量:79780
将 powershell 更新到最新版本
Update powershell to the latest revision
问:
我在不同的机器上有两个不同的 PowerShell 版本。本地的有以下一个:
主要 | 次要 | 建 | 校订 |
---|---|---|---|
5 | 1 | 17763 | 1007 |
虚拟机具有以下一个:
主要 | 次要 | 建 | 校订 |
---|---|---|---|
5 | 1 | 17763 | 771 |
如您所见,它具有相同的值:Major、Minor 和 Build 值,但 Revision 值除外。我不确定它是否是命令失败的幕后黑手:
Register-PSRepository -Name $RepoKeyName -SourceLocation $RepoKeyValue
-PublishLocation $RepoKeyValue -InstallationPolicy Trusted -Verbose
上面的代码片段在本地计算机上工作正常,但在虚拟机上工作不正常,并且在虚拟机中失败,并出现以下错误:
parameter 'SourceLocation' is an invalid Web Uri. Please ensure that it meets the Web Uri requirements.
这就是为什么我想将虚拟机中的 PowerShell 更新为最新的修订值。怎么做?
答:
您永远无法按需更新 Windows PowerShell 安装 - 除非在过去升级到新的主要版本,但 v5.1 是将要发布的最后一个版本,因为 Windows PowerShell 仅处于维护阶段,不会看到新的开发,这与它的继任者跨平台 PowerShell (Core) 7+ 版本不同。[1]
注意:
- 虽然切换到 PowerShell (Core) 版本[1](所有未来的开发工作都将用于此)通常是可取的,但这样做不是随便就能完成的,需要深思熟虑的决定:
特定于 Windows PowerShell 的注意事项:
v5.1 的修订版作为 Windows 更新的一部分提供。
但是,你可以有选择地更新 PowerShellGet
模块,其中定义了导致问题的 Register-PSRepository
命令:
虽然通常只运行 ,但从捆绑模块切换到 PowerShell 库中的最新版本时,第一次需要采用不同的方法:Update-Module PowerShellGet
PowerShellGet
打开提升的会话(以管理员身份运行)。
执行以下命令(添加以获取详细信息):
-Verbose
Install-Module PowerShellGet -Force
-Force
是启用安装,即使已经安装了具有该名称的模块;你可能仍会看到有关下载 NuGet 包提供程序的提示。
请注意,旧的 PowerShellGet
版本将停留在不同的位置,但新版本将优先于它。
初始切换到库安装的版本后,你将能够用于
将来的版本。Update-Module PowerShellGet
可以使用 Get-Command
cmdlet 发现给定命令的源模块;例如:
PS> (Get-Command Register-PSRepository).Module
ModuleType Version PreRelease Name ExportedCommands
---------- ------- ---------- ---- ----------------
Script 2.1.4 PowerShellGet {Find-Command, Find-DscResource, Find-Module, Find-RoleCapability…}
[1] PowerShell (Core) 7+ 版本可以按需更新 - 但是,从 v7.2.x 开始,PowerShell (Core) 不附带 Windows,最初需要手动安装。但是,您现在可以通过 Microsoft Store 应用程序安装和更新它,或者以编程方式使用 winget.exe
(随 Microsoft Store 应用程序一起提供,最新版本的 Windows 附带):App Installer
初始安装:
winget install Microsoft.PowerShell
后期升级:
winget upgrade Microsoft.PowerShell
注意:用于安装/升级最新的预览版本。Microsoft.PowerShell.Preview
评论
winget install Microsoft.PowerShell
$PSVersionTable
5.1.19041.revision
winget.exe
如果你有 Microsoft 的 winget 应用(Windows 包管理器),则可以运行以下命令以更新到最新版本的 PowerShell:
winget install Microsoft.PowerShell
评论
winget upgrade PowerShell
winget upgrade Microsoft.PowerShell
从命令提示符运行以下命令,等待下载,它将提示安装向导按照说明进行安装。
Invoke-Expression "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI"
评论
如果你运行的是 Windows 11 或已在 Windows 10 中更新了应用安装程序。
使用 Windows 程序包管理器 (winget) 更新 PowerShell
winget upgrade Microsoft.PowerShell
您还可以通过 winget 使用以下命令安装 PowerShell
winget install Microsoft.PowerShell
了解更多信息:
评论
winget install Microsoft.PowerShell
winget upgrade
解决方案1:转到此链接:
https://github.com/PowerShell/PowerShell/releases/
找到“资产”,然后单击“资产”字。
下载并安装 .msi 链接。
解决方案2:
转到此链接下载 Windows 程序包管理器:
https://github.com/microsoft/winget-cli/releases
找到“资产”,然后单击“资产”字。
下载 : Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle
执行下载的文件,然后单击更新。
打开命令提示符或 powershell 并在其上执行以下命令:
winget 安装 Microsoft.PowerShell
如果您有 Mircrosoft.PowerShell,请执行以下命令:
winget 升级 Microsoft.PowerShell
要确定您的 powershell 版本:在 powershell 中执行主机命令。
评论