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


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

PowerShell 7.3 — следующий стабильный выпуск, созданный на платформе .NET 7.0.

PowerShell 7.3 включает следующие функции, обновления и критические изменения.

Критические изменения и улучшения

  • В этом выпуске API Windows были обновлены или удалены для соответствия требованиям, что означает, что PowerShell 7.3 не работает в Windows 7. Хотя Windows 7 больше не поддерживается, предыдущие сборки могут работать в Windows 7.
  • PowerShell Direct для Hyper-V поддерживается только в Windows 10 версии 1809 и выше.
  • Test-Connection не работает из-за намеренного критического изменения в .NET 7. Эта проблема отслеживается здесь: #17018.
  • Добавьте clean блок в блок скрипта в качестве однорангового узла beginprocessи end разрешить простую очистку ресурсов (No 15177)
  • Изменение по умолчанию для $PSStyle.OutputRenderingузла
  • Создание Out-String и Out-File сохранение входных данных строк без изменений (#17455)
  • Переместите определение данных типа System.Security.AccessControl.ObjectSecurity в модуль Microsoft.PowerShell.Security (#16355) (спасибо)@iSazonov!)
    • Перед применением этого изменения не требуется явно импортировать модуль Microsoft.PowerShell.Security, чтобы использовать свойства кода, определенные для экземпляра System.Security.AccessControl.ObjectSecurity.
    • После применения этого изменения необходимо явно импортировать модуль Microsoft.PowerShell.Security, чтобы использовать свойства и методы кода.

Улучшения для заполнения нажатием клавиши TAB

  • PowerShell 7.3 включает PSReadline 2.2.6, что позволяет прогнозировать IntelliSense по умолчанию. Дополнительные сведения см. в about_PSReadLine.
  • Исправлено завершение нажатием клавиши TAB в блоке скрипта для ValidateScriptAttribute (#14550) (спасибо)@MartinGC94!)
  • Добавлено завершение вкладки для меток цикла после break/continue (#16438) (спасибо)@MartinGC94!)
  • Улучшение завершения хэш-таблицы в нескольких сценариях (#16498) (спасибо)@MartinGC94!)
    • Сплаттинг параметров
    • Параметр Arguments для Invoke-CimMethod
    • Параметр FilterHashtable для Get-WinEvent
    • Параметр Property для командлетов CIM
    • Удаление дублей из сценариев автоматического заполнения элементов
  • Поддержка косой черты в UNC-пути (UNC-пути) (No 17111) (спасибо)@sba923!)
  • Улучшение автозаполнения члена (No 16504) (спасибо)@MartinGC94!)
  • Приоритет завершения ValidateSet по сравнению с перечислениями для параметров (No 15257) (спасибо)@MartinGC94!)
  • Добавление поддержки вывода типов для универсальных методов с параметрами типа (#16951) (спасибо)@MartinGC94!)
  • Улучшение вывода типов и завершения (No 16963) (спасибо)@MartinGC94!)
    • Позволяет отображать методы в результатах завершения для ForEach-Object -MemberName.
    • Предотвращает завершение выражений, возвращающих void, например ([void]("")).
    • Разрешает отображение конструкторов классов, отличных от используемых по умолчанию, если завершение класса основано на AST.
  • Улучшение вывода типов для $_ (No 17716) (спасибо)@MartinGC94!)
  • Исправление вывода типов для ICollection (#17752) (спасибо)@MartinGC94!)
  • Запрет удаления фигурных скобок при завершении переменных (#17751) (спасибо)@MartinGC94!)
  • Добавление завершения для выражений индекса для словарей (#17619) (спасибо)@MartinGC94!)
  • Исправление завершения типа для маркеров атрибутов (No 17484) (спасибо)@MartinGC94!)
  • Улучшение завершения динамической вкладки параметров (#17661) (спасибо)@MartinGC94!)
  • Избегайте позиционных параметров привязки при завершении параметра перед значением (No 17693) (спасибо)@MartinGC94!)

Улучшена обработка ошибок.

  • Правильно задать $? для выражения команды с перенаправлениями (#16046)
  • Исправлена ошибка приведения при использовании $PSNativeCommandUseErrorActionPreference (#15993)
  • При необходимости ErrorActionPreference выполните обработку ошибок собственной команды (#15897)
  • Укажите путь исполняемого файла как TargetObject для ошибки ошибки выхода без нуля (No 16108) (спасибо)@rkeithhill!)

Улучшения сеансов и удаленного взаимодействия

  • Добавьте -Options в PSRP команды SSH, чтобы разрешить передачу параметров OpenSSH напрямую (#12802) (спасибо)@BrannenGH!)
  • Добавьте -ConfigurationFile параметр, чтобы pwsh разрешить запуск нового процесса с конфигурацией сеанса, определенной .pssc в файле (#17447).
  • Добавление поддержки использования New-PSSessionConfigurationFile на платформах, отличных от Windows (#17447)

Обновлены командлеты

  • Добавление -HttpVersion параметра в веб-командлеты (#15853) (спасибо)@hayhay27!)
  • Добавление поддержки веб-командлетов для открытых входных тегов (#16193) (спасибо)@farmerau!)
  • ИсправлениеConvertTo-Json -Depth, позволяющее максимально разрешить 100 (No 16197) (спасибо)@KevRitchie!)@rkeithhill!)
  • Улучшение обработки переменных при вызове Invoke-Command$using: с помощью выражения (#16113) (спасибо)@dwtaber!)
  • Добавление-StrictMode, чтобы Invoke-Command разрешить указание строгого режима при локальном вызове команды (#16545) (спасибо)@Thomas-Yu!)
  • Добавьте clean блок в блок скрипта в качестве однорангового узла beginprocessи end разрешить простую очистку ресурсов (No 15177)
  • Добавление -Amended переключателя в Get-CimClass командлет (No 17477) (спасибо)@iSazonov)
  • Изменено ConvertFrom-Json -AsHashtable использование упорядоченного хэш-таблицы (#17405)
  • Удалены escape-последовательности ANSI в строках перед отправкой Out-GridView в (#17664)
  • Добавлен параметр New-TimeSpan Миллисекунда (#17621) (спасибо)@NoMoreFood!)
  • Отображение необязательных параметров при отображении определений методов и перегрузки (No 13799) (спасибо)@eugenesmlv!)
  • Разрешить выполнение команд, даже если текущий рабочий каталог больше не существует (#17579)
  • Добавление поддержки HTTPS с Set-AuthenticodeSignature -TimeStampServer помощью #16134 (спасибо) @Ryan-Hutchison-USAF!)
  • Отображение десятичных чисел в таблице с использованием текущего языка и региональных параметров (#17650)
  • Добавление акселератора типов, упорядоченного для OrderedDictionary (No 17804) (благодарим@fflaten!)
  • Добавление find.exe в устаревшее поведение привязки аргументов для Windows (#17715)
  • Добавление -noprofileloadtime переключателя в pwsh (No 17535) (спасибо)@rkeithhill!)

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

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

В PowerShell 7.3 следующие экспериментальные функции стали основными:

  • PSAnsiRenderingFileInfo — Эта функция добавляет $PSStyle.FileInfo элемент и включает цвет определенных типов файлов.

  • PSCleanBlock— добавляет clean блок в блок скрипта в качестве однорангового узла beginprocessи end позволяет легко очистить ресурсы.

  • PSAMSIMethodInvocationLogging — расширяет данные, отправленные в AMSI для проверки, чтобы включить все вызовы элементов метода .NET.

  • PSNativeCommandArgumentPassing — PowerShell теперь использует свойство ArgumentList объекта StartProcessInfo, а не старый механизм восстановления строки при вызове собственного исполняемого файла.

    PowerShell 7.3.1 добавляется sqlcmd.exe в список собственных команд в Windows, использующих Legacy стиль передачи аргументов.

  • PSExec — добавляет новый Switch-Process командлет (псевдоним exec) для обеспечения exec совместимости для систем, отличных от Windows.

    PowerShell 7.3.1 изменил exec псевдоним на функцию, которая выполняет оболочку Switch-Process. Функция позволяет передавать параметры в собственную команду, которая, возможно, ошибочно привязана к параметру WithCommand .

В PowerShell 7.3 появились следующие экспериментальные функции:

  • PSNativeCommandErrorActionPreference — добавляет переменную $PSNativeCommandUseErrorActionPreference, чтобы ошибки, вызванные собственными командами, считались ошибками PowerShell.

PowerShell 7.3 удалил следующие экспериментальные функции:

  • PSNativePSPathResolution Экспериментальная функция больше не поддерживается.
  • PSStrictModeAssignment Экспериментальная функция больше не поддерживается.

Дополнительные сведения см. в статье об использовании экспериментальных функций.