Сегодня мы рады объявить о выпуске общедоступной (GA) версии PowerShell 7.0! Прежде всего, мы хотели бы поблагодарить наших многочисленных контрибьюторов за то, что сделали этот выпуск возможным, поделившись кодом, тестами, документацией и отзывами о проблемах. PowerShell 7 не был бы возможен без вашей помощи.



Что такое 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?


Для начала, изучите документацию по установке для WindowsmacOS, или 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, включая:


В 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 и их жизненному циклу поддержки (предварительные выпуски продолжают выпускаться примерно каждый месяц).