Новые возможности 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
блок в блок скрипта в качестве однорангового узлаbegin
process
и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!) - Улучшение обработки переменных при вызове
Invoke-Command
$using:
с помощью выражения (#16113) (спасибо)@dwtaber!) - Добавление
-StrictMode
, чтобыInvoke-Command
разрешить указание строгого режима при локальном вызове команды (#16545) (спасибо)@Thomas-Yu!) - Добавьте
clean
блок в блок скрипта в качестве однорангового узлаbegin
process
и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
блок в блок скрипта в качестве однорангового узлаbegin
process
и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
Экспериментальная функция больше не поддерживается.
Дополнительные сведения см. в статье об использовании экспериментальных функций.
PowerShell