PowerShell Core 6.1.1


В PowerShell Core 6 были обнаружены проблемы безопасности. В Windows PowerShell тоже, и исправления уже доступны в текущих ежемесячных обновлениях.

Что касается PowerShell Core 6, то его рекомендуется обновить до версии 6.1.1.

Подробности:

https://github.com/PowerShell/PowerShell/issues/8254

https://github.com/PowerShell/PowerShell/issues/8251

О чём это говорит? Хочется думать, что PowerShell Core стал достаточно популярным :-) Хотя по факту одна проблема приехала из Microsoft.PowerShell.Archive, а вторая исторически из Windows PowerShell. Пока инцидентов с новым кодом, созданным в рамках проекта с открытыми кодами, не зафиксировано: предыдущие обновления безопасности происходили из .Net Core.

Реклама

Кратко о PowerShell Core 6.2.0 Preview1


Загрузка на GitHub.

Команда MSFT сосредоточена на автоматизации. Практически завершён процесс перехода с CI Appveyor и CI Travis на платформу visualstudio.com (Azure DevOps). Сам процесс автоматизации выпусков новых версий по всей видимости приведёт не только к снижению трудозатрат, но и большей интеграции в эко систему как Windows, так и основных Linux дистрибутивов.

Что появилось нового в Preview1?

  • #7813 и #7901 — добавлена поддержка типов byte, ushort, uint, ulong и short в виде литералов и акселераторов.
  • #7732 — для параметра Encoding добавлена поддержка IntelliSense (автозавершение).
  • #7206 — добавлена поддержка cd +
  • Как побочный эффект заработало IntelliSense для $error[0] . Отсутствие этого всегда раздражало.

Остальное можно найти в ChangeLog https://github.com/PowerShell/PowerShell/releases/tag/v6.2.0-preview.1 Как всегда там множество изменений маленьких и больших.

 

 

PowerShell Core 6.1 выпущен!


Официальный анонс https://blogs.msdn.microsoft.com/powershell/2018/09/13/announcing-powershell-core-6-1/

Release Notes и загрузка https://github.com/PowerShell/PowerShell/releases

Также доступен в Snap. Постепенно расширяется число репозиториев, через которые можно установить PowerShell Core.

PowerShell Core 6.1 работает на базе .Net Core 2.1.

Самое приятное, что были найдены и исправлены некоторые проблемы производительности. Целый ряд командлетов теперь потребляет меньше памяти и работает существенно быстрее, даже лучше, чем Windows PowerShell.

Разработчики Microsoft проделали огромную работу по обеспечению совместимости с PowerShell модулями поставляемым с Windows 10 и Window Server 2019. Да, это доступно только для новых версий. Для старых надо использовать механизм проксирования реализованный в модуле WindowsConpatibility.

Больше подробностей об изменениях в статье https://isazonov.wordpress.com/2018/08/28/powershell-core-6-1-0-rc1/

PowerShell Core 6.1.0 RC1


Приближается дата выпуска PowerShell Core 6.1.0. Предварительная дата — 13 сентября 2018 года.
А пока выпушена версия RC1 — самое время попробовать установить и сообщить о проблемах на https://github.com/PowerShell/PowerShell/
Ничего нового в RTM по сравнению с RC1 не добавится — как что стартуйте!

Загрузка https://github.com/PowerShell/PowerShell/releases/tag/v6.1.0-rc.1

