.Net Core 3.0 и PowerShell Core


Если кратко, то в .Net Core 3.0 мы получим PowerShell Core как global tool.

Достаточно будет сделать:
dotnet tool install

Это будет работать в Docker контейнерах тоже.

Кстати (это уже совсем другая история) возможно уже в следующей предварительной версии 7.0.0 Preview1 PowerShell Core будет работать на .Net Core 3.0. Всё должно будет работать шустрее, да и набор API для разработчиков ощутимо расширяется.

Реклама

Следующая версия PowerShell Core — PowerShell 7.0


Команда Microsoft официально объявила, что следующая версия PowerShell Core выйдет как PowerShell 7.0.

Основной посыл в том, что с переходом на .Net Core 3.0 пользователи получат версию почти на 90% совместимую с Windows PowerShell.

Имя PowerShell 7.0 без Core также призвано демонстрировать этот факт.

Ещё один важный момент: теперь выпуски основных версий будут следовать выпускам .Net Core. Это означает, что появятся LTS версии с увеличенным временем поддержки. Это будет стимулировать использование PowerShell Core в других продуктах. По-прежнему каждый месяц будут выходить предварительные версии для тестирования исправлений и новых функций.

Кроме этого PowerShell 7.0 в скором времени будет добавлено в Windows 10 как дополнительный компонент.

Вышел PowerShell Core 6.2


Официальный анонс https://devblogs.microsoft.com/powershell/general-availability-of-powershell-core-6-2/

Загрузить можно прямо с GitHub https://github.com/PowerShell/PowerShell#get-powershell

Либо используйте пакетные менеджеры, как описано в документации https://aka.ms/install-powershell

Все изменения зафиксированы в changelogs. (Смотрите все разделы для RC и Preview с времени предыдущего релиза 6.1!) Также посмотрите мои посты опубликованные для Preview версий.

Добавлены экспериментальные фичи, которые вы можете включить для тестирования. Рекомендую включить и посмотреть в деле Implicit Remoting Batching — возможно это именно то, чего вам всегда не хватало. Суть в том, что теперь весь pipeline выполняется на удаленной машине и возвращется только результат. В некоторых сценариях можно получить огромный выигрыш в производительности.

Кроме этого вы можете попробовать Command Not Found Suggestions, Abbreviation Expansion и Temp Drive.

Сделано множество улучшений в производительности. Так версия 6.2 запускается заметно быстрее версии 6.1.

Внесено множество улучшений в Web Cmdlets.

Не забывайте писать отзывы на GitHub. Делитесь опытом, запрашивайте новые фичи или улучшения существующих. Участвуйте в планировании следующей версии. И включайтесь в процесс разаработки — это не так сложно.

Что нового в PowerShell Core 6.2 Preview4


PowerShell Core 6.2 Preview4 это последняя предварительная версия перед выпуском релиза 6.2. (Ещё будет RC версия, сам релиз запланирован на март). Так что если вы обнаружили какие-то проблемы, то спешите сообщить в https://github.com/PowerShell/PowerShell

Последние важные изменения в репозитории:

  1. Завершен переход на Azure DevOps CIs. Проведена зачистка скриптов от старых CIs.
  2. За новогодние праздники вычищено около 30000 ошибок форматирования кода, которые рапортовал CodeFactor сервис. Осталось ещё более 70000. Сейчас публиковать изменения кода стало намного легче: практически нет замечаний по форматированию. В планах улучшить настройки CodeFactor, т.к. не все его сообщения должны быть исправлены.
  3. Документация практически вся удалена и перенесена в соответствующий репозиторий https://github.com/MicrosoftDocs/PowerShell-Docs

 

