В этой статье расскажем, как обновить 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 и т.д.), это две разные платформы.
Мы рассмотрим, как обновить Windows PowerShell и PowerShell Core.
PowerShell Core 7.x совместима с Windows PowerShell, что означает, что вы можете запускать старые скрипты и командлеты в PowerShell Core.
Обновление Windows PowerShell до 5.1
Во всех версиях, начиная с Windows 10 и Windows Server 2016, Windows PowerShell 5.1 уже установлен по умолчанию.
В более ранних версиях (Windows 7/8.1 и Windows Server 2008 R2/2012) обновление до PowerShell 5.1 выполняется вручную. Например, в Windows Server 2012 R2 (Windows 8.1) установлена PowerShell 4.0.
Попробуем обновить версию PowerShell в Windows Server 2012 R2 до 5.1.
1. Проверьте текущую версию PowerShell:
$PSVersionTable.PSVersion
2. Для обновления PowerShell до версии 5.1 установите Windows Management Framework (WMF) 5.1, который требует .NET Framework 4.5.2 или выше. Чтобы убедиться, что у вас установлена нужная версия .NET, выполните команду:
(Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full' -Name Release).Release
3. Если у вас устаревшая версия .NET (например, 4.5.1), скачайте и установите NET Framework 4.8
4. После установки .NET 4.8 (потребуется перезагрузка) скачайте WMF 5.1 для Windows Server 2012 R2
5. Установите MSU файл Windows Management Framework 5.1.
6. Перезагрузите сервер, затем запустите консоль powershell.exe и убедитесь, что версия обновлена до PowerShell 5.1:
$PSVersionTable.PSVersion
Если у вас Windows Server 2008 R2 или Windows 7, вы также можете обновить PowerShell до 5.1 аналогичным способом: сначала установите .NET Framework 4.5.2 или выше, а затем установите WMF 5.1.
Установка/обновление PowerShell Core 7.x
PowerShell Core — это кроссплатформенная среда, которая активно развивается в отличие от Windows PowerShell 5.1. Она устанавливается отдельно от Windows PowerShell, поэтому обновление Windows PowerShell 5.1 до PowerShell Core невозможно.
На данный момент доступны версии PowerShell Core 6.x и 7.x. Рекомендуется использовать последнюю версию PowerShell Core (сейчас это 7.3), если вам не требуется особая совместимость с устаревшими скриптами.
Существует несколько способов обновления или установки PowerShell Core в Windows 10 и 11:
— С помощью MSI установщика PowerShell Core (скачивается на GitHub).
— С помощью менеджера пакетов WinGet.
— Через Microsoft Store.
Обновление PowerShell Core с помощью MSI установщика
1. Перейдите на страницу проекта PowerShell на GitHub и скачайте последнюю версию установочного пакета MSI.
2. Установите MSI файл. Во время установки доступны следующие опции:
— Add PowerShell to Path Environment Variable — добавляет PowerShell в переменные окружения.
— Register Windows Event Logging Manifest — регистрирует журнал событий для PowerShell.
— Enable PowerShell Remoting — включает удалённое управление через WinRM.
— Add ‘Open here’ context menu to Explorer — добавляет пункт в контекстное меню Проводника.
— Add ‘Run with PowerShell 7’ context menu for PowerShell files — добавляет пункт для запуска скриптов через PowerShell 7.
3. Для автоматического обновления PowerShell Core через Windows Update или WSUS активируйте соответствующие опции.
Обновление PowerShell Core через WinGet
1. Если у вас установлен WinGet, вы можете установить или обновить PowerShell до актуальной версии командой:
winget install --id Microsoft.Powershell --source winget
2. Если нужно установить конкретную версию PowerShell Core, используйте:
winget install --id=Microsoft.PowerShell -v "7.1.2" -e
Для установки 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 Update для получения обновлений PSCore
ENABLE_MU – разрешить обновление PowerShell Core через Windows UpdateНапример, команда установки может выглядеть так:
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 с использованием MSI установщика:
iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI"
Эта команда загружает установочный MSI файл PowerShell 7.3 с GitHub и автоматически запускает установку через MSI Installer.
После завершения установки откроется окно PowerShell Core (pwsh.exe). Проверьте текущую версию PowerShell, чтобы убедиться, что теперь установлена последняя версия 7.3.3:
$PSVersionTable.PSVersion
Использование 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 для установки или обновления PowerShell
Если вы используете менеджер пакетов Chocolatey, для установки или обновления PowerShell 5.1 используйте следующие команды:
choco install powershell -y
choco upgrade powershell -y
Для обновления PowerShell 7.x:
choco upgrade pwsh -y
Важные каталоги PowerShell
Обратите внимание на местоположение файлов различных версий PowerShell:
— Windows PowerShell 5.1: $env:WINDIR\System32\WindowsPowerShell\v1.0
— PowerShell Core 6.x: $env:ProgramFiles\PowerShell\6
— PowerShell 7.x: $env:ProgramFiles\PowerShell\7
При установке PowerShell 7.3, если на компьютере уже была установлена версия 6.x, каталог $env:ProgramFiles\PowerShell\6 автоматически удаляется.
Также обратите внимание, что исполняемый файл PowerShell Core теперь называется pwsh.exe и находится в каталоге c:\Program Files\PowerShell\7\pwsh.exe. У него есть собственная иконка в меню Пуск.
— Для запуска Windows PowerShell (на базе .NET Framework) используйте команду:
powershell.exe
— Для запуска PowerShell Core (на базе .NET Core) используйте команду:
pwsh.exe
Использование двух версий PowerShell
Теперь на вашем компьютере могут быть установлены обе версии PowerShell: Windows PowerShell 5.1 и PowerShell Core 7.3
Чтобы проверить версию PowerShell Core, вы можете выполнить следующую команду:
(Get-Command 'C:\Program Files\PowerShell\7\pwsh.exe').Version
Также можно проверить версию PowerShell на удалённом компьютере:
Invoke-Command -ComputerName computer1 -Scriptblock {(Get-Command 'C:\Program Files\PowerShell\7\pwsh.exe').Version}
Запуск предыдущих версий PowerShell
Если вам нужно запустить предыдущую версию PowerShell, например PowerShell 4, используйте следующую команду:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Version 4
Обновление PowerShell Core через Microsoft Store
В Windows 10 и 11 вы можете установить PowerShell через Microsoft Store. Приложение PowerShell можно найти вручную, или установить через WinGet:
winget search powershell --source msstore
winget install --id 9MZ1SNWT0N5D
Преимущество этого способа заключается в том, что Microsoft Store будет автоматически следить за обновлениями и устанавливать их по мере появления.
Вы можете проверить, установлена ли у вас Store версия PowerShell Coreс помощью команды:
Get-AppPackage Microsoft.PowerShell
В этом примере пакет Microsoft.PowerShell_7.3.3.0_x64__8wekyb3d8bbwe установлен.
Но есть и недостатки, связанные с тем, что такой PowerShell будет запускаться в песочнице.
Установка/обновление PowerShell Core на удалённых компьютерах
Обновление PowerShell Core с помощью GPO
В домене Active Directory вы можете централизованно установить или обновить PowerShell Core с помощью групповой политики (GPO):
1. Скачайте MSI файл PowerShell и скопируйте его в каталог SYSVOL на контроллере домена.
2. Откройте консоль управления GPO (gpmc.msc), создайте новую политику и назначьте её на OU с компьютерами.
3. В разделе Computer Configuration -> Software Settings создайте новый пакет и укажите путь к MSI файлу PowerShell в каталоге SYSVOL.
4. Для обновления групповых политик установки ПО нужно перезагрузить компьютеры. Во время загрузки на всех компьютерах будет установлена новая версия PowerShell.
Обновление PowerShell на удалённых компьютерах из командной строки
Вы можете обновлять PowerShell на удалённых компьютерах через консоль. Пример команды для установки PowerShell с помощью MSI установщика:
Invoke-Command -ComputerName dc01 -ScriptBlock {Start-Process msiexec.exe -ArgumentList '/package "\\srv1\share\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:
$creds = $(Get-Credential)
$computers = Get-ADComputer -Filter 'operatingsystem -like "*Windows 10*" -and enabled -eq "true"'
ForEach ($computer in $computers) {
Invoke-Command -ComputerName $computer -Credential $creds {iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI -Quiet"}
}
Для использование командлета GetADComputer на компьютере должен быть установлен модуль AD PowerShell.
Будьте внимательными при использовании команд PowerShell Remoting при подключении к удаленным компьютерам (Enter-PSSession, Invoke-Command). Если вам нужно подключиться к точке управления PowerShell 7 нужно использовать команду:
Enter-PSSession -ComputerName dc01 -ConfigurationName "powershell.7"
Иначе вы подключитесь к точке PowerShell Remoting 5.1.
Обновление PowerShell через Windows Update или WSUS
Начиная с версии 7.2, PowerShell Core поддерживает автоматическое обновление через Windows Update. Для этого включите опции автоматического обновления при установке MSI пакета.
Первая опция разрешает автоматическое обновление PowerShell через любой канал (включает параметр UseMU =1 в ветке HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShellCore)
Второй чекбокс – разрешает получать обновления для всего ПО Microsoft, не только для Windows. Если опция отключена, вы не будете получать обновления PowerShell с Microsoft Update, но можете получать их с вашего WSUS/SCCM (параметр реестра registeredwithAU=1 в HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Services\7971F918-A847-4430-9279-4A52D1EFE18D)
Для проверки наличия обновлений откройте Настройки > Обновление и безопасность > Windows Update > Дополнительные параметры и убедитесь, что активирована опция Получать обновления для других продуктов Microsoft.
Теперь при проверке обновлений через Windows Update или через модуль PSWindowsUpdate, вы будете получать обновления для PowerShell Core.
Таким образом, вы можете выбрать удобный для вас способ обновления Windows PowerShell и PowerShell Core, будь то использование MSI пакета, WinGet, Microsoft Store, или групповых политик.