PowerShell – мощный инструмент, который ИТ-администраторы используют прежде всего для автоматизации и управления большим числом систем. Недавно Microsoft выпустила инструкции по управлению резервными копиями параметров Windows с помощью PowerShell, а также по автоматизации активации Windows вместо использования slmgr.vbs. Теперь компания объявила об общедоступном выпуске PowerShell 7.7.

Основа .NET 11 и новые команды
PowerShell 7.7 построен на .NET 11. Microsoft продолжает согласовывать выпуски PowerShell и .NET: предыдущая версия PowerShell 7.6 использовала .NET 10. Новый выпуск относится к ветке со стандартным сроком поддержки – Standard Term Support (STS). Основное внимание уделено безопасности, расширению набора команд и повышению надежности.
Модули
- Microsoft.PowerShell.PSResourceGet
- Microsoft.PowerShell.Archive

Новые и улучшенные команды
- Добавлен командлет
New-TemporaryDirectory. - В
Join-Pathпоявился параметр-Extension. - В
Format-Table,Format-ListиFormat-Customдобавлен параметр-ExcludeProperty. Get-AuthenticodeSignatureтеперь возвращает свойствоSubjectAlternativeName.- В
WildcardPatternдобавлен методToRegex(). New-Guidпо умолчанию создает UUID версии 7, которые можно сортировать по времени.
Улучшения безопасности
- В новой версии усилена защита режима ограниченного языка – Constrained Language Mode.
- Улучшена проверка аргументов и кадров при удаленном взаимодействии через PowerShell и ужесточена проверка при распаковке обновляемой справки.
- Командлет
Test-Jsonбольше не разрешает внешние ссылки на схемы без явного указания пользователя.

Изменения, нарушающие обратную совместимость
Перед развертыванием PowerShell 7.7 в рабочей среде необходимо учесть несколько изменений:
New-Guidпо умолчанию создает UUID версии 7 с возможностью сортировки по времени вместо UUID версии 4. Если нужен полностью случайный GUID, следует использовать[guid]::NewGuid().Format-Table,Format-ListиFormat-Customтеперь проверяют, что значение-Propertyне равноnullи не является пустым.- Проверка аргументов на
nullили пустое значение теперь вызывает исключениеSystem.ArgumentException. - Явно заданные значения
falseдля переключателей операторовWhere-Object, например-EQ:$false, теперь обрабатываются корректно.

Несмотря на обновление в рамках седьмой основной версии, PowerShell 7.7 получил немало новых возможностей и улучшений. Проект развивается с открытым исходным кодом и принимает изменения от участников со всего мира. Подробности доступны в примечаниях к выпуску. PowerShell 7.7 доступен для скачивания на нашем сайте.
Наши наблюдения
Мы установили PowerShell 7.7.0 на тестовый ПК с Windows 11, версия 26H2 (сборка 26300.9974). Установщика MSI у этой версии нет: для Windows Microsoft выпустила пакет PowerShell-7.7.0.msixbundle и ZIP-архивы, а у версии 7.6.10 MSI еще есть. О переходе с MSI на MSIX компания сообщала в апреле. Пакет устанавливается через «Установщик приложений» за несколько секунд, после чего открывается Терминал Windows с PowerShell 7.7.0, а в списке его профилей появляется профиль PowerShell. Из того же пакета MSIX версию 7.7 устанавливает и winget.


![New-Guid в PowerShell 7.7 создает UUID версии 7 с общим началом, [guid]::NewGuid() – UUID версии 4](https://cdn.comss.ru/img/112026/2026-11-11-powershell-7-7-new-guid-v7.png)


