Поделиться через


Новые возможности PowerShell 7.6

PowerShell 7.6-preview.4 включает следующие функции, обновления и критические изменения. PowerShell 7.6 основан на выпуске общедоступной версии .NET 9.0.101.

Полный список изменений см. в CHANGELOG в репозитории GitHub.

Обновленные модули

PowerShell 7.6-preview.4 включает следующие обновленные модули:

  • Microsoft.PowerShell.PSResourceGet версии 1.1.0
  • PSReadLine версии 2.3.6
  • Microsoft.PowerShell.ThreadJob версии 2.2.0
  • ThreadJob версии 2.1.0

ThreadJob был переименован в модуль Microsoft.PowerShell.ThreadJob. Нет различий в функциональных возможностях модуля. Чтобы обеспечить обратную совместимость скриптов, использующих старое имя, модуль ThreadJob версии 2.1.0 — это прокси-модуль, указывающий на Microsoft.PowerShell.ThreadJob версии 2.2.0.

Разрушающие изменения

  • Исправление WildcardPattern.Escape для правильного удаления резервных символов (#25211) (спасибо) @ArmaanMcleod!)
  • Преобразование -ChildPath параметра string[] в Join-Path командлет (No 24677) (спасибо) @ArmaanMcleod!)
  • Убрать хвостовой пробел из имени источника события (#24192) (спасибо @MartinGC94!))

Улучшения автозаполнения с помощью клавиши TAB

  • Обновите вывод типа именованного блока и блока операторов, чтобы не учитывать операторы присваивания и операторы инкремента/декремента в их выходных данных (#21137) (спасибо )
  • Добавление -PropertyType дополнителя аргументов для New-ItemProperty (#21117) (спасибо @ArmaanMcleod!))
  • Добавление поддержки одинарной или двойной кавычки для -Noun параметра Get-Command (#24977) (спасибо @ArmaanMcleod!))
  • Добавить поддержку завершения для одинарных/двойных кавычек параметра -PSEdition для Get-Module (#24971) (Спасибо @ArmaanMcleod!))
  • Преобразуйте InvalidCommandNameCharacters в AnalysisCache на SearchValues<char> для более эффективного поиска символов (#24880) (Спасибо @ArmaanMcleod!))
  • Преобразование s_charactersRequiringQuotes в завершителях автозаполнения на SearchValues<char> для более эффективного поиска символов (#24879) (Спасибо @ArmaanMcleod!))
  • Обновите IndexOfAny() вызовы с недопустимым путем или именем файла на SearchValues<char>, чтобы более эффективно искать символы ([#24896][24896]) (спасибо @ArmaanMcleod!))
  • Замените char[] массив в CompletionRequiresQuotes на кэшированный SearchValues<char> (#24907) (спасибо @ArmaanMcleod!))
  • Добавление обработки кавычек в Verb, StrictModeVersion, Scope и PropertyType завершителях аргументов с помощью одного вспомогательного метода (#24839) (спасибо @ArmaanMcleod!))
  • Исправление завершения общего доступа с поставщиком и пробелов (№19440) (Спасибо @MartinGC94!))
  • Улучшение вывода типов переменных (#19830) (спасибо) @MartinGC94!)
  • Добавление подсказок для завершения хэш-ключей (#17864) (спасибо) @MartinGC94!)
  • Исправить вывод типов параметров в классических функциях (#25172) (спасибо @MartinGC94!))
  • Улучшение вывода типа назначения (#21143) (спасибо) @MartinGC94!)
  • Исключение вневариантных назначений в пределах одного и того же CommandAst при выводе переменных (#25224) (спасибо) @MartinGC94!)
  • Исправление завершения параметров при сбое требований к скрипту (#17687) (спасибо) @MartinGC94!)
  • Улучшение завершения аргументов атрибутов (#25129) (спасибо) @MartinGC94!)
  • Исправление завершения, которое зависит от псевдобинирования в блоках скриптов (No 25122) (спасибо) @MartinGC94!)
  • Не заполняйте повторяющиеся имена команд (#21113) @MartinGC94!)
  • Добавление завершения для переменных, назначаемых перенаправлением команд (#25104) (благодарим @MartinGC94!)
  • Исправление TypeName.GetReflectionType() для работы, когда TypeName экземпляр представляет определение универсального типа в пределах a GenericTypeName (#24985)
  • Обновите завершение назначения переменных или свойств, чтобы вернуться к выводу типов (#21134) (спасибо) @MartinGC94!)
  • Обработка вывода типов для перенаправленных команд (#21131) (Спасибо @MartinGC94!))
  • Используйте Get-Help подход для поиска about_*.help.txt файлов с правильной локалью для завершения (#24194) (благодарим @MartinGC94!)
  • Исправление завершения переменных, назначенных внутри циклов Do (No 25076) (спасибо) @MartinGC94!)
  • Исправление завершения путей поставщика, когда путь возвращает себя вместо дочерних элементов (No 24755) (спасибо) @MartinGC94!)
  • Разрешение завершения областных переменных без явного указания области (#20340) (спасибо) @MartinGC94!)
  • Исправлена проблема с неполными результатами при завершении путей с подстановочными знаками в поставщиках нефайловых систем (#24757) (Спасибо @MartinGC94!))

Улучшения командлета

  • Добавление -ExcludeModule параметра Get-Command в (#18955) (спасибо) @MartinGC94!)
  • Возвратите корректное значение свойства FileName для Get-Item, при перечислении альтернативных потоков данных (#18019) (Спасибо @kilasuit!))
  • Исправлено сообщение Get-ItemProperty об ошибке без прекращения исключения приведения (No 21115) (спасибо) @ArmaanMcleod!)
  • Исправлена ошибка в обработке объекта XmlNode q (No 24669) (спасибо) @brendandburns!)
  • Ошибка при New-Item -Force передаче недопустимого имени каталога (#24936) (спасибо) @kborowinski!)
  • Разрешить Start-Transcript использовать $Transcript, что является обернутой строкой PSObject, чтобы указать путь транскрипта (#24963) (спасибо @kborowinski!))
  • Повышение Start-Process -Wait эффективности опроса (No 24711) (спасибо @jborean93!)
  • Добавить завершение модулей по их короткому имени (#20330) (Спасибо) @MartinGC94!)

Улучшения двигателя

  • Добавлен модуль AIShell в список сбора данных телеметрии (No 24747)
  • Добавлена вспомогательная функция для получения имен перечислений в формате массива (#17785) (спасибо @fflaten!))
  • Обновление DnsNameList для X509Certificate2 для использования X509SubjectAlternativeNameExtension.EnumerateDnsNames() метода (#24714) (спасибо) @ArmaanMcleod!)
  • Stringify ErrorRecord с пустым сообщением об исключении в пустую строку (#24949) (спасибо) @MatejKafka!)
  • Добавьте PipelineStopToken к Cmdlet, который будет сигнализироваться при остановке конвейера (#24620) (Спасибо @jborean93!))
  • Возврат к AppLocker после WldpCanExecuteFile (#24912)
  • Переместите ведение журнала вызова метода .NET после осуществления необходимого преобразования типов аргументов метода (#25022)
  • Исправление бесконечного цикла в выводе типа переменной (No 25206) (спасибо) @MartinGC94!)
  • Удалите старое нечеткое предложение и исправьте предложение имени файла локального скрипта (#25177)
  • Сделать SystemPolicy общедоступные API видимыми, но не op на платформах Unix, чтобы они могли быть включены в PowerShellStandard.Library (No 25051)
  • Явная установка стандартных дескрипторов при запуске процесса с помощью -NoNewWindow (#25061)
  • Исправление подсказки для расширения переменной и включение desc (No 25112) (спасибо) @jborean93!)
  • Допускается использование пустой строки префикса в 'Import-Module -Prefix', чтобы переопределить префикс по умолчанию в манифесте (#20409). Благодарим @MartinGC94!).
  • Используйте файл скрипта для завершения относительных путей в инструкциях using (#20017). Спасибо @MartinGC94!)
  • Разрешить разбор DSC с помощью уровней перевода архитектуры ОС (#24852) (спасибо) @bdeb1337!)

Экспериментальные функции

В PowerShell 7.6-preview.3 включены следующие экспериментальные функции:

  • PSNativeWindowsTildeExpansion — добавление поддержки расширения тильды для исполняемых файлов, характерных для Windows.
  • PSRedirectToVariable — разрешить перенаправление в переменную
  • PSSerializeJSONLongEnumAsNumber - ConvertTo-Json теперь обрабатывает большие перечисления как числа