我想更新机器的电源外壳版本。可以通过命令行完成吗?
我现在的需求是在 Windows Server 2012R2 上从 PS 4 更新到 PS 5。
我猜想没有一个万能的解决方案可以解决所有 Windows 版本和 PS 版本的问题,而且还存在一些其他问题,例如PS4 需要 Dotnet4.5因此,让我们尽可能简化这个问题,就像上面的前两句话一样。
答案1
运行此命令:
iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI"
然后使用您的参数运行 MSI。
此后您需要更新模块。
或安静模式
iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI -Quiet"
参考:
https://www.thomasmaurer.ch/2019/03/how-to-install-and-update-powershell-6/
https://www.thomasmaurer.ch/2019/02/update-powershellget-and-packagemanagement/
答案2
以管理员身份打开 Powershell 并输入以下命令:
iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI"
如果要更新到最新预览版,请-Preview
在末尾添加参数:
iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI -Preview"
答案3
我不认为它可以与 PS5 兼容,但对于 Windows 10 和 PS 7+,你可以轻松升级
winget upgrade powershell
并且可以从 powershell 内部执行此操作。
答案4
您必须编写自己的脚本才能执行此操作。没有任何预先编写的脚本可以为您执行此操作而无需您付出任何努力。从网络下载和安装文件是一种非常常见的做法。网上有很多关于如何执行此操作的说明和视频。
翻译:
- 您必须转到 Alexandr 指向您的 URL。
- 单击下载,进入下一页,获取直接 URL 并保存该链接。
- 然后使用 PowerShell Web 命令下载该文件
- 然后使用 cmdlet 开始安装或静默安装。
网络上有许多关于如何从网络上下载文件的示例。甚至还有预先构建的示例,您可以查看并根据自己的努力进行调整。
将 MS PowerShell 库视为您的起点。
或者查看 PowerShell 内置和在线帮助中的示例。
# Get parameters, examples, full and Online help for a cmdlet or function
(Get-Command -Name Invoke-WebRequest).Parameters
Get-help -Name Invoke-WebRequest -Examples
Get-help -Name Invoke-WebRequest -Full
Get-help -Name Invoke-WebRequest -Online
(Get-Command -Name Invoke-Command).Parameters
Get-help -Name Invoke-Command -Examples
Get-help -Name Invoke-Command -Full
Get-help -Name Invoke-Command -Online
(Get-Command -Name Start-Process).Parameters
Get-help -Name Start-Process -Examples
Get-help -Name Start-Process -Full
Get-help -Name Start-Process -Online
更新
OP 特别要求...
我现在的需求是在 Windows Server 2012R2 上从 PS 4 更新到 PS 5。
...,而不是 PowerShell Core。
虽然更改为另一个可以接受的答案是可以的,而且我来这里不只是为了收集积分,但是“Ariel D”这个答案对于 Windows PowerShell 更新无效。
正如他在参考文章中指出的那样,该命令适用于 PowerShell Core(PSv6 及更高版本)。该命令不会将 PSv4 更新为 PSv5。它将直接安装/更新 PowerShell Core 到最新版本。
Windows PowerShell 需要完整的 .Net,而 PSCore 仅需要 .Net core。该命令将安装最新版本的 PowerShell Core,并且不会升级或替换 Windows PowerShell。
另外要运行 PowerShell 核心,其可执行文件是执行程序, 不是执行程序。此安装不会将您的 Windows PowerShell 快捷方式、菜单选项等全部更改为 PowerShell Core。它将为其创建一个新的图标/快捷方式,保留所有默认的 Windows PowerShell 图标/快捷方式/设置等。
制作普什作为您的默认设置,您必须进行一些 Windows 菜单和注册表修改。
Windows PowerShell 和 PSCore 是两个独立的环境,旨在并行运行并且 PSCore 尚未与 Windows PowerShell 完全兼容。
最后,根据您在 Windows PowerShell 脚本 5x 及以下版本中执行的操作,由于向后兼容性,这些操作可能根本无法在 PowerShell Core 中运行。因此,您需要重构/重写它们。
例如,在安装了 WinPS 和 PSCore 的 Windows 上,Get-WmiObject 仍将作为 cmdlet 出现,但在 PowerShell Core 中,该操作将失败,因为 PowerShell Core 不支持这些 cmdlet。
例子:
$PSVersionTable.PSVersion
Major Minor Patch PreReleaseLabel BuildLabel
----- ----- ----- --------------- ----------
7 0 2
Get-Command -Name '*WMI*' | Format-Table -AutoSize
CommandType Name Version Source
----------- ---- ------- ------
Function Get-WmiClassKeyProperty 1.3.6 PowerShellCookbook
Function Search-WmiNamespace 1.3.6 PowerShellCookbook
Cmdlet Get-WmiObject 3.1.0.0 Microsoft.PowerShell.Management
Cmdlet Invoke-WmiMethod 3.1.0.0 Microsoft.PowerShell.Management
Cmdlet Register-WmiEvent 3.1.0.0 Microsoft.PowerShell.Management
Cmdlet Remove-WmiObject 3.1.0.0 Microsoft.PowerShell.Management
Cmdlet Set-WmiInstance 3.1.0.0 Microsoft.PowerShell.Management
Application nvwmi64.exe 0.0.0.0 C:\Windows\system32\nvwmi64.exe
Application WMIADAP.exe 10.0.18362.1 C:\Windows\System32\Wbem\WMIADAP.exe
Application WmiApSrv.exe 10.0.18362.1 C:\Windows\System32\Wbem\WmiApSrv.exe
Application WMIC.exe 10.0.18362.1 C:\Windows\System32\Wbem\WMIC.exe
Application WmiMgmt.msc 0.0.0.0 C:\Windows\system32\WmiMgmt.msc
Application WmiPrvSE.exe 10.0.18362.1 C:\Windows\System32\Wbem\WmiPrvSE.exe
Get-WmiObject -class Win32_OperatingSystem | Select-Object -Property Caption
Get-WmiObject: The term 'Get-WmiObject' is not recognized as the name of a cmdlet, function, script file, or operable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
Get-CimInstance -ClassName Win32_OperatingSystem | Select-Object -Property Caption
Caption
-------
Microsoft Windows 10 Pro
此外,您在 Windows PowerShell 中习惯使用的某些别名在 PowerShell Core 中也不存在。
例如:
Windows PowerShell
$PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
5 1 18362 752
Get-Alias -Definition Invoke-WebRequest
CommandType Name Version Source
----------- ---- ------- ------
Alias curl -> Invoke-WebRequest
Alias iwr -> Invoke-WebRequest
Alias wget -> Invoke-WebRequest
Get-Alias -Name curl
CommandType Name Version Source
----------- ---- ------- ------
Alias curl -> Invoke-WebRequest
PowerShell 核心
$PSVersionTable.PSVersion
Major Minor Patch PreReleaseLabel BuildLabel
----- ----- ----- --------------- ----------
7 0 2
Get-Alias -Definition Invoke-WebRequest
CommandType Name Version Source
----------- ---- ------- ------
Alias iwr -> Invoke-WebRequest
Get-Alias -Name curl
Get-Alias: This command cannot find a matching alias because an alias with the name 'curl' does not exist.
Get-Command -Name 'curl'
CommandType Name Version Source
----------- ---- ------- ------
Application curl.exe 7.55.1.0 C:\Windows\system32\curl.exe