将 powershell 更新到最新版本

saj*_*997 5 powershell

我在不同的机器上有两个不同的 PowerShell 版本。本地有以下一种:

主要的 次要的 建造 修订
5 1 17763 1007

虚拟机有以下一个:

主要的 次要的 建造 修订
5 1 17763 771

如您所见,它具有相同的:Major、Minor 和 Build 值,但 Revision 值除外。我不确定它是否是命令失败的原因:

Register-PSRepository -Name $RepoKeyName -SourceLocation $RepoKeyValue
    -PublishLocation $RepoKeyValue -InstallationPolicy Trusted -Verbose
Run Code Online (Sandbox Code Playgroud)

上面的代码片段在本地机器上可以正常工作,但在虚拟机上不能正常工作,并且在虚拟机中失败并出现以下错误:

parameter 'SourceLocation' is an invalid Web Uri. Please ensure that it meets the Web Uri requirements.

这就是我想将虚拟机中的 PowerShell 更新为最新修订值的原因。怎么做?

GaT*_*mas 53

如果您有 Microsoft 的winget应用程序(Windows 包管理器),则可以运行以下命令来更新到最新版本的 PowerShell:

winget install Microsoft.PowerShell
Run Code Online (Sandbox Code Playgroud)

  • 要从 7.1.5 更新到 PowerShell 7.2.0,我必须使用“winget 升级 PowerShell” (10认同)
  • 很高兴知道这一点,但要明确一点:这仅适用于 [_PowerShell (Core) 7+_](https://github.com/PowerShell/PowerShell/blob/master/README.md),即 install-on-需要跨平台 PowerShell 版本,而不是操作系统自带的仅限 Windows PowerShell 版本,该版本无法按需更新(只能通过 Windows 更新间接更新)。 (5认同)
  • 我必须明确声明“winget 升级 Microsoft.PowerShell”才能从 7.2.0 获取 7.2.1。 (2认同)

san*_*wal 30

如果您运行的是 Windows 11 或已更新 Windows 10 中的应用程序安装程序。

使用 Windows 包管理器 (winget) 更新 PowerShell

winget upgrade Microsoft.PowerShell
Run Code Online (Sandbox Code Playgroud)

您还可以通过 winget 使用以下命令安装 PowerShell

winget install Microsoft.PowerShell
Run Code Online (Sandbox Code Playgroud)

了解更多:


mkl*_*nt0 11

您永远无法按需更新Windows PowerShell安装-除非您升级到新的主要版本,但 v5.1 是最后发布的版本,因为 Windows PowerShell 仅处于维护状态与它的后继者跨平台PowerShell(核心)7+版本不同,没有新的开发[1]

\n

笔记:

\n
    \n
  • 虽然切换PowerShell(核心)版本[1] (所有未来的开发工作都将集中在该版本)通常是可取的,但这样做并不是随随便便就能完成的事情,需要经过深思熟虑的决定:\n
      \n
    • PowerShell(核心)大部分完全向后兼容Windows PowerShell,并且某些 cmdlet 不可用,除非通过在性能和类型保真度方面都有限制的兼容性功能。

      \n
    • \n
    • PowerShell(核心)Windows PowerShell一起安装,并具有不同的 CLIpwsh.exe而不是powershell.exe)和不同的 SDK(请参阅此答案);此外,通过 PowerShell远程处理定位PowerShell(核心)需要显式配置 - 请参阅此答案

      \n
    • \n
    \n
  • \n
\n
\n

Windows PowerShell特定注意事项:

\n

v5.1 的修订版作为Windows 更新的一部分提供。

\n

但是,您可以有选择地更新定义了引起问题的命令的PowerShellGet模块Register-PSRepository

\n

虽然您通常只运行Update-Module PowerShellGet,但第一次从捆绑模块切换到 PowerShell GalleryPowerShellGet的最新版本时需要采用不同的方法:

\n
    \n
  • 打开提升的会话(以管理员身份运行)。

    \n
  • \n
  • 执行以下命令(添加-Verbose以获取详细信息):

    \n
      Install-Module PowerShellGet -Force\n
    Run Code Online (Sandbox Code Playgroud)\n
  • \n
\n

-Force即使已经安装了同名的模块,也可以启用安装;您可能仍会看到有关下载 NuGet 包提供程序的提示。
\n请注意,旧PowerShellGet版本将停留在不同的位置,但新版本将优先于它。

\n

初次切换到图库安装的版本后,您将能够在以后的版本中使用
\n Update-Module PowerShellGet

\n
\n

您可以使用Get-Commandcmdlet 来发现给定命令的原始模块;例如:

\n
PS> (Get-Command Register-PSRepository).Module\n\nModuleType Version    PreRelease Name                                ExportedCommands\n---------- -------    ---------- ----                                ----------------\nScript     2.1.4                 PowerShellGet                       {Find-Command, Find-DscResource, Find-Module, Find-RoleCapability\xe2\x80\xa6}\n
Run Code Online (Sandbox Code Playgroud)\n
\n

[1] PowerShell (Core) 7+ 版本可以按需更新- 但是,从 v7.2.x 开始,PowerShell (Core)不随 Windows 一起提供最初需要手动安装。但是,您现在可以通过Microsoft Store应用程序安装和更新它,或者以编程方式使用winget.exe(它随App InstallerMicrosoft Store 应用程序一起提供,最新版本的 Windows附带):

\n\n

注意:用于Microsoft.PowerShell.Preview安装/升级最新预览版本。

\n


小智 9

从命令提示符运行以下命令,等待下载完成,它将提示安装向导,按照说明进行安装。

Invoke-Expression "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI"
Run Code Online (Sandbox Code Playgroud)