Сегодня мы рады объявить о выпуске общедоступной (GA) версии PowerShell 7.0! Прежде всего, мы хотели бы поблагодарить наших многочисленных контрибьюторов за то, что сделали этот выпуск возможным, поделившись кодом, тестами, документацией и отзывами о проблемах. PowerShell 7 не был бы возможен без вашей помощи.
![](https://habrastorage.org/webt/d0/b4/oh/d0b4ohwwl0qzo1-iwu30np7afaa.gif)
Для новичков, PowerShell 7 является последним крупным обновлением PowerShell, кросс-платформенного (Windows, Linux и macOS) инструмента автоматизации и инфраструктуры конфигурации, оптимизированной для работы со структурированными данными (например, JSON, CSV, XML и т. д.), REST API и объектными моделями. PowerShell включает оболочку командной строки, объектно-ориентированный язык сценариев и набор инструментов для выполнения сценариев/командлетов и управления модулями.
Три года назад мы анонсировали PowerShell Core 6 как совершенно новую версию PowerShell. Основанный на .NET Core, PowerShell Core представил кроссплатформенную поддержку для Windows, macOS и Linux, PowerShell Remoting на основе SSH, значительно улучшенную поддержку REST и JSON, официальные контейнеры Docker и многое другое. Кроме того, это был первый выпуск PowerShell, созданный по лицензии с открытым исходным кодом (MIT), поощряющий давних энтузиастов PowerShell и новичков в равной степени вносить непосредственный вклад в исходный код, тесты и документацию.
После трех успешных выпусков PowerShell Core мы рады выходу PowerShell 7, следующей главе непрерывного развития PowerShell. В PowerShell 7, в дополнение к обычному множеству новых командлетов/API и исправлений ошибок, мы представляем ряд новых функций, в том числе:
Более полный список функций и исправлений изучайте здесь.
Переход с PowerShell Core 6.x на 7.0 также означает переход с .NET Core 2.x на 3.1. .NET Core 3.1 возвращает множество API .NET Framework (особенно в Windows), обеспечивая значительно большую обратную совместимость с существующими модулями Windows PowerShell. Это включает в себя множество модулей в Windows, которые требуют функциональности графического интерфейса, таких как Out-GridView и Show-Command, а также множество модулей управления ролями, которые поставляются как часть Windows. Для получения дополнительной информации, ознакомьтесь с нашей таблицей совместимости модулей, демонстрирующей, как вы можете использовать новейшие, современные модули, которые работают с PowerShell 7.
Если вы не могли использовать PowerShell Core 6.x в прошлом из-за проблем с совместимостью модулей, это может быть ситуацией, когда вы воспользуетесь некоторыми из функций, которые мы уже предоставили с момента запуска проекта Core!
Для начала, изучите документацию по установке для Windows, macOS, или Linux. В зависимости от версии вашей ОС и предпочтительного формата пакета может быть несколько способов установки.
Если вы уже знаете, что делать, и просто ищете бинарный пакет (будь то MSI, ZIP, RPM или что-то еще), перейдите к нашему тегу последней версии на GitHub.
Кроме того, вы можете использовать один из наших многочисленных образов Docker. Для получения дополнительной информации об их использовании, ознакомьтесь с нашим репозиторием PowerShell-Docker.
PowerShell 7 поддерживает следующие ОС на x64, включая:
Кроме того, мы поддерживаем версии ARM32 и ARM64 Debian и Ubuntu, а также ARM64 Alpine Linux.
Хотя это официально не поддерживается, сообщество также предоставило пакеты для Arch и Kali Linux.
Если вам нужна поддержка для платформы, которой нет в этом списке, отправьте запрос на распространение на GitHub (хотя следует отметить, что в конечном итоге мы ограничены тем, что поддерживается .NET Core 3.1).
Подобно тому, как .NET с .NET 5, мы считаем, что PowerShell 7 знаменует собой завершение нашего пути к максимальной обратной совместимости с Windows PowerShell. В связи с этим мы считаем, что PowerShell 7 и более поздние версии — это единственный поддерживаемый PowerShell в будущем.
PowerShell 7 будет по-прежнему отмечаться в издании «Core», чтобы отличить 6.x/7.x от Windows PowerShell, но в целом вы увидите, что в дальнейшем он будет обозначаться как «PowerShell 7».
Любой модуль, который уже поддерживается PowerShell Core 6.x, также поддерживается в PowerShell 7, включая:
В Windows мы также добавили параметр -UseWindowsPowerShell в Import-Module, чтобы упростить переход к PowerShell 7 для тех, кто использует несовместимые модули. Этот параметр создает в PowerShell 7 прокси-модуль, который использует локальный процесс Windows PowerShell для имплицитного запуска любых командлетов, содержащихся в этом модуле. Для получения дополнительной информации об этой функции, ознакомьтесь с документацией к Import-Module.
Для тех модулей, которые по-прежнему несовместимы, мы работаем с рядом коллег, чтобы добавить встроенную поддержку PowerShell 7, включая Microsoft Graph, Office 365 и другие.
Azure Cloud Shell уже был обновлен для использования PowerShell 7, а другие, такие как образы контейнера .NET Core SDK Docker и функции Azure, будут обновлены в ближайшее время.
Мы уже усердно работаем над PowerShell 7.1, и вы можете ожидать его первого превью в ближайшее время, изобилующего новыми функциями и исправлениями, которые не вошли в 7.0. Следите за более подробным блогом с дорожной картой, в котором изложены наши текущие исследования и желания для 7.1.
Как отмечалось выше, мы также переходим на ежегодную частоту выпусков, чтобы лучше соответствовать версиям .NET и их жизненному циклу поддержки (предварительные выпуски продолжают выпускаться примерно каждый месяц).
![](https://habrastorage.org/webt/d0/b4/oh/d0b4ohwwl0qzo1-iwu30np7afaa.gif)
Что такое PowerShell 7?
Для новичков, PowerShell 7 является последним крупным обновлением PowerShell, кросс-платформенного (Windows, Linux и macOS) инструмента автоматизации и инфраструктуры конфигурации, оптимизированной для работы со структурированными данными (например, JSON, CSV, XML и т. д.), REST API и объектными моделями. PowerShell включает оболочку командной строки, объектно-ориентированный язык сценариев и набор инструментов для выполнения сценариев/командлетов и управления модулями.
Три года назад мы анонсировали PowerShell Core 6 как совершенно новую версию PowerShell. Основанный на .NET Core, PowerShell Core представил кроссплатформенную поддержку для Windows, macOS и Linux, PowerShell Remoting на основе SSH, значительно улучшенную поддержку REST и JSON, официальные контейнеры Docker и многое другое. Кроме того, это был первый выпуск PowerShell, созданный по лицензии с открытым исходным кодом (MIT), поощряющий давних энтузиастов PowerShell и новичков в равной степени вносить непосредственный вклад в исходный код, тесты и документацию.
После трех успешных выпусков PowerShell Core мы рады выходу PowerShell 7, следующей главе непрерывного развития PowerShell. В PowerShell 7, в дополнение к обычному множеству новых командлетов/API и исправлений ошибок, мы представляем ряд новых функций, в том числе:
- Параллелизация пайплайна с ForEach-Object-Parallel
- Новые операторы:
- Оператор Ternary: a? b: c
- Операторы Pipeline chain: || and &&
- Операторы Null coalescing: ?? and ??=
- Упрощенный и динамический просмотр ошибок и командлет Get-Error для более простого изучения ошибок
- Уровень совместимости, который позволяет пользователям импортировать модули в имплицитной сессии Windows PowerShell
- Автоматические уведомления о новой версии
- Возможность вызывать ресурсы DSC непосредственно из PowerShell 7 (экспериментально)
Более полный список функций и исправлений изучайте здесь.
Переход с PowerShell Core 6.x на 7.0 также означает переход с .NET Core 2.x на 3.1. .NET Core 3.1 возвращает множество API .NET Framework (особенно в Windows), обеспечивая значительно большую обратную совместимость с существующими модулями Windows PowerShell. Это включает в себя множество модулей в Windows, которые требуют функциональности графического интерфейса, таких как Out-GridView и Show-Command, а также множество модулей управления ролями, которые поставляются как часть Windows. Для получения дополнительной информации, ознакомьтесь с нашей таблицей совместимости модулей, демонстрирующей, как вы можете использовать новейшие, современные модули, которые работают с PowerShell 7.
Если вы не могли использовать PowerShell Core 6.x в прошлом из-за проблем с совместимостью модулей, это может быть ситуацией, когда вы воспользуетесь некоторыми из функций, которые мы уже предоставили с момента запуска проекта Core!
Круто! Как получить PowerShell 7?
Для начала, изучите документацию по установке для Windows, macOS, или Linux. В зависимости от версии вашей ОС и предпочтительного формата пакета может быть несколько способов установки.
Если вы уже знаете, что делать, и просто ищете бинарный пакет (будь то MSI, ZIP, RPM или что-то еще), перейдите к нашему тегу последней версии на GitHub.
Кроме того, вы можете использовать один из наших многочисленных образов Docker. Для получения дополнительной информации об их использовании, ознакомьтесь с нашим репозиторием PowerShell-Docker.
Какие операционные системы поддерживает PowerShell 7?
PowerShell 7 поддерживает следующие ОС на x64, включая:
- Windows 7, 8.1, и 10
- Windows Server 2008 R2, 2012, 2012 R2, 2016, и 2019
- macOS 10.13+
- Red Hat Enterprise Linux (RHEL)/CentOS 7+
- Fedora 29+
- Debian 9+
- Ubuntu 16.04+
- openSUSE 15+
- Alpine Linux 3.8+
Кроме того, мы поддерживаем версии ARM32 и ARM64 Debian и Ubuntu, а также ARM64 Alpine Linux.
Хотя это официально не поддерживается, сообщество также предоставило пакеты для Arch и Kali Linux.
Если вам нужна поддержка для платформы, которой нет в этом списке, отправьте запрос на распространение на GitHub (хотя следует отметить, что в конечном итоге мы ограничены тем, что поддерживается .NET Core 3.1).
Подождите, что случилось с PowerShell «Core»?
Подобно тому, как .NET с .NET 5, мы считаем, что PowerShell 7 знаменует собой завершение нашего пути к максимальной обратной совместимости с Windows PowerShell. В связи с этим мы считаем, что PowerShell 7 и более поздние версии — это единственный поддерживаемый PowerShell в будущем.
PowerShell 7 будет по-прежнему отмечаться в издании «Core», чтобы отличить 6.x/7.x от Windows PowerShell, но в целом вы увидите, что в дальнейшем он будет обозначаться как «PowerShell 7».
Какие продукты Microsoft уже поддерживают PowerShell 7?
Любой модуль, который уже поддерживается PowerShell Core 6.x, также поддерживается в PowerShell 7, включая:
- Azure PowerShell (Az.*)
- Active Directory
- Многие из модулей в Windows 10 и Windows Server (проверьте с помощью Get-Module -ListAvailable)
В Windows мы также добавили параметр -UseWindowsPowerShell в Import-Module, чтобы упростить переход к PowerShell 7 для тех, кто использует несовместимые модули. Этот параметр создает в PowerShell 7 прокси-модуль, который использует локальный процесс Windows PowerShell для имплицитного запуска любых командлетов, содержащихся в этом модуле. Для получения дополнительной информации об этой функции, ознакомьтесь с документацией к Import-Module.
Для тех модулей, которые по-прежнему несовместимы, мы работаем с рядом коллег, чтобы добавить встроенную поддержку PowerShell 7, включая Microsoft Graph, Office 365 и другие.
Azure Cloud Shell уже был обновлен для использования PowerShell 7, а другие, такие как образы контейнера .NET Core SDK Docker и функции Azure, будут обновлены в ближайшее время.
Что дальше?
Мы уже усердно работаем над PowerShell 7.1, и вы можете ожидать его первого превью в ближайшее время, изобилующего новыми функциями и исправлениями, которые не вошли в 7.0. Следите за более подробным блогом с дорожной картой, в котором изложены наши текущие исследования и желания для 7.1.
Как отмечалось выше, мы также переходим на ежегодную частоту выпусков, чтобы лучше соответствовать версиям .NET и их жизненному циклу поддержки (предварительные выпуски продолжают выпускаться примерно каждый месяц).