Страницы

вторник, 17 марта 2020 г.

Релиз PowerShell 7.0


4 марта 2020 года команда разработки PowerShell, анонсировала доступность релиза PowerShell 7.0! В первую очередь данный релиз возможен благодаря большой работе, проделанной сообществом открытого кода, которое писало код, проводило тестирование, вело документацию и присылало отчеты о найденных ошибках. Без всего этого PowerShell 7 не был бы возможен.

Что такое PowerShell 7?


PowerShell 7 – это новейшее мажорное обновление кроссплатформенного (Windows, Linux и MacOS) средства автоматизации и платформы настройки, оптимизированной для работы со структурированными данными (JSON, CSV, XML и так далее), REST API и объектными моделями. PowerShell включает в себя оболочку командной строки, объектно-ориентированный язык написания сценариев, а также набор инструментов для выполнения сценариев/командлетов и управления модулями.

Три года назад был анонсирован PowerShell Core 6, как полностью новая редакция PowerShell. Построенный на базе .NET Core, PowerShell Core представил кроссплатформенную поддержку для Windows, MacOS и Linux; удалённую работу на базе SSH; существенно улучшенную поддержку REST и JSON; официальную поддержку контейнеров Docker и многое другое. Также это был первый релиз PowerShell выпущенный под лицензией с открытым исходным кодом (MIT), что привлекло множество энтузиастов к работе над исходным кодом, документацией и к тестированию.

После трёх успешных релизов PowerShell Core, команда приняла решение о выпуске PowerShell 7 – следующей главы непрекращающейся разработки PowerShell. В PowerShell 7, помимо стандартного набора новых командлетов, API и исправлений ошибок, представлен набор новых возможностей, в том числе:
  • Параллелизация конвейерной обработки при помощи ForEach-Object -Parallel.
  • Новые операторы:
    • Тернарный (тройной) оператор: a ? b : c.
    • Операторы цепной конвейерной обработки: || и &&.
    • Операторы пустых объединений: ?? и ??=.
  • Упрощённый и динамический просмотр ошибок, а также командлет Get-Error для более простого исследования ошибок.
  • Уровень совместимости, который позволяет импортировать модули в явные сессии Windows PowerShell.
  • Автоматическое уведомление о новых версиях.
  • Возможность вызывать ресурсы DSC, напрямую из PowerShell 7 (экспериментально).

Для получения полного списка возможностей и исправлений обратитесь к заметкам к релизу PowerShell 7.0.

Переход от PowerShell Core 6.x к 7.0 также означает переход от .NET Core 2.x к 3.1. .NET Core 3.1 возвращает на хост интерфейсы разработки приложений (APIs) .NET Framework (особенно на Windows), обеспечивая существенно больше обратной совместимости с существующими модулями PowerShell. Это делает обеспечивает работу множества модулей на Windows, которые требуют возможностей графического интерфейса пользователя (GUI), например, 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?


Следующие 64-ех битные операционные системы поддерживают PowerShell 7:
  • 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 (учтите, что PowerShell 7 ограничен платформами поддерживающими .NET Core 3.1).

Что случилось с PowerShell Core?


Подобно тому, как .NET принял решение, что делать с .NET 5, команда разработки планирует, что PowerShell 7 маркирует завершение работ по максимизации обратной совместимости с Windows PowerShell. Команда надеется, что в итоге PowerShell 7 и его дальнейшие итерации станут единым целым, что в результате позволит PowerShell развиваться ещё быстрее.

Тем не менее, PowerShell 7, по-прежнему, отмечен редакцией “Core”, для того чтобы обозначить различия 6.x/7.x c 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, в командлет Import-Module был добавлен переключатель -UseWindowsPowerShell, для упрощения перехода к PowerShell 7 и устранения проблем несовместимости модулей. Данный переключатель создаёт прокси модуль в PowerShell 7, который использует локальный процесс Windows PowerShell для явного запуска любых командлетов импортируемого модуля. Для получения дополнительно информации по данному функционалу обратитесь к документации по командлету Import-Module.

Для модулей, которые остаются несовместимыми, ведется работа напрямую с несколькими продуктовыми командами для добавления встроенной поддержки PowerShell 7, в том числе с командами Microsoft Graph, Office 365 и другими.

Azure Cloud Shell уже обновлен для использования PowerShell 7, также другие компоненты, такие как: образы контейнеров Docker с .NET Core SDK и Azure Functions – будут обновлены ближайшее время.

Как PowerShell 7 официально поддерживает Microsoft?


Также как PowerShell Core, PowerShell 7- это поддерживаемый продукт для широкого диапазона клиентов Microsoft с соглашениями о поддержке.

Начиная с PowerShell 7, Microsoft изменил жизненный цикл поддержки для соответствия жизненному циклу .NET, лежащему в основе и распространяемому, как часть PowerShell. Это значит, что PowerShell 7.0 обладает длительной поддержкой (LTS) релиза, и будет поддерживаться 3 года с 3 декабря 2019 (дата релиза.NET Core 3.1).

Дополнительные сведения о жизненном цикле доступны по ссылке https://aka.ms/pslifecycle.

Что будет дальше с PowerShell?


Команда разработки уже самым серьезным образом работает над PowerShell 7.1, предварительная версия которого ожидается совсем скоро, она будет содержать новые возможности и исправления ошибок, которые не успели войти в 7.0. Когда команда публично опубликует детальные планы к версии 7.1, я планирую написать о них отдельно.

Как сообщалось выше, команда переходит на график релизов один раз в полгода, для лучшего соответствия графику релизов .NET и его циклу поддержки (с непрекращающимся графиком релизов предварительных версий каждый месяц).

Как оставить обратную связь о PowerShell 7?


Для большинства ошибок, напрямую связанных с PowerShell 7, можно заполнить форму в основном репозитории PowerShell. Для ошибок, связанных с определенными модулями (такими как PSReadline или PowerShellGet), обратитесь к соответствующему репозиторию.

Заключение!


В заключении хотелось бы отметить, что команда выражает благодарность всем, кто принимал участие в разработке данного релиза.

От себя добавлю, что в связи с выходом PowerShell 7, я не прекращаю работы по выпуску веб-кастов про Windows PowerShell 5, так как они не теряют своей актуальности.

Комментариев нет:

Отправить комментарий