Что нового в Core 6.2 Preview4:

  1. Внесено ряд исправлений в web-командлеты (#8694, #8679)
  2. Sort-Object получил ключ Stable (#7862)
  3. Hashtable теперь case-insensitive для всех Cultures (#8566)
  4. Добавлен параметер RepeatHeader в командлет Format-Table (#8481)
  5. Добавлена поддержка enum и char типов в Format-Hex (#8191)
  6. Добавлена поддержка подсказок в случае ввода ошибочного имени команды (тестируйте и пишите отзывы) (#8458)

И ещё много чего. Полный список изменений https://github.com/PowerShell/PowerShell/releases/tag/v6.2.0-preview.4

Хостинг PowerShell


При создании приложений использующих PowerShell (хостинг PowerShell) важно понимать следующее.

  1. Для совместимости с Windows PowerShell используется PowerShell.5.ReferenceAssemblies
  2. Для совместимости с PowerShell Core используется PowerShell.SDK
  3. Для создания модулей, которые работают в обеих версиях, нужно использовать PowerShellStandard.Library

Полезные ссылки:

  1. https://docs.microsoft.com/en-us/powershell/scripting/learn/writing-portable-modules?view=powershell-6
  2. https://github.com/MicrosoftDocs/PowerShell-Docs

PowerShell Core 6.2.0 Preview3


Традиционно краткий обзор того, что появилось и изменилось:

  • Прошла очередная волна зачистки кода от старых рудиментов
  •  Отладчик теперь не будет задавать вам много ненужных вопросов #8195
  •  Уменьшина вероятность проблем при множественном доступе к powershell.config.json #8249
  •  Появился новый командлет Join-String #7660
  • Get-PSHostProcessInfo и Enter-PSHostProcessтеперь работают на Unix #8232
  •  Улучшено время запуска #8341 #8396. Теперь почти как Windows PowerShell, немного медленнее. Сейчас вообще стали больше смотреть на производительность. Надеюсь, это будет постоянным процессом
  •  Добавлена поддержка Linux ARM64 #8016

Сейчас, пока наблюдается праздничное затишье, идёт активная работа по улучшению форматирования на основе отчётов CodeFactor (StyleCop). Код PowerShell создавался многие годы, разными людьми, менялись предпочтения по стилю форматирования. В результате сейчас мы имеем около 100 тысяч замечаний в CodeFactor. Некоторые правила будут выключены как бесполезные. Часть замечаний уже исправлены (>12 тысяч). За эти дни мы должны ещё хорошо продвинуться в этом направлении. Надеюсь, что после этого останется менее половины замечаний в CodeFactor. Всё это значительно улучшит читабельность и документированность кода и облегчит разработчикам создание изменений (PR).

Немного статистики о PowerShell Core


PowerShell Core имеет встроенную телеметрию. (Конечно вы её можете всегда выключить).

Ссылку на Dashboard вы можете найти на головной странице проекта https://github.com/PowerShell/PowerShell

Результаты по количеству запусков:

За сентябрь — ~4.5 миллионов

За октябрь — ~5.8 миллионов

За ноябрь — ~ 6.5 миллионов

 

Удивительно, что число запусков версии 6.0 практически не изменяется, а прирост идет сейчас за счёт версии 6.1. Ещё более удивительно, что люди продолжают использовать 6.1-Preview.

По операционным системам наибольшая популярность по-прежнему на Linux — ~5.2 миллионов запусков, следом идет Windows с большим отставанием — ~1.3 миллионов запусков. Доля Windows постепенно увеличивается. Доля MacOs мала, но заметна — 0.15 миллиона запусков.

Статистика всё ещё очень скромная. Тем не менее популярность PowerShell Core растёт с каждой новой версией и будет расти. Возможно даже более быстрыми темпами. Тому причиной несколько факторов. Напомню, что развитие Windows PowerShell остановлено, все новшества будут только в PowerShell Core. Другой фактор это использование PowerShell Core в облачных сервисах.

Сейчас команда MSFT активно работает над усовершенствованием системы выпуска релизов. Это позволит снизить трудозатраты и повысить качество продукта. В рамках этой работы расширится тестирование продукта. Уже сейчас PowerShell Core существует в виде различных форматов установочных пакетов и, самое главное, начал появляться в репозиториях основных вендоров.

С другой стороны, я очень надеюсь, что мы успеем доработать несколько интересных изменений, которые улучшат время загрузки PowerShell Core, а также общую производительность, не говоря уже о новой функциональности. Если мои ожидания оправдаются, то PowerShell Core станет обгонять Windows PowerShell по тестам производительности.