1. Вы можете устанавливать предварительные версии одновременно с релизами. Это разные пакеты и они ставятся независимо. На Windows даже иконка предварительной версии будет иной. Предварительные версии имеют суффикс «-preview».
2. Добавлены пакеты в формате Snap.
3. Используется .Net Core 2.1.2 (2.1.302)
Были обнаружены некоторые проблемы производительности. Кое-что уже исправлено.
1. Одна проблема связана с OrderedDictionary класс. https://github.com/dotnet/corefx/issues/31972
Суть в том, что невозможно проверить состояние любого свойства, например, что объект пуст и не имеет добавленных элементов, без выделения памяти под внутренние структуры. PowerShell Core использует OrderedDictionary в базовом классе PSObject В результате PowerShell Core потреблял огромное количество ненужной памяти. Исправлено в [#7435](https://github.com/PowerShell/PowerShell/pull/7435).
2. Еще одна проблема с потреблением памяти и производительностью исправлена в [#7413](https://github.com/PowerShell/PowerShell/pull/7413)
В результате командлет Import-Csv стал работать быстрее до 10 раз (!) и потреблять меньше памяти.
3. Командлеты Convertfrom-Json и Invoke-RestMethod стали до 7 раз быстрее делать преобразование Json в PSObject
[#7482](https://github.com/PowerShell/PowerShell/pull/7482)
4. Значительно ускорена работа Group-Object cmdlet [#7410](https://github.com/PowerShell/PowerShell/pull/7410)
5. Было сделано еще несколько улучшений произвидительности в движке. Работа в этом направлении продолжается. Смотрите [#7112](https://github.com/PowerShell/PowerShell/issues/7112)

Что еще нового?
1. Появятся командлеты для рендеринга Markdown [6926](https://github.com/PowerShell/PowerShell/pull/6926)
Это направление работы связано с добавлением прямой поддержки файлов помощи в формате Markdown. Сейчас документация готовится в формате Markdown (https://github.com/PowerShell/PowerShell-Docs), но конвертится в MAML, чтобы мы могли использовать её в Get-Help.
2. Был удален VisualBasic из Add-Type [#7284](https://github.com/PowerShell/PowerShell/pull/7284)
Гланая мотивация — уменьшение размера дистрибутива на 5 Мб. С другой стороны мы имеем запрос на добавление поддержки F#. Посмотрим что скажут пользователи, т.е. мы с вами.
3. Была добавлена поддержка экспериментальных фичей [#7242](https://github.com/PowerShell/PowerShell/pull/7242)
Теперь в предварительных версиях возможно появление опциональных/несовместимых фичей, которые могут быть включены/выключены в конфиге для выборочного тестирования.
4. Добавлена поддержка истории в Set-Location, «cd -» — вывод предыдущей команды. [#5051](https://github.com/PowerShell/PowerShell/pull/5051)
5. Вернули акселераторы ADSI и WMI [#7085](https://github.com/PowerShell/PowerShell/pull/7085)
Собственно благодаря добавлению Windows Compatibility Pack 2.0.0 [#6958](https://github.com/PowerShell/PowerShell/pull/6958) — он оказался нужен в ядре для поддержки совместимости Windows PowerShell модулей.
6. Invoke-Item теперь работает на всех платформах [7198](https://github.com/PowerShell/PowerShell/pull/7198)
Т.е. теперь на Linux и MacOs должно работать Invoke-Item(«https://www.microsoft.com/»)
7. Теперь работает Basic Auth over HTTPS [#6890](https://github.com/PowerShell/PowerShell/pull/6890)
8. Добавлены новые командлеты для распараллеливания работы — ThreadJob модуль [#7169](https://github.com/PowerShell/PowerShell/pull/7169)
Принципиально ничего нового: используется стандартные возможности ядра, которые достаточно медленные, но стало очень удобно — попробуйте!
9. Measure-Command поддерживает скрипт-блоки [#6934](https://github.com/PowerShell/PowerShell/pull/6934)
Пример, @{prop = 3} | measure-object {$_.prop}

Там ещё много чего нового — смотрите Release Notes.

Как обычно я продолжил чистку кода. Удалено много p/invoke вызовов в FileSystem провайдере. Выполнено переформатирование Utility и Management модулей. Усправлена куча проблем в стилях и формтировании, которые репортятся в CodeFactor (StyleCop). Это работа идет медленно, так как она непроизводительная и не создает нового. Хотя приводит код в порядок и облегчает работу другим. Очень надеюсь, что удастся довести эту работу до конца в ближайшие месяцы.

Осталось напомнить, что идет процесс портирования модулей Windows. Их уже можно потестировать в последних сборках Windows 10 Preview. Читайте https://blogs.msdn.microsoft.com/powershell/2018/07/31/increased-windows-modules-coverage-with-powershell-core-6-1/ , а также попробуйте [Windows PowerShell Compatibility module](https://github.com/PowerShell/WindowsCompatibility)
Если какой-то Windows модуль не работает в PowerShell Core, то сообщить об этом можно сюда [PowerShellModuleCoverage](https://github.com/PowerShell/PowerShellModuleCoverage).

Также пишите в [основной репозиторий](https://github.com/PowerShell/PowerShell), если вы обнаружили проблемы в PowerShell Core (ошибки или плохая производительность) или имеете предложения по развитию.

PowerShell Core 6.1 Preview4


Вышла новая предварительная версия PowerShell 6.1 Preview4.

https://github.com/PowerShell/PowerShell/releases

RTM версия ожидается через несколько недель в августе.

На что стоит обратить внимание?

1. Add support to experimental features
https://github.com/PowerShell/PowerShell/pull/7242

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

2. Add ThreadJob module package and tests
https://github.com/PowerShell/PowerShell/pull/7169

Это ещё одна возможность распараллеливания выполнения скриптов. Рекомендую потестировать и написать отзывы, чтобы в августе получить обновленный вариант в RTM версии.

3. Enable UseShellExecute on all platforms
https://github.com/PowerShell/PowerShell/pull/7198

Теперь на Unix системах Invoke-Item будет работать как на Windows системах и запускать приложения в зависимости от расширения файла. Так Invoke-Item file.txt запустит текстовый редактор.

Остальное смотрите в Release Notes — ссылка выше.

Модуль ActiveDirectory работает в PowerShell Core


Хорошая новость — в последних сборках Windows 10 Preview компонент RSAT содержит модуль ActiveDirectory совместимый с PowerShell Core!

Болеетого в PowerShell Core добавлена опция CompatiblePSEdition, которая позволяет распознавать модули совместимые с  PowerShell Core. Сейчас это будет использоваться для модулей входящих в состав Windows (ставятся в C:\Windows\System32\WindowsPowerShell\v1.0\Modules). MSFT сейчас активно работает над портированием этих модулей.

PowerShell Core 6.1 Preview3


Вышел PowerShell Core 6.1 Preview3.

https://github.com/PowerShell/PowerShell/releases

Что появилось нового и хорошего? Теперь PowerShell Core работает на .Net Core 2.1. Это дает два новых преимущества, о которых я уже писал ранее. Во-первых, все работает быстрее из-за множества оптимизаций в .Net Core 2.1. Во-вторых, теперь вместо библиотеки curl на Unix системах используется родная реализация HttpClient. Это исключило конфликты с версиями curl и добавило быстродействия.

Что еще?

  1. Для предварительных версий изменились имена пакетов и имена исполнимых файлов, которые теперь имеют префикс preview.
  2. Доступен окончательный вариант обновленного командлета Add-Type. Из него только удалили поддержку VisualBasic, чтобы уменьшить размер дистрибутива.
  3. Теперь работает подстановка (IntellySense) для хешей.
  4. Исправлен Set-Date на Unix.
  5. Убрана функция more в пользу стандартных пейджеров (#6059).
  6. Добавлен Windows Compatibility Pack 2.0.0. Это позволит вернуть некоторые возможности, которые еще не портированы на Unix. В частности это использует WindowsCompatibility модуль.
  7. Добавлена поддержка Ubuntu 17.10 и 18.04 (#6769).
  8. Теперь используем PSReadLine 2.0.0-beta2. Пробуйте и пишите о багах.
  9. И еще много чего — смотрите Release Notes.