当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 更新 Windows 上的 PowerShell 版本

作者:精品下载站 日期:2024-12-15 00:50:17 浏览:16 分类:玩电脑

更新 Windows 上的 PowerShell 版本


本文介绍如何将 Windows PowerShell 更新到最新版本 5.1 以及如何安装(升级)PowerShell Core 7.3。目前PowerShell有两个分支:

  • 经典的Windows PowerShell(最高版本为5.1,已不再开发);

  • 新的 PowerShell Core 平台(7.3 版现已推出)。

尽管 PowerShell 版本编号从 5.1 开始延续(6.0、6.1、7.0、7.1 等),但它们是两个不同的平台。因此,将单独介绍更新 Windows PowerShell 和 PowerShell Core。

PowerShell Core 7.x 是与经典 Windows PowerShell 最兼容的版本。这意味着您可以在 PowerShell Core 中轻松运行旧的 PS1 脚本文件和 cmdlet。

升级到 Windows PowerShell 5.1

从 Windows 10 和 Windows Server 2016 开始,所有版本均已默认安装 Windows PowerShell 5.1。

对于早期版本(Windows 7/8.1 和 Windows 2008 R2/2012),您必须手动升级到 PowerShell 5.1。例如,Windows Server 2012 R2 (Windows 8.1) 安装了 PowerShell 4.0。

让我们尝试在 Windows Server 2012 R2 中将 Windows PowerShell 版本升级到 5.1。

首先,检查当前的PowerShell版本(截图显示为PowerShell 4.0):

$PSVersionTable.PSVersion

[玩转系统] 更新 Windows 上的 PowerShell 版本

要将 PowerShell 版本升级到 5.1,请安装 Windows Management Framework 5.1,这需要 .NET Framework 4.5.2(或更高版本)。确保使用以下命令安装 .NET 4.5.2 或更高版本:

(Get-ItemProperty ‘HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full’ -Name Release).Release

[玩转系统] 更新 Windows 上的 PowerShell 版本

就我而言,发布版本

378675

表示已安装 .NET Framework 版本 4.5.1。因此,我必须下载并安装最新的 .NET Framework 4.8(以下是离线安装程序的链接:https://go.microsoft.com/fwlink/?linkid=2088631 —

ndp48-x86-x64-allos-enu.exe

)。

安装 .NET 4.8 包(您需要重新启动计算机):

[玩转系统] 更新 Windows 上的 PowerShell 版本

如果您在没有 .NET 4.5.2 的情况下安装 WMF 5.1,则某些 PowerShell 功能将不可用。

下载适用于 Windows Server 2012 R2 的 WMF 5.1

Win8.1AndW2K12R2-KB3191564-x64.msu

(https://go.microsoft.com/fwlink/?linkid=839516)。

从 MSU 文件安装 Windows Management Framework 5.1。

[玩转系统] 更新 Windows 上的 PowerShell 版本

重启服务器后,打开powershell.exe控制台并确保PowerShell版本已更新至5.1。

[玩转系统] 更新 Windows 上的 PowerShell 版本

如果您的Windows 7或Windows Server 2008 R2不受支持,您可以以相同的方式将PowerShell版本从2.0升级到5.1。首先,安装.Net Framework 4.5.2(或更高版本),然后安装WMF 5.1 (下载链接与Windows Server 2012 R2 的下载链接不同)。

如何安装或更新PowerShell Core 7?

PowerShell Core 是跨平台的,并且正在积极开发中(与 Windows PowerShell 5.1 不同)。实际上,PowerShell Core 是与经典 Windows PowerShell 一起安装在操作系统上的新平台。这意味着您无法从 PowerShell 5.1 升级到 PowerShell Core 7.3。 PowerShell 7.x 与 Windows PowerShell 5.1 分开(并行)安装在您的计算机上。

PowerShell Core 6.x 和 7.x 目前可用。建议您始终安装最新版本的 PowerShell(当前为 7.3),除非您需要与旧脚本的特殊兼容性。

在 Windows 10 和 11 上升级(安装)PowerShell Core 版本有多种方法:

  • 使用 PowerShell Core MSI 安装程序,可以从 GitHub 下载该安装程序;

  • 使用内置的Windows 10/11包管理器WinGet;

  • 使用微软商店。

接下来,我们以在 Windows 10 22H2 上将 PowerShell Core 更新到 7.3 的示例来了解所有这些方法。

使用 MSI 安装升级 PowerShell Core

如果您想使用MSI包安装PowerShell Core,请进入项目页面https://github.com/PowerShell/PowerShell并下载适合您操作系统版本的安装包。在撰写本文时,PowerShell 的最新版本是 v7.3.3,发布日期为 2023 年 2 月 24 日(例如,

PowerShell-7.3.3-win-x64.msi

或者

PowerShell-7.3.3-win-x86.msi

)。仅在生产环境中使用稳定版本或 LTS 版本。

