【问题标题】:Update powershell to the latest revision将 powershell 更新到最新版本
【发布时间】:2020-06-16 20:47:29
【问题描述】:

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

Major Minor Build Revision
5 1 17763 1007

而虚拟机有以下一个:

Major Minor Build Revision
5 1 17763 771

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

Register-PSRepository -Name $RepoKeyName -SourceLocation $RepoKeyValue
    -PublishLocation $RepoKeyValue -InstallationPolicy Trusted -Verbose

上面的sn-p在本地机器上工作正常,但在虚拟机上不行,在虚拟机上失败,出现以下错误:

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

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

【问题讨论】:

  • 如果您的问题尚未得到完全解答,请考虑 accepting 提供答案或提供反馈。

标签: powershell


【解决方案1】:

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

winget install Microsoft.PowerShell

【讨论】:

  • 很高兴知道这一点,但要明确一点:这仅适用于 PowerShell (Core) 7+,即按需安装的跨平台 PowerShell 版本,不适用于仅 Windows 自带的操作系统Windows PowerShell 版本,无法按需更新(只能通过 Windows 更新间接更新)。
  • 要从 7.1.5 更新到 PowerShell 7.2.0,我必须使用 winget upgrade PowerShell
  • 这对我很有用,谢谢
  • 我必须明确声明 winget upgrade Microsoft.PowerShell 才能从 7.2.0 获取 7.2.1。
【解决方案2】:

调用表达式 "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI"

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

【讨论】:

  • 我很好奇 iex 代表什么(Invoke-Expression)。现在我知道了。
【解决方案3】:
如果您运行的是 Windows 11 或已在 Windows 10 中更新了应用安装程序。

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

winget upgrade Microsoft.PowerShell

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

winget install Microsoft.PowerShell

了解更多:

【讨论】:

    【解决方案4】:

    您永远无法更新 Windows PowerShell 安装按需 - 在过去,如果您升级到新的major 版本,但 v5.1 是 最后一个 将发布的版本,因为 Windows PowerShell 处于维护阶段,不会有新的开发,不像它的继任者,跨平台的PowerShell (Core) 7+ 版本。[1]

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

    但是,您可以选择性地更新PowerShellGet module,其中定义了导致问题的Register-PSRepository 命令:

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

    • 打开一个提升会话(以管理员身份运行)。

    • 执行以下(添加-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.1 开始,PowerShell [Core] 不支持t 随 Windows 提供,需要手动安装。不过,您现在可以通过 Microsoft Store 应用程序安装和更新它。

    【讨论】:

      【解决方案5】:

      解决方案 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 中执行 host 命令。

      【讨论】:

        【解决方案6】:

        忘记喧嚣和戏剧性:

        iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI -Quiet"
        

        以管理员身份将其放入 PowerShell。

        【讨论】:

        • 我不确定您的原始答案为何被删除,但如果您要重新发布被 版主 删除的答案(黑色菱形表示)那么在这样做之前改进你的答案可能是一个好主意。我不确定为什么你的答案首先被删除,但此时它实际上是@Suresh B B's answer 的副本。 (Suresh 不使用-Quiet 标志,但这显然不会影响功能。)请不要发布重复的答案。
        • 您之前的回答已被删除,因为您请求 PayPal 捐款。唯一的噪音和戏剧来自你。祝你有美好的一天。
        猜你喜欢
        • 2019-08-12
        • 1970-01-01
        • 1970-01-01
        • 2017-09-01
        • 2020-06-03
        • 2018-12-04
        • 2016-03-06
        • 2018-03-25
        • 2013-07-12
        相关资源
        最近更新 更多