PowerShell 7.1 и другие новинки


Давно ничего не писал про PowerShell 7, и за это время вышла версия 7.1. Краткое описание в блоге MSFT. Эта версия основана на .Net 5.0. Таким образом, если вы заинтересованы в использовании новых возможностей этой версии .Net, вы можете установить PowerShell 7.1 и использовать их прямо из PowerShell.

Что нового в PowerShell 7.1? Не более того, что было в предварительных версиях — так что смотрите мои предыдущие посты и посты в блоге MSFT.

Это не LTS версия — время поддержки год-полтора, пока поддерживается .Net 5.0. Следующая версия 7.2 будет на основе .Net 6.0, и обе будут LTS — с поддержкой не менее 3 лет.

Не так давно вышла предварительная версия PowerShell 7.2 Preview2. Она все ещё на основе .Net 5.0, так как пока нет доступной предварительной версии .Net 6.0 (ожидаем в январе). Очень большие надежды на эту версию в смысле увеличения производительности. Команда .Net настроена решительно улучшить сценарий запуска .Net приложений. Сейчас инициализация .Net занимает слишком много времени. Так PowerShell 7 запускается почти в двое медленнее Windows PowerShell. Мы мало что можем сделать в самам PowerShell, чтобы улучшить эту ситуацию. Эти работы ослеживаются тут. Можете принять участие. Если команда .Net реализует их планы, то у нас есть шанс получить запуск PowerShell 7 даже быстрее, чем Windows PowerShell.

В PowerShell 7.2 Preview2 появилась новая возможность раскрашивания вывода на экран с помощью ANSI escape кодов. Посмотрите $PSStyle. Это экспериментальная фича. Отзывы приветствуются в GitHub репозитории PowerShell. Лично мне не нравится способ, которым это реализовано — слишком дорого (в смысле ресурсов) и слишком ограничено. Я бы ожидал увидеть поддержку цветовых схем и цветовых шаблонов (themes), что позволило бы иметь предопределенные схемы, переключать их без необходимости тратить время на создание собственных раскрасок.

Другие проекты команды MSFT, находящиеся в активной разработке.

Crescendo. Это инструмент для создания оберток обычных утилит командной строки. PowerShell, как любой шелл, всегда позволял запускать утилиты и приложения. При этом всегда было желание сделать это более удобным. В частности преобразовать вывод утилиты и объекты PowerShell. В кратце как это работает. Создаётся файл описания в формате JSON. Crescendo преобразует этот файл в модуль PowerShell, который может быть отредактирован и распространяться как законченное решение.

Хотя команда PowerShell MSFT намерена развивать этот проект, мне он кажется тупиковым путем. Можно найти немало проектов генерации PowerShell кода и даже модулей. Все они работают (если работают вообще) только в узкой сфере. Например, CDXML модули распространяемые MSFT c Windows активно используются, но пригодны только для создания оберток WMI. Идея и реализация тут просты: опираясь на стандартное представление WMI, создается CDXML файл с мета информацией, PowerShell используя эту информацию динамически генерирует модуль и создает командлеты доступные в текущей сессии.

Почему это стало возможным и работает? Потому что есть стандарт WMI. В случае утилит никаких стандартов несуществует, и тогда говорят «проблема фундаментально неразрешима». Что в свою очередь говорит о том, что любые генераторы изначально будут ограничены в возможностях. И чем больше возможностей будет в них закладываться, тем сложнее будет с ними работать. Проще говоря, Crescendo JSON файлы будет очень сложно создавать и поддерживать. Я бы выбрал другой путь…

Надеюсь, что мои рассуждения вас заинтриговали, и вы попробуете Crescendo и напишите отзывы в его репозитории. (Можете и со мной подискутировать, если есть желание развивать это направление в PowerShell.)

SecretManagement и SecretStore. Очень интересные проекты. Рекомендую посмотреть, попробовать и написать отзывы. Поторопитесь, так как выпуск первой версии намечен на январь 2021 года. История появления этих проектов проста — то как мы привыкли работать с паролями, а частности их хранение в Credetial Manager, не работает в других ОС. Поэтому нужна поддержка альтернативных хранилищей секретов (в том числе Azure) и общие командлеты для работы с этими секретами.

PSReadline. Очень рекомендую установить самую последнюю версию. И включите экспериментальные фичи. Вы уже видели Predictive IntelliSense? Там ещё много чего есть и появилось для любителей сделать рабочую среду PowerShell удобной.

PowerShellGet 3.0 Основной источник модулей PowerShell. Новая версия движется к своему релизу. Пробуйте заранее и пишите отзывы.

PSScriptAnalyzer 1.19.1 Если не использовали раньше, то попробуйте. Проект тоже открытый, так что пишите отзывы и запросы на новые фичи.

PowerShell Working Groups Это не проект, а намерение команды MSFT сделать проект ещё более открытым и более активным, вовлечь больше разработчиков. Команда PowerShell MSFT маленькая, но за ней закреплено много проектов. Как результат, команде просто не хватает ресурсов, чтобы активно работать по всем направлениям. Идея в том, чтобы объединить заинтересованных людей в рабочие группы, которые бы работали автономно и разгрузили команду MSFT. Таких рабочих групп может быть много. Так если вы активно работаете с Web-командлетами и недовлетварены их качеством и возможностями, вы можете получить возможность улучшать их будучи членом рабочей группы. Рабочие группы будут формировать уже начиная с января 20221 года. Включайтесь в работу! Это не обязательно написание кода. Прежде чем писать код, нужно понять проблему, спроектировать решение. Требуется аналитика, квалифицированное обсуждение, разработка новых возможностей, тестирование в реальной среде.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s

%d такие блоггеры, как: