Поиск по сайту:

Обновление версии PowerShell в Windows


В этой статье описывается, как обновить 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. Это означает, что вы можете легко запускать старые файлы сценариев и командлеты PS1 в PowerShell Core.

Обновление до Windows PowerShell 5.1

Windows PowerShell 5.1 уже установлен по умолчанию во всех версиях, начиная с Windows 10 и Windows Server 2016.

Вам необходимо вручную выполнить обновление до PowerShell 5.1 для более ранних версий (Windows 7/8.1 и Windows 2008 R2/2012). Например, в Windows Server 2012 R2 (Windows 8.1) установлен PowerShell 4.0.

Давайте попробуем обновить версию Windows PowerShell до 5.1 в Windows Server 2012 R2.

Сначала проверьте текущую версию PowerShell (на скриншоте видно, что это PowerShell 4.0):

$PSVersionTable.PSVersion

Чтобы обновить версию 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

В моем случае релизная версия

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 (вам потребуется перезагрузить компьютер):

Если вы установите WMF 5.1 без .NET 4.5.2, некоторые функции PowerShell будут недоступны.

Загрузите WMF 5.1 для Windows Server 2012 R2 —

Win8.1AndW2K12R2-KB3191564-x64.msu

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

Установите Windows Management Framework 5.1 из файла MSU.

После перезагрузки сервера откройте консоль powershell.exe и убедитесь, что версия PowerShell обновлена до 5.1.

Если у вас неподдерживаемая 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), если вам не нужна особая совместимость с устаревшими сценариями.

Существует несколько способов обновить (установить) версию PowerShell Core в Windows 10 и 11:

  • Используйте установщик PowerShell Core MSI, который можно загрузить с GitHub;

  • Использование встроенного менеджера пакетов Windows 10/11 WinGet;

  • Использование Магазина Microsoft.

Далее на примере обновления PowerShell Core до версии 7.3 на Windows 10 22H2 мы рассмотрим все эти методы.

Обновление ядра PowerShell с помощью установки MSI

Если вы хотите установить PowerShell Core с помощью пакета MSI, перейдите на страницу проекта https://github.com/PowerShell/PowerShell и загрузите установочный пакет для вашей версии ОС. На момент написания последней версией PowerShell была v7.3.3, датированная 24 февраля 2023 г. (например,

PowerShell-7.3.3-win-x64.msi

или

PowerShell-7.3.3-win-x86.msi

). Используйте только стабильные или LTS-версии для производственной среды.

Загрузите файл MSI и установите его.

Доступны следующие варианты установки:

  • Добавьте PowerShell в переменную среды Path

  • Зарегистрируйте манифест регистрации событий Windows (для событий PowerShell создается отдельный журнал просмотра событий).

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

    )

  • Включить удаленное взаимодействие PowerShell (включает и настраивает WinRM для удаленного взаимодействия PowerShell)

  • Добавьте контекстное меню «Открыть здесь» в Проводник.

  • Добавить контекстное меню «Выполнить с PowerShell 7» для файлов PowerShell.

Затем вы можете включить автоматическое обновление ядра PowerShell через Центр обновления Windows/WSUS (см. ниже).

Чтобы установить PowerShell Core из пакета MSI с использованием SCCM/MDT/скриптов в тихом режиме, вы можете использовать команду со следующими параметрами:

ADD_EXPLORER_CONTEXT_MENU_OPENPOWERSHELL
ADD_FILE_CONTEXT_MENU_RUNPOWERSHELL
ENABLE_PSREMOTING
REGISTER_MANIFEST
ADD_PATH
DISABLE_TELEMETRY
USE_MU

- используйте Центр обновления Microsoft для получения обновлений PSCore.

ENABLE_MU

- разрешить обновление ядра PowerShell через Центр обновления Windows.

Например, команда для автоматической установки может выглядеть примерно так:

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"

Эта команда загружает MSI-файл PowerShell 7.3 с GitHub, а затем запускает установку с помощью установщика MSI.

По завершении установки появится окно PowerShell Core (pwsh.exe). Проверьте версию PowerShell, чтобы убедиться, что она обновлена до PoSh 7.3.3.

Использование диспетчера пакетов WinGet для установки или обновления ядра PowerShell

Если у вас установлен менеджер пакетов 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 Core 6.x:

    $env:ProgramFiles\PowerShell\6
  • PowerShell Core 7.x:

    $env:ProgramFiles\PowerShell\7

Если на вашем компьютере установлена PowerShell 6.x,

$env:ProgramFiles\PowerShell\6

каталог автоматически удаляется при установке PowerShell 7.3.

Обратите внимание, что имя исполняемого файла PowerShell изменилось. В PowerShell Core это c:\Program Files\PowerShell\7\pwsh.exe. У него есть собственный значок в меню «Пуск».

  • Чтобы запустить Windows PowerShell на базе .NET Framework,

    powershell.exe

    используется команда

  • Чтобы запустить PowerShell Core на базе .NET Core, используйте команду

    pwsh.exe

