Новые возможности PowerShell 7.4
PowerShell 7.4 включает следующие функции, обновления и критические изменения. PowerShell 7.4 основана на .NET 8.0.0.
Полный список изменений доступен в журнале изменений в репозитории GitHub.
Критические изменения
- Образы Docker сервера Nano Server недоступны для этого выпуска
- Добавлен параметр ProgressAction в общие параметры
- Обновите некоторые API PowerShell, чтобы вызвать АргументException вместо 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)
- Исправление завершения позиционного аргумента (No 17796)
- Приоритет набора параметров по умолчанию при выполнении позиционных аргументов (#18755)
- Улучшение псевдо привязки для динамических параметров (#18030)
- Улучшение вывода типов хэш-ключей (#17907)
- Исправлена ошибка вывода типов для пустых операторов возврата (#18351)
- Улучшение вывода типов для Get-Random (#18972)
- Исправление вывода типов для всех переменных области (#18758)
- Улучшение перечисления выводимых типов в конвейере (No 17799)
- Добавление завершения для значений в сравнениях при сравнении перечислений (#17654)
- Добавление завершения назначения свойств для перечислений (No 19178)
- Исправление завершения для свойств переменной PSCustomObject (#18682)
- Исправление завершения члена в аргументе атрибута (#17902)
- Исключить избыточные псевдонимы параметров из результатов завершения (No 19382)
- Исправление завершения члена класса для классов с базовыми типами (#19179)
- Добавление завершения для ключевых слов Using (#16514)
- Исправлена утечка переменной TabExpansion2 при завершении переменных (#18763)
- Включение завершения переменных в областях ScriptBlock (#19819)
- Исправлено завершение переменной инструкции foreach (No 19814)
- Исправление приоритета типа переменной (#18691)
- Исправление завершения члена для класса Enum PowerShell (#19740)
- Исправлена синтаксический анализ литералов массива в выражениях индекса в вызовах методов (#19224)
- Улучшение завершения пути (No 19489)
- Исправлена ошибка индексирования из связанной ошибки в CompleteInput для пустых входных данных скрипта (#19501)
- Повышение производительности завершения переменной (#19595)
- Улучшение завершения хэш-таблицы для назначений ограниченных переменных типа, вложенных хэш-таблиц и многое другое (#17660)
- Вывод выходных данных внешнего приложения в виде строк (#19193)
- Обновление завершения параметра для перечисления, чтобы исключить значения, не разрешенные атрибутами
ValidateRange
(#17750) (спасибо@fflaten!). - Исправление динамического завершения параметров (#19510)
- Добавление завершения для переменных, назначенных инструкцией Data (#19831)
- Исправление расширения тильды (
~
) в системах Windows, чтобы$home
предотвратить критические варианты использования с помощью собственных команд (No 21529)
Усовершенствования веб-командлетов
Многие благодаря @CarloToso и другим за всю работу по улучшению веб-командлетов.
- Исправление декомпрессии в веб-командлетах, чтобы включить Brotli (No 17955) (спасибо)@iSazonov!)
- Webcmdlets добавляет 308 для кодов перенаправления и небольшой очистки (#18536)
- Завершите отрисовку индикатора хода выполнения в Invoke-WebRequest при завершении или отмене загрузки (#18130)
- Веб-командлеты получают интервал Retry-After из заголовков ответа, если код состояния равен 429 (#18717)
- Веб-командлеты задают кодировку по умолчанию для кодировки charset в UTF8 (#18219)
- Сохранение WebSession.MaximumRedirection из изменений (#19190)
- WebCmdlets анализирует объявление XML, чтобы получить значение кодирования, если оно присутствует. (#18748)
- Исправление с помощью xml -Body в webcmdlets без кодирования (#19281)
- Настройка поведения метода PUT в POST для типа контента по умолчанию в WebCmdlets (#19152)
- Учитывайте ContentType из заголовков в WebCmdlets (No 19227)
- Разрешить сохранить исходный метод HTTP, добавив -PreserveHttpMethodOnRedirect в веб-командлеты (#18894)
- Webcmdlets отображает ошибку https на http-перенаправление (#18595)
- Добавление параметра AllowInsecureRedirect в веб-командлеты (#18546)
- Улучшение подробного сообщения в веб-командлетах при неизвестности длины содержимого (#19252)
- Создайте относительный URI для ссылок из ответа
Invoke-WebRequest
(No 19092) - Исправление перенаправления для
-CustomMethod POST
webCmdlets (#19111) - Удаление предыдущего ответа в Webcmdlets (#19117)
- Улучшение
Invoke-WebRequest
формата ошибок XML и JSON (#18837) - Добавление validateNotNullOrEmpty в outFile и InFile параметров WebCmdlets (#19044)
- Список заголовков обновлений HttpKnownHeaderNames (#18947)
Invoke-RestMethod -FollowRelLink
исправления ссылок, содержащих запятые (#18829)- Исправлена ошибка с управлением перенаправлением и сохранением подлинности в веб-командлетах (No 18902)
- Добавление StatusCode в HttpResponseException (#18842)
- Поддержка постоянных подключений HTTP в веб-командлетах (No 19249) (спасибо)@stevenebutler!)
- Небольшая очистка
Invoke-RestMethod
(#19490) - Улучшение подробного сообщения WebCmdlets для отображения правильной версии HTTP (#19616)
- Добавление FileNameStar в MultipartFileContent в WebCmdlets (#19467)
- Исправление состояния HTTP от 409 до 429 для WebCmdlets, чтобы получить интервал повтора из заголовка Retry-After. (#19622) (спасибо)@mkht!)
- Изменение
-TimeoutSec
и добавление-OperationTimeoutSeconds
в веб-командлеты (No 19558) (спасибо @stevenebutler!) другим командлетам-ConnectionTimeoutSeconds
) - Поддержка 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 и
ConvertTo-Csv
Export-Csv
командлетов (#19108) (спасибо)@ArmaanMcleod!) - Добавление параметров
Stop-Transcript
Confirm и WhatIf в (No 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
для удаленного использования (No 18222) (спасибо)@dkaszews!)Resolve-Path
Ускорение относительного разрешения пути (#19171) (спасибо)@MartinGC94!)- Добавлен параметр
-CaseInsensitive
switch вSelect-Object
иGet-Unique
командлеты (No 19683) (спасибо)@ArmaanMcleod!) Restart-Computer
иStop-Computer
должен завершиться ошибкой, если не выполняется с помощью sudo в Unix (#19824)
Улучшения подсистемы
Обновления для $PSStyle
- Добавляет свойства Dim и DimOff (#18653)
- Добавлены статические методы в класс PSStyle, который сопоставляет значения переднего плана и фона ConsoleColor со escape-последовательностями ANSI (#17938)
- Заголовки таблиц для вычисляемых полей форматируются курсивом по умолчанию
- Добавлена поддержка уважения
$PSStyle.OutputRendering
к удаленному узлу (No 19601) - Обновлены данные телеметрии для включения использования
CrescendoBuilt
модулей (No 20371)
Другие обновления ядра
- Сделайте класс PowerShell не филиалом с Runspace при объявлении атрибута
NoRunspaceAffinity
(#18138) - Добавление атрибута
ValidateNotNullOrWhiteSpace
(#17191) (спасибо)@wmentha!) - Добавление
sqlcmd
в список для передачи устаревших аргументов (#18559) - Добавление функции
cd~
(No 18308) (спасибо)@GigaScratch!) - Исправление синтаксического анализа типов массива в универсальных типах (#19205) (спасибо)@MartinGC94!)
- Исправление глоббинга подстановочных знаков в корне путей устройства (No 19442) (спасибо)@MartinGC94!)
- Добавление общедоступного API для получения расположений элементов PSModulePath (#19422)
- Исправление неправильной строки преобразования типов (#19560) (спасибо)@MartinGC94!)
- Исправление медленного выполнения при использовании многих точек останова (#14953) (спасибо)@nohwnd!)
- Удаление кода, связанного с
#requires -pssnapin
(#19320)
Экспериментальные функции
PowerShell 7.4 содержит следующие экспериментальные функции:
- PSFeedbackProvider — заменяет жестко закодированную платформу предложений расширяемым поставщиком отзывов.
- Эта функция также добавляет свойства
$PSStyle.Formatting
FeedbackName, FeedbackText и FeedbackAction, чтобы изменить форматирование сообщений обратной связи.
- Эта функция также добавляет свойства
- PSModuleAutoLoadSkipOfflineFiles — обнаружение модулей теперь пропускает файлы, помеченные поставщиками облачных служб как не полностью на диске.
- PSCommandWithArgs — добавление поддержки передачи аргументов командам в виде одной строки
Следующие экспериментальные функции стали основными:
- PSConstrainedAuditLogging
- PSCustomTableHeaderLabelDecoration
- PSNativeCommandErrorActionPreference
- PSNativeCommandPreserveBytePipe
- PSWindowsNativeCommandArgPassing
PowerShell 7.4 изменила следующие экспериментальные функции:
- PSCommandNotFoundSuggestion . Эта функция теперь использует расширяемый поставщик отзывов, а не жестко закодированные предложения (No 18726)
Дополнительные сведения см. в статье об использовании экспериментальных функций.
PowerShell