[玩转系统] 更新 Windows 上的 PowerShell 版本

下载 MSI 文件并安装。

可以使用以下安装选项:

  • 将 PowerShell 添加到 Path 环境变量

  • 注册 Windows 事件日志记录清单(为 PowerShell 事件创建单独的事件查看器日志。

    %SystemRoot%\System32\Winevt\Logs\PowerShellCore%4Operational.evtx

  • 启用 PowerShell 远程处理(为 PowerShell 远程处理启用并配置 WinRM)

  • 将“在此处打开”上下文菜单添加到资源管理器

  • 为 PowerShell 文件添加“使用 PowerShell 7 运行”上下文菜单

[玩转系统] 更新 Windows 上的 PowerShell 版本

接下来,您可以通过 Windows Update/WSUS 启用 PowerShell Core 自动更新(见下文)。

[玩转系统] 更新 Windows 上的 PowerShell 版本

要在安静模式下使用 SCCM/MDT/脚本从 MSI 包安装 PowerShell Core,您可以使用带有以下参数的命令:

ADD_EXPLORER_CONTEXT_MENU_OPENPOWERSHELLADD_FILE_CONTEXT_MENU_RUNPOWERSHELLENABLE_PSREMOTINGREGISTER_MANIFESTADD_PATHDISABLE_TELEMETRYUSE_MU

- 使用 Microsoft Update 获取 PSCore 更新

ENABLE_MU

- 允许通过 Windows Update 更新 PowerShell Core

例如,静默安装的命令可能如下所示:

msiexec.exe /package PowerShell-7.3.3-win-x64.msi /quiet ADD_EXPLORER_CONTEXT_MENU_OPENPOWERSHELL=1 ENABLE_PSREMOTING=1 REGISTER_MANIFEST=1 ADD_PATH=1 ENABLE_MU=1 ADD_PATH=1

您可以直接从控制台升级 PowerShell。要安装或升级到最新版本的 PowerShell Core,请运行以下命令:

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

此命令从 GitHub 下载 PowerShell 7.3 MSI 文件,然后通过 MSI 安装程序开始安装。

[玩转系统] 更新 Windows 上的 PowerShell 版本

安装完成后,将出现 PowerShell Core (pwsh.exe) 窗口。检查 PowerShell 版本以确保其已更新到 PoSh 7.3.3。

[玩转系统] 更新 Windows 上的 PowerShell 版本

使用 WinGet 包管理器安装或更新 PowerShell Core

如果您安装了 WinGet 包管理器,则可以安装 PowerShell 版本或将其更新为最新命令:

winget install --id Microsoft.Powershell --source winget

或者,您可以安装特定版本的 PowerShell Core:

winget install --id=Microsoft.PowerShell -v "7.1.2" -e

如果您安装了 Chocolatey 包管理器,请使用以下命令(对于 5.1):

choco install powershell -y
choco upgrade powershell -y

或对于 PowerShell 7.x:

choco install pwsh -y
choco install pwsh -y

请注意不同版本的 PowerShell 的默认目录:

  • Windows PowerShell 5.1:

    $env:WINDIR\System32\WindowsPowerShell\v1.0
  • PowerShell 核心 6.x:

    $env:ProgramFiles\PowerShell
  • PowerShell 核心 7.x:

    $env:ProgramFiles\PowerShell

如果您的计算机上安装了 PowerShell 6.x,

$env:ProgramFiles\PowerShell

安装 PowerShell 7.3 时,该目录会自动删除。

请注意,PowerShell 可执行文件的名称已更改。在 PowerShell Core 中,它是 c:\Program Files\PowerShell \pwsh.exe。它在“开始”菜单中有自己的图标。

  • 要运行基于 .NET Framework 的 Windows PowerShell,

    powershell.exe

    使用命令

  • 要运行基于 .NET Core 的 PowerShell Core,请使用

    pwsh.exe

[玩转系统] 更新 Windows 上的 PowerShell 版本

这意味着您的计算机上安装了 Windows PowerShell 5.1 和 PowerShell Core 7.3。

[玩转系统] 更新 Windows 上的 PowerShell 版本

要查找设备上安装的 PowerShell 的版本和内部版本,您可以检查 pwsh.exe 文件的版本:

(Get-Command 'C:\Program Files\PowerShell\pwsh.exe').Version

[玩转系统] 更新 Windows 上的 PowerShell 版本

您可以通过以下方式检查远程计算机上文件的版本:

Invoke-Command -Computername computer1 -Scriptblock {(Get-Command 'C:\Program Files\PowerShell\pwsh.exe').Version}

Windows PowerShell 提供了一种特殊的向后兼容模式,即使您安装了较新版本,也允许您运行旧版本的 PowerShell。您可以使用以下命令运行特定版本的 PowerShell 示例(4.0):

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Version 4

通过 Microsoft Store 在 Windows 10 和 11 上安装 PowerShell Core

在 Windows 10 和 11 上,您可以通过 Microsoft Store 安装或更新 PowerShell。您可以在应用商店中手动查找 PowerShell 应用程序或使用此链接。

您还可以使用 WinGet 安装 PowerShell 的应用商店版本:

winget search powershell --source msstore
winget install --id 9MZ1SNWT0N5D

从 Microsoft Store 安装 PowerShell Core 的优点是,App Store 会自动检查您安装的 PowerShell 版本,并在更新可用时自动安装。

要验证您是否已安装 PowerShell Core 的应用商店版本,请使用以下命令:

Get-AppPackage Microsoft.PowerShell

本示例中安装了 Microsoft.PowerShell_7.3.3.0_x64__8wekyb3d8bbwe 软件包。

[玩转系统] 更新 Windows 上的 PowerShell 版本

然而,这样的 PowerShell 实例将在沙箱环境中运行也存在缺点。

[玩转系统] 更新 Windows 上的 PowerShell 版本

您可以下载 APPX/MSIX 应用程序文件并使用以下命令进行安装

Add-AppxPackage

cmdlet(或如“修复 Microsoft Store”一文中所述)。

在远程计算机上安装/更新 PowerShell Core

考虑在多台远程计算机上安装或更新 PowerShell Core 的两种方案。

使用组策略部署 PowerShell Core

您可以使用组策略在 Active Directory 域中集中部署和更新 PowerShell Core。使用 GPO 的功能将 MSI 包部署到域计算机。

  1. 下载PowerShell MSI安装文件并将其复制到域控制器上的SYSVOL目录;

  2. 打开域组策略管理控制台(

    gpmc.msc

    ),创建一个新的GPO并将其链接到具有计算机和服务器的OU;

  3. 进入GPO部分计算机配置 -> 软件设置,新建一个包,并指定域中SYSVOL文件夹中PowerShell MSI安装文件的路径(使用UNC路径);

    [玩转系统] 更新 Windows 上的 PowerShell 版本

    为了更准确地将策略定位到域设备,您可以使用 GPO WMI 筛选器。

  4. 要更新软件安装的组策略设置,您必须重新启动计算机。新版本的 PowerShell 将在启动时安装在所有计算机上。

如何从命令提示符更新远程计算机上的 PowerShell?

您可以使用命令行提示符更新远程计算机上的 PowerShell。

  • 第一种方法使用共享网络文件夹中的 MSI 安装程序来远程更新计算机上的 PowerShell:

    Invoke-Command -ComputerName mun-srv01 -ScriptBlock {Start-Process msiexec.exe -ArgumentList '/package "\mun-fs01\install\PowerShell-7.3.3-win-x64.msi" /quiet ADD_EXPLORER_CONTEXT_MENU_OPENPOWERSHELL=1 ENABLE_PSREMOTING=1 REGISTER_MANIFEST=1' -Wait}
  • 以下脚本从 Active Directory 域中选择所有运行 Windows 10 的已启用计算机,并开始在每台计算机上下载和安装 PowerShell Core:

    $ADComputers = Get-ADComputer -Filter 'operatingsystem -like "*Windows 10*" -and enabled -eq "true"'
    ForEach ($computer in $ADcomputers) {
    Invoke-Command -ComputerName $computer {iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI -Quiet"}
    }

    您必须在计算机上安装 Active Directory PowerShell 模块才能使用 GetADComputer cmdlet。

连接到远程计算机时使用 PowerShell Remoting 命令时要小心(使用

Enter-PSSession

Invoke-Command

cmdlet)。如果需要连接到 PowerShell 7 端点,则必须使用以下命令:

Enter-PSSession -ComputerName dc01 -ConfigurationName "powershell.7"

否则,您将连接到 PowerShell Remoting 5.1 端点。

在 Linux 发行版上更新 PowerShell Core 的最常见方法是使用本机包管理器。

通过 Windows Update 或 WSUS 更新 PowerShell

在 PowerShell Core 7.2 之前,pwsh.exe 不会自动更新。新版本发布后控制台只有一条通知:

A new PowerShell stable release is available. Upgrade now, or check out the release page at: https://aka.ms/PowerShell-Release?tag=v7.1.3

[玩转系统] 更新 Windows 上的 PowerShell 版本

从版本 7.2 开始,PowerShell Core 支持通过 Windows Update(Microsoft Update、Windows Update for Business、内部 WSUS 服务器或 SCCM)自动更新。为此,您必须在安装 MSI 软件包期间启用适当的选项。

  • 第一个允许 PowerShell 使用任何可用通道自动更新(在注册表中启用注册表参数 UseMU =1)

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShellCore

    钥匙)

    [玩转系统] 更新 Windows 上的 PowerShell 版本

  • 第二个复选框将允许您接收所有 Microsoft 软件的更新,而不仅仅是 Windows。如果禁用此选项,您将不会从 Microsoft Update 接收 PowerShell 更新,但可以从 WSUS/SCCM 接收更新(注册表参数 registeredwithAU=1

    HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Services71F918-A847-4430-9279-4A52D1EFE18D

    [玩转系统] 更新 Windows 上的 PowerShell 版本

检查“设置”->“更新和安全”->“Windows 更新”->“高级”选项下的更新 Windows 时接收其他 Microsoft 产品的更新选项是否已启用。

[玩转系统] 更新 Windows 上的 PowerShell 版本

管理员可以配置更新安装 通过组策略设置选项。

现在,当您单击检查更新按钮或通过 PSWindowsUpdate 模块运行更新扫描时,您还将收到 PowerShell Core 的更新。

[玩转系统] 更新 Windows 上的 PowerShell 版本

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