Это означает, что на вашем компьютере установлены как Windows PowerShell 5.1, так и PowerShell Core 7.3.

Чтобы узнать версию и сборку PowerShell, установленную на вашем устройстве, вы можете проверить версию файла pwsh.exe:

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

Проверить версию файла на удаленном компьютере можно следующим образом:

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

Windows PowerShell предоставляет специальный режим обратной совместимости, который позволяет запускать более старую версию PowerShell, даже если у вас установлены более новые версии. Вы можете использовать следующую команду для запуска конкретной версии примера PowerShell, 4.0):

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

Установите PowerShell Core в Windows 10 и 11 через Microsoft Store.

В Windows 10 и 11 вы можете установить или обновить PowerShell через Microsoft Store. Вы можете вручную найти приложение PowerShell в Магазине или воспользоваться этой ссылкой.

Вы также можете использовать WinGet для установки версии PowerShell из Магазина:

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

Преимущество установки PowerShell Core из Microsoft Store заключается в том, что App Store автоматически проверяет установленную версию PowerShell и автоматически устанавливает обновления по мере их появления.

Чтобы убедиться, что вы установили версию PowerShell Core из Магазина, используйте команду:

Get-AppPackage Microsoft.PowerShell

В этом примере установлен пакет Microsoft.PowerShell_7.3.3.0_x64__8wekyb3d8bbwe.

Однако есть и недостатки того факта, что такой экземпляр PowerShell будет работать в изолированной среде.

Вы можете загрузить файл приложения APPX/MSIX и установить его с помощью

Add-AppxPackage

командлет (или как описано в статье «Восстановление Microsoft Store»).

Установка/обновление PowerShell Core на удаленных компьютерах

Рассмотрим два сценария установки или обновления PowerShell Core на нескольких удаленных компьютерах.

Развертывание PowerShell Core с помощью групповой политики

Вы можете использовать групповую политику для централизованного развертывания и обновления PowerShell Core в домене Active Directory. Используйте возможности объекта групповой политики для развертывания пакетов MSI на компьютерах домена.

  1. Загрузите установочный файл PowerShell MSI и скопируйте его в каталог SYSVOL на контроллере домена;

  2. Откройте консоль управления групповыми политиками домена (

    gpmc.msc

    ), создайте новый объект групповой политики и свяжите его с подразделением с компьютерами и серверами;

  3. Перейдите в раздел GPO Конфигурация компьютера -> Настройки программного обеспечения, создайте новый пакет и укажите путь к установочному файлу PowerShell MSI в папке SYSVOL в домене (используйте путь UNC);

    Чтобы более точно настроить политику на устройства домена, вы можете использовать фильтры 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}
  • Следующий скрипт выбирает все включенные компьютеры под управлением Windows 10 из домена Active Directory и начинает загрузку и установку 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"}
    }

    Для использования командлета GetADComputer на компьютере должен быть установлен модуль Active Directory PowerShell.

Будьте осторожны при использовании команд PowerShell Remoting при подключении к удаленным компьютерам (с помощью

Enter-PSSession

и

Invoke-Command

командлеты). Если вам нужно подключиться к конечной точке PowerShell 7, вы должны использовать команду:

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

В противном случае вы подключитесь к конечной точке PowerShell Remoting 5.1.

Самый распространенный способ обновления PowerShell Core в дистрибутивах Linux — использовать собственный менеджер пакетов.

Обновление PowerShell через Центр обновления Windows или WSUS

До версии 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

Начиная с версии 7.2, PowerShell Core поддерживает автоматические обновления через Центр обновления Windows (Центр обновления Microsoft, Центр обновления Windows для бизнеса, внутренний сервер WSUS или SCCM). Для этого необходимо включить соответствующие опции во время установки пакета MSI.

  • Первый позволяет PowerShell автоматически обновляться по любому доступному каналу (включает параметр реестра UseMU =1 в

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShellCore

    ключ)

  • Второй флажок позволит вам получать обновления для всего программного обеспечения Microsoft, а не только для Windows. Если этот параметр отключен, вы не будете получать обновления PowerShell из Центра обновления Майкрософт, но сможете получать их из WSUS/SCCM (параметр реестра registeredwithAU=1 в разделе

    HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Services\7971F918-A847-4430-9279-4A52D1EFE18D

    )

Убедитесь, что параметр Получать обновления для других продуктов Microsoft при обновлении Windows теперь включен в разделе «Настройки» -> «Обновление и безопасность» -> «Центр обновления Windows» -> «Дополнительные параметры».

Администратор может настроить установку обновлений. параметры через настройки групповой политики.

Теперь, когда вы нажимаете кнопку Проверить наличие обновлений или запускаете сканирование обновлений с помощью модуля PSWindowsUpdate, вы также будете получать обновления для PowerShell Core.

Статьи по данной тематике