Новые возможности PowerShell 7.4
PowerShell 7.4.7 включает следующие функции, обновления и критические изменения. PowerShell 7.4.7 основана на .NET 8.0.12.
Полный список изменений см. в CHANGELOG в репозитории GitHub.
Критические изменения
- Образы Docker для Nano Server недоступны для этого выпуска
- Добавлен параметр ProgressAction в общие параметры
- Обновите некоторые API PowerShell, чтобы выбрасывать ArgumentException, а не ArgumentNullException, когда аргумент является пустой строкой (#19215) (благодарим @xtqqczze!)).
- Удаление кода, связанного с
#requires -pssnapin
(#19320) -
Test-Json
теперь использует JsonSchema.NET вместо Newtonsoft.Json.Schema.- В связи с этим изменением
Test-Json
больше не поддерживает схемы версии 4. (#18141) (Спасибо @gregsdennis!). Дополнительные сведения о схемах JSON см. в документации по схеме JSON. Это также нарушаетTest-Json
для файлов JSON и JSONC с комментариями. -
ConvertFrom-Json
поддержка по-прежнему использует Newtonsoft.Json.Schema, чтобы он смог преобразовать JSON-файлы с комментариями.
- В связи с этим изменением
- Выходные данные из
Test-Connection
теперь содержат более подробные сведения о тестах подключения TCP - .NET представила изменения, которые повлияли на
Test-Connection
. Командлет теперь возвращает ошибку, сообщающую о том, что необходимо использоватьsudo
на платформах Linux при использовании пользовательского размера буфера (#20369) - Экспериментальная функция PSNativeCommandPreserveBytePipe теперь является основной. PowerShell теперь сохраняет данные байтового потока при перенаправлении stdout поток собственной команды в файл или при передаче данных байт-потока в поток stdin собственной команды.
- Измените способ обработки относительных путей в
Resolve-Path
при использовании параметра RelativeBasePath (#19755). Благодарим @MartinGC94!). - Удаление неиспользуемого кода PSv2 — удаляет функцию TabExpansion (#18337)
Обновления установщика
Пакет MSI Windows теперь предоставляет возможность отключить телеметрию PowerShell во время установки. Дополнительные сведения см. в статье Установка пакета MSI из командной строки.
Обновленные версии PSResourceGet и PSReadLine
PowerShell 7.4 включает Microsoft.PowerShell.PSResourceGet версии 1.0.1. Этот модуль устанавливается параллельно с PowerShellGet версии 2.2.5 и PackageManagement версии 1.4.8.1. Для получения дополнительной информации см. документацию по Microsoft.PowerShell.PSResourceGet.
PowerShell 7.4 теперь включает PSReadLine версии 2.3.4. Для получения дополнительных сведений см. документацию для PSReadLine.
Улучшения автоматического дополнения ввода с помощью клавиши Tab.
Большое спасибо @MartinGC94 и другим людям за всю их работу по улучшению автозаполнения.
- Исправлена проблема при выполнении первой команды в скрипте с пустым выражением массива (#18355)
- Исправление завершения позиционного аргумента (#17796)
- Приоритизируйте набор параметров по умолчанию при завершении позиционных аргументов (#18755)
- Улучшение псевдо привязки для динамических параметров (#18030)
- Улучшение вывода типов хэш-ключей (#17907)
- Исправлена ошибка определения типов для пустых операторов возврата (#18351)
- Улучшение вывода типов для Get-Random (#18972)
- Исправить определение типов для всех переменных области (#18758)
- Улучшить перечисление выведенных типов в конвейере (#17799)
- Добавление завершения для значений в сравнениях при сравнении перечислений (#17654)
- Добавление функции автозавершения для назначения свойств для перечислений (#19178)
- Исправление завершения свойств переменной PSCustomObject (#18682)
- Исправление завершения члена в аргументе атрибута (#17902)
- Исключить избыточные псевдонимы параметров из результатов завершения (#19382)
- Исправить подстановку членов класса для классов с базовыми типами (#19179)
- Добавить завершение для ключевых слов Using (#16514)
- Исправлена утечка переменных TabExpansion2 при выполнении переменных (#18763)
- Включить завершение переменных в пределах областей ScriptBlock (#19819)
- Исправлено завершение переменной в операторе foreach (#19814)
- Исправить приоритет выведения типа переменной (#18691)
- Исправление завершения члена для класса Enum PowerShell (#19740)
- Исправить синтаксический анализ литералов массива в индексных выражениях в вызовах методов (#19224)
- Улучшите завершение пути (#19489)
- Исправление ошибки выхода за пределы индексации в CompleteInput для пустого ввода скрипта (#19501)
- Повышение производительности завершения переменных (#19595)
- Улучшение завершения ключей хэш-таблицы для присваивания переменных с ограничениями по типу, вложенных хэш-таблиц и т. д. (#17660)
- Вывод выходных данных внешнего приложения в виде строк (#19193)
- Обновление завершения параметров для перечислений, чтобы исключить значения, не разрешенные атрибутами
ValidateRange
(#17750). Благодарим @fflaten!). - Исправление динамического автозаполнения параметров (#19510)
- Добавление завершения для переменных, назначенных инструкцией Data (#19831)
- Исправление расширяющейся тильды (
~
) в системах Windows на$home
, чтобы предотвратить нарушение использования при использовании собственных команд (#21529)
Улучшения веб-командлета
Большое спасибо @CarloToso и другим за всю работу по улучшению веб-скриптов.
- Исправление распаковки в веб-командлетах, чтобы включить Brotli (#17955) (благодарим @iSazonov!))
- Компонент Webcmdlets добавляет код 308 в список кодов перенаправления и проводит небольшую очистку (#18536)
- Выполните отрисовку индикатора хода выполнения в Invoke-WebRequest при завершении загрузки или отмене (#18130)
- Веб-командлеты получают интервал Retry-After от заголовков ответа, если код состояния равен 429 (#18717)
- Веб-командлеты задают кодировку по умолчанию в UTF8 (#18219)
- Сохраните WebSession.MaximumRedirection во избежание изменений (#19190)
- WebCmdlets анализируют XML-декларацию, чтобы определить значение кодировки, если оно присутствует. (#18748)
- Исправление использования xml--Body в webcmdlets без кодирования (#19281)
- Изменение поведения метода PUT на метод POST для типа контента по умолчанию в WebCmdlets (#19152)
- Учитывайте свойство ContentType из заголовков в WebCmdlets (#19227)
- Разрешить сохранение оригинального метода HTTP путем добавления -PreserveHttpMethodOnRedirect в веб-командлеты (#18894)
- Webcmdlets отображают ошибку при перенаправлении с https на http (#18595)
- Добавить AllowInsecureRedirect переключатель в веб-командлеты (#18546)
- Улучшите подробное сообщение в веб-командлетах, когда длина содержимого неизвестна (#19252)
- Относительный URI для ссылок создается на основе ответа в
Invoke-WebRequest
(#19092). - Исправление перенаправления для
-CustomMethod POST
в WebCmdlets (#19111) - Удаление предыдущего ответа в Webcmdlets (#19117)
- Улучшить формат ошибок xml и json
Invoke-WebRequest
(#18837) - Добавьте ValidateNotNullOrEmpty к параметрам OutFile и InFile WebCmdlets (#19044)
- Обновление списка заголовков HttpKnownHeaderNames (#18947)
-
Invoke-RestMethod -FollowRelLink
исправить ссылки, содержащие запятые (#18829) - Исправлена ошибка с управлением процесса перенаправления и хранением авторизации в веб-командлетах (#18902)
- Добавить StatusCode в HttpResponseException (#18842)
- Поддержка постоянных подключений HTTP в веб-командлетах (#19249) (Спасибо @stevenebutler!))
- Небольшая очистка
Invoke-RestMethod
(#19490) - Улучшите подробное сообщение WebCmdlets для отображения правильной версии HTTP (#19616)
- Добавьте FileNameStar в MultipartFileContent в WebCmdlets (#19467)
- Обновление HTTP статуса с 409 на 429 для WebCmdlets, чтобы получить интервал повторной попытки из заголовка Retry-After. (#19622) (Спасибо @mkht!)
- Измените
-TimeoutSec
на-ConnectionTimeoutSeconds
и добавьте-OperationTimeoutSeconds
в веб-командлеты (#19558). Благодарим @stevenebutler!). Другие командлеты. - Поддержка Ctrl+c при зависании соединения во время чтения данных в WebCmdlets (#19330) (благодарим @stevenebutler!))
- Поддержка сокета домена Unix в WebCmdlets (#19343)
Другие улучшения командлетов
-
Test-Connection
теперь возвращает ошибку о необходимости использованияsudo
на платформах Linux при использовании пользовательского размера буфера (#20369) - Добавьте типы выходных данных в команды Format (#18746) (Спасибо @MartinGC94!)
- Добавьте атрибуты типа вывода для
Get-WinEvent
(#17948) (Спасибо @MartinGC94!) - Добавьте параметры Path и LiteralPath в командлет
Test-Json
(#19042) (Спасибо @ArmaanMcleod!)) - Добавление параметра
NoHeader для командлетов и ( #19108 ) (благодарим - Добавление подтверждения и параметров WhatIf в
Stop-Transcript
(#18731) (благодарим @JohnLBevan!) - Добавьте параметр FuzzyMinimumDistance в
Get-Command
(#18261) - Сделать параметр кодировки принимающим кодировку
ANSI
в PowerShell (#19298) (благодарим @CarloToso!)) - Добавить прогресс к
Copy-Item
(#18735) -
Update-Help
теперь сообщает об ошибке при использовании неявной культуры на системах, отличных от американских. (#17780) (Спасибо @dkaszews!) - Не требуйте активности при создании записи о завершении прогресса (#18474) (Спасибо @MartinGC94!))
- Запретить отрицательные значения для параметров командлета
Get-Content
,-Head
и-Tail
(#19715) (благодарим @CarloToso!)) - Убедитесь, что
Update-Help
выдает корректную ошибку, когда текущая культура не связана с языком (#19765) (благодарим @josea!)) - Разрешить объединение параметров
-Skip
и-SkipLast
в командлетеSelect-Object
. (#18849) (Спасибо @ArmaanMcleod!) - Добавьте командлет
Get-SecureRandom
(#19587) -
Set-Clipboard -AsOSC52
для удаленного использования (#18222) (благодарим @dkaszews!) - Ускорить разрешение относительных путей
Resolve-Path
(#19171) (Спасибо @MartinGC94!)) - Добавлен параметр переключателя
-CaseInsensitive
к командлетамSelect-Object
иGet-Unique
(#19683) (благодарим @ArmaanMcleod!)) -
Restart-Computer
иStop-Computer
должны завершаться ошибкой, если не выполняются с помощью sudo в Unix (#19824)
Улучшения двигателя
Обновления для $PSStyle
- Добавляет свойства Dim и DimOff (#18653)
- Добавлены статические методы в класс PSStyle, которые сопоставляют значения цвета переднего плана и фона ConsoleColor с ANSI escape-последовательностями (#17938)
- Заголовки таблиц для вычисляемых полей форматируются курсивом по умолчанию
- Добавление поддержки соблюдения
$PSStyle.OutputRendering
на удаленном хосте (#19601) - Обновленные данные телеметрии для включения использования модулей
CrescendoBuilt
(#20371)
Другие обновления движка
- Сделать класс PowerShell не аффилированным с Runspace при объявлении атрибута
NoRunspaceAffinity
(#18138) - Добавьте атрибут
ValidateNotNullOrWhiteSpace
(#17191) (благодарим @wmentha!) - Добавьте
sqlcmd
в список для передачи устаревших аргументов (#18559) - Добавьте функцию
cd~
(#18308) (спасибо @GigaScratch!) - Исправление синтаксического анализа типов массива в универсальных типах (#19205) (благодарим @MartinGC94!))
- Исправление подстановочных знаков в корне путей устройства (#19442) (спасибо @MartinGC94!)
- Добавление общедоступного API для получения расположений элементов PSModulePath (#19422)
- Исправлена неправильная строка преобразования типов (#19560) (благодарим @MartinGC94!)
- Исправить медленное выполнение при использовании многих точек останова (#14953) (благодарим @nohwnd!))
- Удаление кода, связанного с
#requires -pssnapin
(#19320)
Экспериментальные функции
PowerShell 7.4 содержит следующие экспериментальные функции:
-
PSFeedbackProvider — заменяет жёстко закодированную структуру предложений расширяемым провайдером отзывов.
- Эта функция также добавляет свойства FeedbackName, FeedbackTextи FeedbackAction к
$PSStyle.Formatting
, которые позволяют изменить форматирование сообщений обратной связи.
- Эта функция также добавляет свойства FeedbackName, FeedbackTextи FeedbackAction к
- PSModuleAutoLoadSkipOfflineFiles - Обнаружение модулей теперь пропускает файлы, помеченные поставщиками облачных служб как не полностью на диске.
- PSCommandWithArgs — добавление поддержки передачи аргументов командам в виде одной строки
Следующие экспериментальные функции стали основными:
- PSConstrainedAuditLogging
- PSCustomTableHeaderLabelDecoration
- PSNativeCommandErrorActionPreference
- PSNativeCommandPreserveBytePipe
- PSWindowsNativeCommandArgPassing
PowerShell 7.4 изменила следующие экспериментальные функции:
- PSCommandNotFoundSuggestion . Эта функция теперь использует расширяемый поставщик отзывов вместо жестко закодированных предложений (#18726)
Дополнительные сведения об экспериментальных функциях см. в Использовании экспериментальных функций.
PowerShell