Вышел PowerShell 7.0 Preview1


Страница загрузки https://github.com/PowerShell/PowerShell/releases/tag/v7.0.0-preview.1

Там же вы найдете список последних изменений. Некоторые очень полезные. Например, сделана оптимизация работы с объектами в движке, что делает его быстрее, в некоторых сценариях это очень заметно. Ожидаем еще несколько важных улучшений производительности. О других изменениях я уже писал ранее, смотрите предыдущие посты.

Почему 7.0, а не 6.3? Читаем в блоге команды https://devblogs.microsoft.com/powershell/the-next-release-of-powershell-powershell-7/. По сути происходит очередной этап миграции платформы: после .Net Core 3.0 следующая версия будет 5.0, и она окончательно заменит .Net Framework (последняя версия будет 4.8), PowerShell 7.0 это шаг в том же направлении — заменить Windows PowerShell 5. Последующие выпуски PowerShell будут привязаны к выпускам .Net, в том числе LTS (Long Term Servicing).

Главное изменение внутри — теперь движок работает на .Net Core 3.0 Preview. Релиз .Net Core 3.0 намечен на сентябрь, значит релиз PowerShell 7.0 будет не позднее ноября.

Сейчас работа над PowerShell 7.0 будет заключаться в адаптации к .Net Core 3.0. С одной стороны можно убрать некоторый код и использовать стандарное API, которое стало доступным. С другой стороны можно использовать новые возможности, которые появились в 3.0. Например, теперь доступно WinForms, и мы вернем обратно Out-GridView (только на Windows конечно).

Если у вас есть идеи, предложения, то добро пожаловать на https://github.com/PowerShell/PowerShell/. Любой вклад идёт всем на пользу. Не думайте, что это сложно: идея, обсуждение, реализация — всё просто, и вы делаете только ту часть, которая вам важна и интересна, сообщество может подхватить и сделать остальное. Хлтя может не быстро. И это повод начать по-раньше.

Напомню также, что есть https://github.com/MicrosoftDocs/PowerShell-Docs , где вы можете запросить изменения в документацию или сделать их сами. Нашли ошибку — пишите сразу, не откладывайте.

Реклама

Опыт перехода на Windows 10


Этот 2019 год последний в жизненном цикле Windows 7. Это ставит задачу перехода на более новую версию Windows 10 (1809/Ent 2019).

Самый главный опыт — систему надо ставить с нуля. Почему?

  1. Официально обновление поверх (in-place upgrade) не поддерживается.
  2. Существует недокументированный способ, как это обойти.
  3. Этим способом лучше не мигрировать, так как будут проблемы на каждом шагу:
    • Часто нужны новые версии драйверов для сетевых и видео карт.
    • Нужно предварительно снести антивирус. Манипуляции с KES 10 и 11 не дали надежного результата. Учтите, что KES 11 Device Control может работать на Windows 10 немного не так как раньше: у нас отвалились некоторые USB принтеры — заработали после правки настроек Device Control.
    • Нужно обязательно удалить App-V и TMG клиент до обновления.
    • Не все приложения будут нормально работать — их надо выявить и также удалить до обновления системы. Скорее всего само приложение надо обновить до версии, которое работает на Windows 10. Например, Crypto Pro 3 -> 4.
    • В Windows 7 версия профиля 3. На Windows 10 1809 — уже 6. Не факт, что профили пользователей смигрируется правильно и без потерь.
    • Windows 7 очень надежная система и скорее всего работает на конкретных компьютерах много лет. Это означает, что на диске скопилось много мусора. Установка поверх не удалит его полностью. Например, давно ненужные установленные программы и их рабочие файлы. Древние архивы и прочие «запасы» в профилях пользователей.

Установка новой системы также хороший повод протестировать и обновить версии других приложений. Например, перейти на Office 2016 или 2019 — про это будет отдельный пост.

Если у вас типовая конфигурация, то вы можете отладить обновление поверх. Но если у вас зоопарк оборудования и приложений, то вы съэкономите массу времени, если будете ставить новые системы с нуля.

.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 как дополнительный компонент.

Настройка Start Layout в Windows 10


Теперь мы можем централизованно настраивать Start Layout для корпоративных пользователей.

Описано в блоге https://blogs.technet.microsoft.com/deploymentguys/2016/03/07/windows-10-start-layout-customization/

Документация https://docs.microsoft.com/en-us/windows/configuration/customize-and-export-start-layout

По поводу DesktopApplicationLinkPath — это работает, но сам файл lnk должен быть в папке меню, например, %ALLUSERPROFILE%\Microsoft\Windows\Start Menu\Programs

Памятка по установке RSAT


Последние версии RSAT уже не имеют msi файлов.

Установка через GUI не работает, поэтому скрипт:

$currentWU = Get-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name "UseWUServer" | select -ExpandProperty UseWUServer
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name "UseWUServer" -Value 0
Restart-Service wuauserv
Get-WindowsCapability -Name RSAT* -Online | Add-WindowsCapability –Online
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name "UseWUServer" -Value $currentWU
Restart-Service wuauserv

Это отключает WSUS и грузит RSAT из Интернет. Вместо этого можно скачать ISO с FoD (Feature on Demand), распаковать и указать путь к этой директории в параметре Source.

Вышел 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. Делитесь опытом, запрашивайте новые фичи или улучшения существующих. Участвуйте в планировании следующей версии. И включайтесь в процесс разаработки — это не так сложно.