将PowerShell更新为最新版本

pgky5nke  于 2022-11-10  发布在  Shell
关注(0)|答案(5)|浏览(1052)

我在不同的机器上有两个不同版本的PowerShell。本地的有以下几个:
主要|次要|内部版本|修订版本
-|-|
5|1|17763|1007
并且该虚拟机具有以下一个:
主要|次要|内部版本|修订版本
-|-|
5|1|17763|771
如您所见,它具有相同的值:主要值、次要值和构建值,但修订值除外。我不确定是否是命令失败的幕后黑手:

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更新为最新修订值的原因。怎么做呢?

pvcm50d1

pvcm50d11#

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

winget install Microsoft.PowerShell
7hiiyaii

7hiiyaii2#

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

使用Windows程序包管理器(Winget)更新PowerShell

winget upgrade Microsoft.PowerShell

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

winget install Microsoft.PowerShell

了解更多情况:

3gtaxfhh

3gtaxfhh3#

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

Invoke-Expression "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI"
gtlvzcf8

gtlvzcf84#

您永远不能按需更新Windows PowerShell安装-**除非在过去,如果您升级到新的主要版本,但5.1版是将发布的**最后一个版本,因为Windows PowerShell处于维护阶段-将不会看到新的开发,不同于它的继任者,跨平台的PowerShell (Core) 7+版本。[1]

注:

  • 虽然切换到PowerShell(Core)版本1是明智的,但通常情况下,这样做不是随意而是需要深思熟虑的决定*:
    PowerShell(Core)Windows PowerShell大部分,但不是完全向后兼容,并且某些cmdlet不可用,除非通过在性能和类型保真度方面都有限制的compatibility feature
    PowerShell(Core)Windows PowerShell一起安装,并具有不同的CLI(pwsh.exe而不是powershell.exe)和不同的SDK*(请参阅this answer);此外,通过PowerShell remoting瞄准*PowerShell(Core)*需要明确的配置-请参阅this answer

Windows PowerShell-特定注意事项:

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.2.x开始,PowerShell(Core)不支持Windows最初需要手动安装。但是,您现在可以通过Microsoft Store应用程序安装和更新它,或者以编程方式,使用winget.exe**(它随App Installer Microsoft Store应用程序一起提供,最新版本的Windows随附):

  • 初始安装:**
winget install Microsoft.PowerShell
  • 后续升级:**
winget upgrade Microsoft.PowerShell

注:请使用Microsoft.PowerShell.Preview安装/升级最新的PREVIEW版本。

z31licg0

z31licg05#

**解决方案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 Upgrade Microsoft.PowerShell

要找出您的PowerShell版本:在您的PowerShell中执行host命令。

相关问题