В этой статье мы рассмотрим, как обновить версию Windows PowerShell до актуальной 5.1 и установить (обновить) PowerShell Core 7.1. В предыдущей статье мы рассказывали, что на данный момент есть две ветки PowerShell: старая версия Windows PowerShell (максимальная версия 5.1, которая более не развивается) и новая платформа PowerShell Core (сейчас доступна версия 7.1). Несмотря на то, что нумерация версий PowerShell продолжается с 5.1 (6.0, 6.1, 7.0 и т.д.), это две разные платформы. Соответственно мы рассмотрим отдельно как обновить Windows PowerShell и PowerShell Core.
Обновление Windows PowerShell до 5.1
Попробуем обновить версию Windows PowerShell в Windows Server 2012 R2 до версии 5.1.
По-умолчанию Windows Server 2012 R2 (Windows 8.1) устанавливается с версией 4.0.
Сначала проверим текущую версию 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 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 для Windows Server 2012 R2 —
Win8.1AndW2K12R2-KB3191564-x64.msu
(https://go.microsoft.com/fwlink/?linkid=839516).
Установите MSU файл Windows Management Framework 5.1.
После перезагрузки сервера, запустите консоль PS и убедитесь, что версия была обновлена до PowerShell 5.1.
Установка/обновление PowerShell Core 7.1
Обратите внимание, что последняя версия Windows PowerShell, устанавливаемая в Windows 10 и Windows Server 2019 — PowerShell 5.1. Вместо нее Microsoft начала разрабатывать кроссплатформенную версию PowerShell Core. На данный момент доступны версии PowerShell Core 6.0, 6.1, 6.2, 7.0 и 7.1. По сути, PowerShell Core это новая платформа, которая устанавливается в системе вместе с Windows PowerShell. Т.е. нельзя обновить PowerShell 5.1 до PowerShell Core 7.1. PowerShell 7 устанавливается на компьютере отдельно от Windows PowerShell 5.1.
Если у вас уже установлен PowerShell Core 6.0, вы можете обновить версию PowerShell на своем компьютере до последней версии PowerShell Core 7.1 (либо можно установить PowerShell Core 7.1 рядом с Windows PowerShell 5.1). В этом примере мы попробуем обновить версию PowerShell Core в Windows 10 20H2. Есть два способа обновления:
- Можно вручную скачать msi установщик PowerShell Core на GitHub;
- Можно скачать и запустить установку (обновление) непосредственно из консоли PowerShell.
Если вы хотите установить PowerShell Core с помощью MSI пакета, перейдите на старицу проекта https://github.com/PowerShell/PowerShell, найдите последний стабильный релиз (на момент написания статьи это v7.1.3 Release of PowerShell от 4 марта. Доступны также более новые v7.2.0-preview Release of PowerShell, но лучше пока не ставить их до выхода стабильной версии. Разверните список Assets и найдите пакет для вашей версии Windows (PowerShell-7.1.3-win-x64.msi или PowerShell-7.1.3-win-x86.msi).
Скачайте msi файл и установите его.
msiexec.exe /package PowerShell-7.1.3-win-x64.msi /quiet ADD_EXPLORER_CONTEXT_MENU_OPENPOWERSHELL=1 ENABLE_PSREMOTING=1 REGISTER_MANIFEST=1
Вы можете обновить PowerShell непосредственно из консоли.
Обновим (установим) последнюю версию PoSh Core с помощью команды:
iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI"
Данная команда загружает установочный MSI файл PowerShell 7.1 с GitHub и запускает установку, затем запускается установка через MSI Installer.
- -Destination – каталог установки PowerShell Core
- -Preview – установка Preview версии
- -Quiet – тихая установка
- -AddToPath – добавить путь к каталогу установки PowerShell Core в переменные окружения
После окончания установки открывается окно PowerShell Core (pwsh.exe), проверьте версию PowerShell и убедитесь, что теперь это PoSh 7.1.3.
Если у вас установлен пакетный менеджер WinGet, вы можете установить или обновить версию PowerShell до актуальной командой:
winget install --id=Microsoft.PowerShell -e
Либо можно установить конкретную версию 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 upgrade pwsh -y
- 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 6.x, то при установке PowerShell 7.1 каталог
$env:ProgramFiles\PowerShell\6
автоматически удаляется.Обратите внимание, что имя исполняемого файла среды PowerShell изменился. Теперь это
c:\Program Files\PowerShell\7\pwsh.exe
. У него собственная иконка в меню Start.
- Для запуска Windows PowerShell, основанного на .NET Framework используется команда
powershell.exe
- Для запуска PowerShell Core, основанного на .NET Core, нужно использовать команду
pwsh.exe
Т.е. теперь на этом компьютере есть две версии: Windows PowerShell 5.1 и PowerShell Core 7.1.
(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}
Чтобы запустить предыдущую версию PowerShell, например 4, используйте команду:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Version 4
Установка PowerShell Core через Microsoft Store
В Windows 10 вы можете установить или обновить PowerShell через магазин приложений Microsoft Store. Приложение PowerShell можно найти в магазине вручную или воспользуйтесь этой ссылкой. Преимущество такого способа установки – приложение Store будет автоматически контролировать установленную версию PowerShell и автоматически устанавливать обновления по мере появления.
Но есть и недостатки, связанные с тем, что такой PowerShell будет запускаться в песочнице.
Обновление PowerShell Core с помощью GPO
В домене Active Directory вы можете централизованно установить и обновить PowerShell Core с помощью групповой политики. Воспользуйтесь возможностями GPO по установке MSI пакетов.
- Скачайте установочный MSI файл PowerShell и скопируйте его в каталог SYSVOL на контроллере домена;
- Откройте консоль управления доменными GPO (
gpmc.msc
), создайте новую GPO и назначьте ее на OU с компьютерами и серверами; - Перейдите в раздел GPO Computer Configuration –> Software Settings, создайте новые пакет и укажите для него путь к установочному MSI файлу PowerShell в SYSVOL; Для более тонкого нацеливания политики на клиентов можно использовать WMI фильтры GPO.
- Для обновления групповых политик установки ПО нужно перезагрузить компьютеры. Во время загрузки на всех компьютерах будет установлена новая версия PowerShell.
Обновление PowerShell на удаленных компьютерах
Для обновления PowerShell на удаленных компьютерах через командную строку можно воспользоваться одним из следующих способов.
Первый способ позволяет удаленно обновить PowerShell на компьютере с помощью MSI установщика в сетевом каталоге:
Invoke-Command -ComputerName dc01 -ScriptBlock {Start-Process msiexec.exe -ArgumentList '/package "\\srv1\share\PowerShell-7.1.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"}
}
Enter-PSSession -ComputerName dc01 -ConfigurationName "powershell.7.1.3"
Иначе вы подключитесь к точке PowerShell Remoting 5.1.
Обновление PowerShell в Linux дистрибутивах чаще проще всего выполняется через нативный менеджер пакетов.
спасибо-познавательно очень-
Разжёвано до безобразия. ОООчень понравилось
Опечатки: Wind
p
ws и Server 210
9На Vista SP2 (не говоря уже о 2000 SP4) современный .NET не станет. Для PowerShell Core (.NET Core) требуют WMF Management Framework, который не поддерживается в висте и ниже (хотя почему-то поддерживает сервер 2008 SP2, но ссылка больше недоступна). Так себе кроссплатформенность…
Текст поправил, благодарю.
Ну а с Vista, XP и прочим legacy — в общем то ожидаемо. Microsoft планомерно добивает снятые с поддержки ОС, удаляет ссылки на софти и апдейты под них. Если у вас что-то еще осталось, нужно в обязатльном порядке сохранять такие вещи у себя.
А какая ссылка для windows 7 для закрузки WMF 5.1 ?
https://www.microsoft.com/en-us/download/details.aspx?id=54616
После красной кнопки выберите нужный пакет.
Есть ещё один способ установки PS 7 — из MS Store
В 7 версии PowerShell есть опасная уязвимость в .NET Core, связанная с удалённым выполнения кода. Макрософт уже призвала пользователей обновиться, не ставьте ее.
Можно не гадать на конфиг и указывать так Enter-PSSession -ComputerName dc01 -ConfigurationName «powershell.7»
Не мешало б добавить в гайд как 7 сделать дефолтным в ISE вместо 5.
На дестопе удобнее использовать VS Code.
А по поводу запуска PoSh COre из ISE по умолчанию, на ум только приходит добавить в профиль ISE (
$PsHome\Microsoft.PowerShellISE_profile.ps1
) строкуEnter-PSSession -ConfigurationName powershell.7 -ComputerName localhost
Есть что-то более элегантное?
1.
стоит .NET 4.8 (528049)
но при этом
PS при этом версии 2
попытка обновить до WMF 5.1 — приводит к ошибке (не применимо к этому ПК)
Чего еще может не хватать?
2.
З.Ы. из комментариев сложилось впечатление что на 2008 R2 можно и 7.1 завести?
2я часть вопроса снята — не читал в тот момент статью про Win10 и srv 2019 так как предполагал не возможность установки 7.1 на 2008r2
1. Не понял что за ОС у вас. По ошибке «обновление не применимо» — поглядите здесь