Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
PowerShell 7.0 — это открытая, кроссплатформенная (Windows, macOS и Linux) версия PowerShell, созданная для управления разнородными средами и гибридным облаком.
В этом релизе мы представляем ряд новых функций, включая:
- Параллелизация конвейера с
ForEach-Object -Parallel - Новые операторы:
- Тройный оператор:
a ? b : c - Операторы цепочки конвейеров:
||и&& - Нулевые условные операторы:
??и??=
- Тройный оператор:
- Упрощённый и динамический обзор ошибок и
Get-Errorcmdlet для более простого обнаружения ошибок - Слой совместимости, позволяющий пользователям импортировать модули в неявной сессии Windows PowerShell
- Автоматические уведомления о новой версии
- Возможность вызывать ресурсы DSC напрямую из PowerShell 7 (экспериментальное)
Чтобы увидеть полный список функций и исправлений, смотрите журналы изменений.
Где я могу установить PowerShell?
В настоящее время PowerShell 7 поддерживает следующие операционные системы на x64, включая:
- Windows 8.1 и 10
- Windows Server 2012, 2012 R2, 2016 и 2019
- macOS 10.13+
- Red Hat Enterprise Linux (RHEL) / CentOS 7
- Fedora 30+
- Debian 9
- Ubuntu LTS 16.04+
- Alpine Linux 3.8+
Кроме того, PowerShell 7.0 поддерживает версии ARM32 и ARM64 Debian, Ubuntu и ARM64 Alpine Linux.
Проверьте инструкции по установке для вашей предпочитаемой операционной системы — Windows, macOS или Linux.
Хотя официальная поддержка не поддерживается, сообщество также предоставляло пакеты для Arch и Kali Linux.
Замечание
Debian 10 и CentOS 8 в настоящее время не поддерживают удалённое управление WinRM. Для подробностей настройки удалённого управления на основе SSH см. раздел PowerShell Remoting over SSH.
Для получения дополнительной информации о поддерживаемых операционных системах и жизненном цикле поддержки up-toсмотрите жизненный цикл поддержки PowerShell.
Запуск PowerShell 7
PowerShell 7 устанавливается в каталог отдельно от Windows PowerShell. Это позволяет запускать PowerShell 7 параллельно с Windows PowerShell 5.1. Для PowerShell 6.x PowerShell 7 — это встроенное обновление, которое убирает PowerShell 6.x.
- PowerShell 7 установлен на
%programfiles%\PowerShell\7 - Папка
%programfiles%\PowerShell\7добавляется в переменную$env:PATH.
Пакет установщиков PowerShell 7 обновляет предыдущие версии PowerShell 6.x:
- PowerShell 6.x на Windows:
%programfiles%\PowerShell\6заменён на%programfiles%\PowerShell\7 - Linux:
/opt/microsoft/powershell/6заменяется на/opt/microsoft/powershell/7 - macOS:
/usr/local/microsoft/powershell/6заменяется на/usr/local/microsoft/powershell/7
Замечание
В Windows PowerShell исполняемый файл для запуска PowerShell называется powershell.exe. В версиях 6 и выше имя исполняемого файла изменено для поддержки выполнения параллельно. Новое исполняемое имя для запуска PowerShell 7 — pwsh.exe. Предварительные сборки остаются на месте, pwsh-preview а не pwsh в 7-предварительном каталоге.
Улучшенная обратная совместимость с Windows PowerShell
PowerShell 7.0 знаменует переход на .NET Core 3.1, обеспечивая значительно большую обратную совместимость с существующими модулями Windows PowerShell. Это включает множество модулей на Windows, требующих функциональности графического интерфейса, таких Out-GridView как и Show-Command, а также множество модулей управления ролями, которые поставляются в составе Windows.
Для Windows добавляется новый параметр коммутатора UseWindowsPowerShell в Import-Module. Этот коммутатор создаёт прокси-модуль в PowerShell 7, который использует локальный процесс Windows PowerShell для неявного запуска любых cmdlet, содержащихся в этом модуле. Для получения дополнительной информации об Import-Module.
Для получения дополнительной информации о том, какие модули Microsoft работают с PowerShell 7.0, см. таблицу совместимости модулей.
Параллельное выполнение добавлено в ForEach-Object
Cmdlet ForEach-Object , который итерирует элементы в коллекции, теперь имеет встроенный параллелизм с новым параметром Parallel .
По умолчанию параллельные блоки скриптов используют текущую рабочую директорию вызывающего, который запустил параллельные задачи.
В этом примере получается 50 000 записей журнала из 5 системных логов на локальной машине с Windows:
$logNames = 'Security','Application','System','Windows PowerShell','Microsoft-Windows-Store/Operational'
$logEntries = $logNames | ForEach-Object -Parallel {
Get-WinEvent -LogName $_ -MaxEvents 10000
} -ThrottleLimit 5
$logEntries.Count
50000
Параметр Parallel определяет блок скрипта, который выполняется параллельно для каждого имени входного лога.
Новый параметр ThrottleLimit ограничивает количество скрипт-блоков, работающих параллельно в данный момент времени. Значение по умолчанию равно 5.
Используйте $_ переменную для представления текущего входного объекта в блоке скрипта. Используйте $using: область для передачи ссылок на переменные к блоку скриптов.
Для получения дополнительной информации о ForEach-Object.
Оператор Ternary
PowerShell 7.0 вводит троичный оператор, который ведёт себя как упрощённый if-else оператор.
Троичный оператор PowerShell тесно моделируется по синтаксису тернарного оператора C#:
<condition> ? <if-true> : <if-false>
Выражение условий всегда вычисляется, и его результат преобразуется в булевое выражение, чтобы определить, какая ветвь оценивается следующей:
- Выражение
<if-true>выполняется, если выражение<condition>имеет значение true - Выражение
<if-false>выполняется, если выражение<condition>имеет значение false
Рассмотрим пример.
$message = (Test-Path $path) ? "Path exists" : "Path not found"
В этом примере, если путь существует, то отображается Путь существует . Если путь не существует, то отображается «Путь, который не найден ».
Для получения дополнительной информации О If.
Операторы цепочек трубопроводов
PowerShell 7 реализует &&|| и операторов для условного цепного соединения конвейеров. Эти операторы в PowerShell известны как «операторы цепочки конвейеров» и похожи на списки AND и OR в оболочках, таких bash как и zsh, а также на символы условной обработки в командной оболочке Windows (cmd.exe).
Оператор && выполняет правый конвейер, если левый конвейер выполнен успешно. И наоборот, оператор || выполняет правый конвейер, если не удалось выполнить левый конвейер.
Замечание
Эти операторы используют переменные $? и $LASTEXITCODE для определения сбоя конвейера. Это позволяет использовать их с собственными командами, а не только с командлетами или функциями.
Здесь первая команда выполняется успешно, и выполняется вторая:
Write-Output 'First' && Write-Output 'Second'
First
Second
Здесь первая команда не работает, вторая не выполняется:
Write-Error 'Bad' && Write-Output 'Second'
Write-Error: Bad
Здесь первая команда выполняется успешно, вторая команда не выполняется:
Write-Output 'First' || Write-Output 'Second'
First
Здесь первая команда не работает, поэтому выполняется вторая:
Write-Error 'Bad' || Write-Output 'Second'
Write-Error 'Bad'
Second
Для получения дополнительной информации о операторах цепочек трубопроводов.
Операторы нулевого коалесцирования, присвоения и условных
PowerShell 7 включает оператора нулевого коалесценционирования, нулевого условного присвоения ??=и нулевого условного доступа ?. к элементам и ?[].??
Оператор нулевой коалесценции??
Оператор ?? нулевой коалесценции возвращает значение своего левого операнда, если он не нулевый.
В противном случае он вычисляет правый операнд и возвращает результат. Оператор ?? не вычисляет правый операнд, если левый операнд равен ненулевому значению.
$x = $null
$x ?? 100
100
В следующем примере правый операнд не будет оцениваться:
[string] $todaysDate = '1/10/2020'
$todaysDate ?? (Get-Date).ToShortDateString()
1/10/2020
Оператор нулевого условного присвоения ?? =
Оператор ??= условного назначения null присваивает значение своего правого операнда левому операнду только в том случае, если левый операнд вычисляется в null. Оператор ??= не вычисляет правый операнд, если левый операнд равен ненулевому значению.
$x = $null
$x ??= 100
$x
100
В следующем примере правый операнд не оценивается:
[string] $todaysDate = '1/10/2020'
$todaysDate ??= (Get-Date).ToShortDateString()
1/10/2020
Операторы доступа для нулевого условного участника?. и? [] (Экспериментальный)
Замечание
Это экспериментальная функция под названием PSNullConditionalOperators. Для получения дополнительной информации см. раздел «Использование экспериментальных признаков».
Нулевый условный оператор допускает доступ к элементу, ?., или элементу, ?[]к своему операнду только если этот операнд вычисляется в ненулевый; в противном случае он возвращает null.
Замечание
Так как PowerShell позволяет ? быть частью имени переменной, для использования этих операторов требуется официальная спецификация имени переменной. Поэтому необходимо использовать {} вокруг имён переменных, например ${a} или когда ? является частью имени ${a?}переменной .
В следующем примере возвращается значение свойства участника Status :
$Service = Get-Service -Name 'bits'
${Service}?.status
Stopped
Следующий пример возвращает null без попытки получить доступ к имени участника Status:
$service = $Null
${Service}?.status
Аналогично, используя ?[], значение элемента возвращается:
$a = 1..10
${a}?[0]
1
А когда операнд равен null, элемент не обращается, и возвращается null:
$a = $null
${a}?[0]
Для получения дополнительной информации About_Operators.
Новый обзор ConciseView и cmdlet Get-Error
PowerShell 7.0 улучшает отображение сообщений об ошибках, улучшая читаемость интерактивных и скриптовых ошибок с помощью нового стандартного представления ConciseView. Просмотры выбираются пользователем через переменную $ErrorViewпредпочтений .
В ConciseView, если ошибка не связана с ошибкой скрипта или парсера, то это сообщение об ошибке одной строки:
Get-Childitem -Path c:\NotReal
Get-ChildItem: can't find path 'C:\NotReal' because it doesn't exist
Если ошибка возникает во время выполнения скрипта или является ошибкой разбора, PowerShell возвращает многострочное сообщение об ошибке, содержащее ошибку, указатель и сообщение об ошибке, показывающие, где ошибка находится в этой строке. Если терминал не поддерживает ANSI-цветные последовательности escape (VT100), то цвета не отображаются.
По умолчанию в PowerShell 7 представлен ConciseView. Предыдущий стандартный вид был NormalView , и его можно выбрать, установив переменную $ErrorViewпредпочтений .
$ErrorView = 'NormalView' # Sets the error view to NormalView
$ErrorView = 'ConciseView' # Sets the error view to ConciseView
Замечание
Добавлено новое свойство ErrorAccentColor$Host.PrivateData для поддержки изменения цвета акцента сообщения об ошибке.
Новый cmdlet Get-Error предоставляет полный и детальный обзор полностью квалифицированной ошибки, когда это необходимо. По умолчанию cmdlet отображает полные детали, включая внутренние исключения, последней произошедшей ошибки.
Get-Error Cmdlet поддерживает вход из конвейера с помощью встроенной переменной $Error.
Get-Error отображает все конвейерные ошибки.
$Error | Get-Error
Cmdlet Get-Error поддерживает параметр Newest , позволяющий указать, сколько ошибок из текущей сессии будет отображаться.
Get-Error -Newest 3 # Displays the lst three errors that occurred in the session
Для получения дополнительной информации о Get-Error.
Уведомление о новой версии
PowerShell 7 использует уведомления об обновлениях, чтобы предупредить пользователей о наличии обновлений PowerShell. Раз в день PowerShell выполняет запрос к веб-службе, чтобы определить, доступна ли более новая версия.
Замечание
Проверка обновлений проводится во время первой сессии в течение заданных 24 часов. Для повышения производительности проверка обновления начинается через 3 секунды после начала сессии. Уведомление отображается только в начале следующих сессий.
По умолчанию PowerShell подписывается на один из двух различных каналов уведомлений в зависимости от версии или ветки. Поддерживаемые, общедоступные (GA) версии PowerShell возвращают уведомления только для обновленных релизов GA. Релизы Preview и Release Candidate (RC) уведомляют об обновлениях предварительных, RC и GA-релизов.
Поведение уведомления об обновлении можно изменить с помощью переменной среды $Env:POWERSHELL_UPDATECHECK. Поддерживаются следующие значения:
-
По умолчанию — это то же самое, что и отсутствие определения
$Env:POWERSHELL_UPDATECHECK- Выпуски общедоступной версии уведомляют об обновлениях выпусков общедоступной версии
- Предварительные выпуски и версии RC уведомляют об обновлениях для общедоступных и предварительных версий.
- Выключение отключает функцию уведомлений об обновлении
- LTS уведомляет только об обновлениях релизов GA с долгосрочным обслуживанием (LTS)
Замечание
Переменная $Env:POWERSHELL_UPDATECHECK окружения не существует, пока не установлена впервые.
Чтобы установить уведомление о версии только для LTS релизов:
$Env:POWERSHELL_UPDATECHECK = 'LTS'
Чтобы установить уведомление о версии на поведение Default :
$Env:POWERSHELL_UPDATECHECK = 'Default'
Для получения дополнительной информации О уведомлениях об обновлениях.
Новая поддержка ресурсов DSC с Invoke-DSCResource (экспериментальная)
Замечание
Это экспериментальная функция под названием PSDesiredStateConfiguration.InvokeDscResource. Для получения дополнительной информации см. раздел «Использование экспериментальных признаков».
Invoke-DscResource Cmdlet запускает метод заданного ресурса PowerShell Desired State Configuration (DSC).
Этот cmdlet вызывает DSC-ресурс напрямую, не создавая конфигурационного документа. Используя этот cmdlet, продукты управления конфигурацией могут управлять Windows или Linux с помощью ресурсов DSC. Этот cmdlet также позволяет отладить ресурсы, когда движок DSC работает с включённой отладкой.
Эта команда вызывает метод Set ресурса с именем WindowsProcess и предоставляет обязательные свойства Path и Arguments для запуска указанного процесса Windows.
Invoke-DscResource -Name WindowsProcess -Method Set -ModuleName PSDesiredStateConfiguration -Property @{
Path = 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe'
Arguments = ''
}
Для получения дополнительной информации об Invoke-DSCResource.
Прерывные изменения и улучшения
Разрушающие изменения
- Сделайте так, чтобы уведомления об обновлениях поддерживали LTS и каналы по умолчанию (#11132)
- Обновление Test-Connection работать как в Windows PowerShell (#10697) (Спасибо @vexx32!)
- Сохранить деньги? для ParenExpression, SubExpression и ArrayExpression (#11040)
- Установите рабочий каталог на текущий каталог в Start-Job (#10920) (Спасибо @iSazonov!)
- Сделайте так$PSCulture чтобы постоянно отражали изменения культуры во время сессии (#10138) (Спасибо @iSazonov!)
Обновления и исправления движка
- Улучшения API точки остановки для удалённых сценариев (#11312)
- Исправьте утечку определения класса PowerShell в другой Runspace (#11273)
- Исправьте регрессию в форматировании, вызванную примитивом FirstOrDefault, добавленной в 7.0.0-Preview1 (#11258)
- Дополнительные модули Microsoft для отслеживания в телеметрии PS7 (#10751)
- Сделать одобренные функции неэкспериментальными (#11303)
- Обновить ConciseView для использования TargetObject при необходимости (#11075)
- Исправьте NullReferenceException в публичных методах CompletionCompleter (#11274)
- Исправьте проверку состояния темы квартиры на платформах, не связанных с Windows (#11301)
- Обновление PSModulePath для объединения переменных среды процесса и машины (#11276)
- Поднять .NET Core до 3.1.0 (#11260)
- Исправьте обнаружение $PSHOME перед $env:PATH (#11141)
- Позвольте pwsh наследовать $env:PSModulePath и включить powershell.exe для корректного запуска (#11057)
- Переход на .NET Core 3.1 Preview 1 (#10798)
- Refactor refactor reparse tag checks in file system provider (#10431) (Спасибо @iSazonov!)
- Замените CR и новую строку на 0x23CE символ в журнале скриптов (#10616)
- Исправьте утечку ресурса, отключив обработчик событий из AppDomain.CurrentDomain.ProcessExit (#10626)
- Добавить поддержку в ActionPreference.Break для взлома отладчика, когда генерируются сообщения Debug, Error, Information, Progress, Verbose или Warning (#8205) (Спасибо @KirkMunro!)
- Включите запусковые надсадки панели управления в PowerShell без указания .CPL расширения. (#9828)
- Поддержка отрицательных чисел в операторе -split (#8960) (Спасибо @ece-jacob-scott!)
Общие обновления и исправления cmdlet
- Исправление проблемы на Raspbian при установке даты изменения файлов в UnixStat Experimental Feature (#11313)
- Добавить -AsPlainText в ConvertFrom-SecureString (#11142)
- Добавлена проверка версии WindowsPS для WinCompat (#11148)
- Исправьте отчётность об ошибках в некоторых сценариях WinCompat (#11259)
- Добавить нативный бинарный резолвер (#11032) (Спасибо @iSazonov!)
- Обновить расчёт ширины символа для корректного соответствия символам CJK (#11262)
- Добавить Unblock-File для macOS (#11137)
- Исправьте регрессию в Get-PSCallStack (#11210) (Спасибо @iSazonov!)
- Удалите автозагрузку модуля ScheduledJob при использовании cmdlets Job (#11194)
- Добавить OutputType в Get-Error cmdlet и сохранить оригинальные имена типов (#10856)
- Исправить null ссылку в свойстве SupportsVirtualTerminal (#11105)
- Добавить лимит-чек в Get-WinEvent (#10648) (Спасибо @iSazonov!)
- Исправьте время выполнения команды, чтобы StopUpstreamCommandsException не заполнялся в -ErrorVariable (#10840)
- Установите кодировку вывода на [Console]::OutputEncoding для нативных команд (#10824)
- Поддержка многострочных блоков кода в примерах (#10776) (Спасибо @Greg-Smulko!)
- Добавить параметр культуры в Select-String cmdlet (#10943) (Спасибо @iSazonov!)
- Исправьте Start-Job путь рабочего каталога с обратной чертой (#11041)
- ConvertFrom-Json: Разворачивать коллекции по умолчанию (#10861) (Спасибо @danstur!)
- Используйте хэш-таблицу с чувствительным к регистру для Group-Object cmdlet с -CaseSensitive и -AsHashtable коммутаторами (#11030) (Спасибо @vexx32!)
- Обрабатывайте исключение, если перечисление файлов не удаётся при восстановлении пути для правильного корпуса (#11014)
- Исправьте ConciseView, чтобы отображать активность вместо myCommand (#11007)
- Позвольте веб-командорам игнорировать статусы ошибок HTTP (#10466) (Спасибо @vdamewood!)
- Исправьте подключение нескольких CommandInfo к Get-Command (#10929)
- Добавить Get-Counter cmdlet для Windows (#10933)
- Пусть ConvertTo-Json рассматривают [AutomationNull]::Value и [NullString]::Value как $null (#10957)
- Удалить скобки с IPV6 адреса для удалённого SSH (#10968)
- Исправьте сбой, если команда, отправленная в pwsh, — это просто пустое пространство (#10977)
- Добавлены кроссплатформенные Get-Clipboard и Set-Clipboard (#10340)
- Исправьте установку оригинального пути объекта файловой системы так, чтобы не было дополнительного следящего слэша (#10959)
- Поддержка $null для ConvertTo-Json (#10947)
- Добавить Out-Printer команду в Windows (#10906)
- Исправьте Start-Job -WorkingDirectory с пробелом (#10951)
- Возвращает значение по умолчанию при получении null для настройки в PSConfiguration.cs (#10963) (Спасибо) (Спасибо @iSazonov!)
- Обрабатывайте исключение ввода-вывода как незавершающее (#10950)
- Добавьте ассемблер GraphicalHost для включения Out-GridView, Show-Command и Get-Help -ShowWindow (#10899)
- Возьмите ComputerName через Pipeline в Get-HotFix (#10852) (Спасибо @kvprasoon!)
- Исправьте заполнение вкладок для параметров, чтобы отображались общие параметры по доступным параметрам (#10850)
- Исправьте GetCorrectCasedPath(), чтобы сначала проверить, возвращаются ли какие-либо записи системного файла перед вызовом First() (#10930)
- Установите рабочий каталог на текущий каталог в Start-Job (#10920) (Спасибо @iSazonov!)
- Измените TabExpansion2, чтобы не требовать -CursorColumn и считать $InputScript. Длина (#10849)
- Случай обработки, когда хост не может возвращать строки или столбцы экрана (#10938)
- Исправьте использование акцентных цветов для хостов, которые их не поддерживают (#10937)
- Добавить Update-List команду (#10922)
- Обновление FWLink ID для Clear-RecycleBin года (#10925)
- При завершении вкладки пропускайте файл, если не можете прочитать атрибуты файла (#10910)
- Добавить Clear-RecycleBin для Windows (#10909)
- Добавьте
$env:__SuppressAnsiEscapeSequencesк контролю, нужно ли иметь VT escape sequence на выходе (#10814) - Добавьте -NoEmphasize параметр для раскраски Select-String выхода (#8963) (Спасибо @derek-xia!)
- Добавить Get-HotFix cmdlet (#10740)
- Сделайте Add-Type пригодными для использования в приложениях, которые размещают PowerShell (#10587)
- Используйте более эффективный порядок оценки в LanguagePrimitives.IsNullLike() (#10781) (Спасибо @vexx32!)
- Улучшить обработку входных потоков смешанного собрания и потоков входа в Format-Hex (#8674) (Спасибо @vexx32!)
- Используйте преобразование типов в хэш-таблицах SSHConnection, если значение не совпадает с ожидаемым типом (#10720) (Спасибо @SeeminglyScience!)
- Исправьте поведение Get-Content -ReadCount 0, когда -TotalCount установлен (#10749) (Спасибо @eugenesmlv!)
- Сообщение об ошибке Reword Access denied in Get-WinEvent (#10639) (Спасибо @iSazonov!)
- Включите завершение вкладок для назначения переменных, которые ограничены enum или типом (#10646)
- Удалить неиспользуемое свойство удаленного удаления SourceLength, вызывающее проблемы с форматированием (#10765)
- Добавьте -Delimiter параметр в ConvertFrom-StringData (#10665) (Спасибо @steviecoaster!)
- Добавить позиционный параметр для ScriptBlock при использовании Invoke-Command с SSH (#10721) (Спасибо @machgo!)
- Показывать информацию о контексте строки, если несколько строк без названия скрипта для ConciseView (#10746)
- Добавить поддержку путей \wsl$\ к провайдеру файловой системы (#10674)
- Добавьте отсутствующий текст токена для TokenKind.QuestionMark в парсере (#10706)
- Установите текущий рабочий каталог каждого ForEach-Object -Parallel запускающегося скрипта в то же место, что и вызывающий скрипт. (#10672)
- Замените api-ms-win-core-file-l1-2-2.dll на Kernell32.dll для API FindFirstStreamW и FindNextStreamW (#10680) (Спасибо @iSazonov!)
- Доработайте, помогите отформатировать скрипт, чтобы он был более толерантен к StrictMode (#10563)
- Добавьте -SecurityDescriptorSDDL параметр в New-Service (#10483) (Спасибо @kvprasoon!)
- Удалить информационный вывод, консолидировать использование пинга в Test-Connection (#10478) (Спасибо @vexx32!)
- Читайте специальные пункты репарса, не обращаясь к ним (#10662) (Спасибо @iSazonov!)
- Прямой выход Clear-Host на терминал (#10681) (Спасибо @iSazonov!)
- Добавьте новую строку для группировки с Format-Table и -Property (#10653)
- Удалить [ValidateNotNullOrEmpty] из -InputObject на Get-Random, чтобы разрешить пустую строку (#10644)
- Make suggestion system алгоритм расстояния строк нечувствительный к регистру (#10549) (Спасибо @iSazonov!)
- Исправление null reference exception в обработке ForEach-Object -Parallel входных данных (#10577)
- Добавить определения групповых политик PowerShell (#10468)
- Обновите консольный хост для поддержки последовательностей управления XTPUSHSGR/XTPOPSGR VT, используемых в сценариях композибельности. (#10208)
- Добавить параметр WorkingDirectory в Start-Job (#10324) (Спасибо @davinci26!)
- Удалите обработчик событий, который вызывал ошибочное копирование изменений точки остановки в отладчик пространства выполнения хоста (#10503) (Спасибо @KirkMunro!)
- Замените api-ms-win-core-job-12-1-0.dll на Kernell32.dll в Microsoft.PowerShell.Commands.NativeMethods P/Invoke API(#10417) (Спасибо @iSazonov!)
- Исправлен неправильный вывод для New-Service в присвоении переменных и -OutVariable (#10444) (Спасибо @kvprasoon!)
- Исправьте глобальные проблемы с кодом выхода, параметрами командной строки и маршрутом с пробелами (#10461)
- Исправьте рекурсию в OneDrive — измените FindFirstFileEx() на тип SafeFindHandle (#10405)
- Пропустите автозагрузку PSReadLine на Windows, если экранный ридер NVDA активен (#10385)
- Увеличить версии модулей, построенных с PowerShell, до 7.0.0.0 (#10356)
- Добавьте ошибку в Add-Type, если тип с таким же названием уже существует (#9609) (Спасибо @iSazonov!)
Performance
- Избегайте использования замыкания в Parser.SaveError (#11006)
- Улучшение кэширования при создании новых экземпляров Regex (#10657) (Спасибо @iSazonov!)
- Улучшить обработку встроенных данных типов PowerShell из types.ps1xml, typesV3.ps1xml и GetEvent.types.ps1xml (#10898)
- Обновите PSConfiguration.ReadValueFromFile, чтобы сделать его быстрее и более эффективно использовать память (#10839)
- Добавить небольшие улучшения производительности для инициализации пространства выполнения (#10569) (Спасибо @iSazonov!)
- Сделать ForEach-Object быстрее для его часто используемых сценариев (#10454) и исправить ForEach-Object -Parallel проблему производительности во многих пространствах (#10455)
Очистка кода
- Изменить текст комментариев и элементов в соответствии со стандартами Microsoft (#11304)
- Проблемы со стилем уборки в Compiler.cs (#10368) (Спасибо @iSazonov!)
- Удалите неиспользуемый конвертер типов для CommaDelimitedStringCollection (#11000) (Спасибо @iSazonov!)
- Стиль уборки в InitialSessionState.cs (#10865) (Спасибо @iSazonov!)
- Очистка кода для класса PSSession (#11001)
- Уберите неработающую функцию «запустить Update-Help из Get-Help, когда Get-Help запускается впервые» (#10974)
- Исправление проблем со стилем (#10998) (Спасибо @iSazonov!)
- Очистка: используйте встроенный псевдоним (#10882) (Спасибо @iSazonov!)
- Удалите неиспользуемый ключ настройки ConsolePrompting и избегайте ненужного создания строк при запросе ExecutionPolicy setting (#10985)
- Отключить проверку уведомлений об обновлениях для ежедневных сборок (#10903) (Спасибо @bergmeister!)
- Восстановление отладочного API потеряно в #10338 (#10808)
- Удалите ссылку на WorkflowJobSourceAdapter, которая больше не используется (#10326) (Спасибо @KirkMunro!)
- Очистите COM-интерфейсы в коде переходного списка, исправив атрибуты PreserveSig (#9899) (Спасибо @weltkante!)
- Добавьте комментарий, объясняющий, почему -ia не является псевдонимом -InformationAction распространённого параметра (#10703) (Спасибо @KirkMunro!)
- Переименуйте InvokeCommandCmdlet.cs в InvokeExpressionCommand.cs (#10659) (Спасибо @kilasuit!)
- Добавьте незначительные очистки кода, связанные с уведомлениями об обновлениях (#10698)
- Удалите устаревшую логику рабочего процесса из скриптов удалённой настройки (#10320) (Спасибо @KirkMunro!)
- Обновить формат справки, чтобы использовать правильный случай (#10678) (Спасибо @tnieto88!)
- Очистите проблемы в стиле CodeFactor, появившиеся в коммитах за последний месяц (#10591) (Спасибо @iSazonov!)
- Исправлена опечатка в описании экспериментальной функции PSTernaryOperator (#10586) (Спасибо @bergmeister!)
- Преобразовать ActionPreference.Приостановить значение перечисления в неподдерживаемое, зарезервированное состояние и убрать ограничение на использование ActionPreference.Ignore in preference variables (#10317) (Спасибо @KirkMunro!)
- Замените ArrayList на List<> T, чтобы получить более читаемый и надёжный код без изменения функционала (#10333) (Спасибо@iSazonov!)
- Внесите исправления в стиле кода в TestConnectionCommand (#10439) (Спасибо @vexx32!)
- Очистите AutomationEngine и удалите лишний вызов метода SetSessionStateDrive (#10416) (Спасибо @iSazonov!)
- Переименуйте ParameterSetName по умолчанию обратно в Delimiter для ConvertTo-Csv и ConvertFrom-Csv (#10425)
Tools
- Добавить настройки по умолчанию для свойства SDKToUse, чтобы оно строилось в VS (#11085)
- Install-Powershell.ps1: Добавить параметр для использования установки MSI (#10921) (Спасибо @MJECloud!)
- Добавьте базовые примеры для install-powershell.ps1 (#10914) (Спасибо @kilasuit!)
- Заставьте Install-PowerShellRemoting.ps1 обрабатывать пустую строку в параметре PowerShellHome (#10526) (Спасибо @Orca88!)
- Переключился с /etc/lsb-release на /etc/os-release в install-powershell.sh (#10773) (Спасибо @Himura2la!)
- Проверьте pwsh.exe и pwsh в ежедневной версии на Windows (#10738) (Спасибо @centreboard!)
- Удалите ненужный кран в installpsh-osx.sh (#10752)
- Обновление install-powershell.ps1, чтобы проверить уже установленную ежедневную сборку (#10489)
Тесты
- Сделать ненадёжный тест DSC в ожидании (#11131)
- Исправление теста stringdata для корректной валидации ключей хэш-таблиц (#10810)
- Разгрузка тестовых модулей (#11061) (Спасибо @iSazonov!)
- Увеличение времени между повторными попытками тестирования URL (#11015)
- Обновляйте тесты для точного описания действий теста. (#10928) (Спасибо @romero126!)
- Временный пропуск неустойчивого теста TestAppDomainProcessExitEvenHandlerNotLeaking (#10827)
- Сделать тест на утечку обработчика событий стабильным (#10790)
- Синхронизация заглавных букв в CI YAML (#10767) (Спасибо @RDIL!)
- Добавить тест для исправления утечки обработчика событий (#10768)
- Добавить Get-ChildItem тест (#10507) (Спасибо @iSazonov!)
- Заменить неоднозначный язык для тестов с переключателя на параметр для точности (#10666) (Спасибо @romero126!)
- Добавить экспериментальную проверку в ForEach-Object -Parallel тесты (#10354) (Спасибо @KirkMunro!)
- Обновление тестов для валидации Alpine (#10428)
Улучшения сборки и пакетов
- Исправление подписи пакетов Nuget для сборки координированных пакетов (#11316)
- Обновление зависимостей из PowerShell Gallery и NuGet (#11323)
- Перевести Microsoft.ApplicationInsights с 2.11.0 до 2.12.0 (#11305)
- Поднять Microsoft.CodeAnalysis.CSharp с 3.3.1 до 3.4.0 (#11265)
- Обновления пакетов для Debian 10 и 11 (#11236)
- Включать только экспериментальные функции до RC (#11162)
- Обновление минимальной версии macOS (#11163)
- Поднять схему NJsonSchema с 10.0.27 до 10.0.28 (#11170)
- Обновление ссылок в README.md и metadata.json для Preview.5 (#10854)
- Выберите файлы для тестов соответствия, которые принадлежат PowerShell (#10837)
- Разрешить сборку пакета win7x86 msix. (Внутренний 10515)
- Разрешить передачу семантических версий в функцию NormalizeVersion (#11087)
- Увеличить основной фреймворк .NET до 3.1-preview.3 (#11079)
- Повышение PSReadLine с 2.0.0-beta5 до 2.0.0-beta6 в /src/Modules (#11078)
- Увеличить Newtonsoft.Json с 12.0.2 до 12.0.3 (#11037) (#11038)
- Добавьте пакеты Debian 10, 11 и CentOS 8 (#11028)
- Загрузите Build-Info файл Json с полем ReleaseDate (#10986)
- Поднять основной фреймворк .NET до 3.1-preview.2 (#10993)
- Включить сборку пакета x86 MSIX (#10934)
- Обновите URL скрипта установки dotnet SDK в build.psm1 (#10927)
- Bump Markdig. Подписано с 0.17.1 по 0.18.0 (#10887)
- Bump threadJob с 2.0.1 по 2.0.2 (#10886)
- Обновить манифест и модуль упаковки AppX в соответствии с требованиями MS Store (#10878)
- Обновить ссылку на пакет PowerShell SDK до preview.5 (внутренний 10295)
- Обновление ThirdPartyNotices.txt (#10834)
- Увеличить Microsoft.PowerShell.Native до 7.0.0-preview.3 (#10826)
- Перевести Microsoft.ApplicationInsights с 2.10.0 до 2.11.0 (#10608)
- Повышение схемы NJsonSchema с 10.0.24 до 10.0.27 (#10756)
- Добавить поддержку MacPorts в систему сборки (#10736) (Спасибо @Lucius-Q-User!)
- Управление пакетами с 1.4.4 до 1.4.5 (#10728)
- Повышение схемы NJsonSchema с 10.0.23 до 10.0.24 (#10635)
- Добавить переменную среды для различия клиент/сервер телеметрии в MSI (#10612)
- Увеличить PSDesiredStateConfiguration с 2.0.3 до 2.0.4 (#10603)
- Поднять Microsoft.CodeAnalysis.CSharp с 3.2.1 до 3.3.1 (#10607)
- Обновление до .Net Core 3.0 RTM (#10604) (Спасибо @bergmeister!)
- Обновить упаковку MSIX, чтобы версию соответствовала требованиям Windows Store (#10588)
- Увеличить версию PowerShellGet с 2.2 на 2.2.1 (#10382)
- Bump PackageManagement версии с 1.4.3 по 1.4.4 (#10383)
- Обновление README.md и metadata.json для 7.0.0-preview.4 (Внутренний 10011)
- Обновить версию .Net Core 3.0 с Preview 9 до RC1 (#10552) (Спасибо @bergmeister!)
- Исправить генерацию списка ExperimentalFeature (внутренний 9996)
- Повысить версию PSReadLine с 2.0.0-beta4 до 2.0.0-beta5 (#10536)
- Исправьте скрипт сборки релиза, чтобы установить тег release
- Обновить версию Microsoft.PowerShell.Native до 7.0.0-preview.2 (#10519)
- Обновление до Netcoreapp3.0 preview9 (#10484) (Спасибо @bergmeister!)
- Убедитесь, что ежедневная скоординированная сборка знает, что это ежедневная сборка (#10464)
- Обновите объединённую сборку пакета для выпуска ежедневных сборок (#10449)
- Удалить ссылку на appveyor (#10445) (Спасибо @RDIL!)
- Увеличение версии NJsonSchema с 10.0.22 до 10.0.23 (#10421)
- Удалите удаление папки сборки linux-x64, потому что некоторые зависимости Alpine требуют её (#10407)
Документация и справочные материалы
- Рефакторинг изменяет журналы в один журнал за релиз (#11165)
- Исправьте FWLinks для онлайн-справки PowerShell 7 (#11071)
- Обновление CONTRIBUTING.md (#11096) (Спасибо @mklement0!)
- Исправьте ссылки на документы установки в README.md (#11083)
- Добавляет примеры к install-powershell.ps1 скрипту (#11024) (Спасибо @kilasuit!)
- Исправьте Select-String акцент и Import-DscResource в CHANGELOG.md (#10890)
- Удалите устаревшую ссылку с powershell-beginners-guide.md (#10926)
- Слияние стабильной и журналы изменений сервиса (#10527)
- Обновление использовалось в версии .NET в документации сборки (#10775) (Спасибо @Greg-Smulko!)
- Заменить ссылки с MSDN на Microsoft Learn в powershell-beginners-guide.md (#10778) (Спасибо @iSazonov!)
- Исправление сломанной ссылки на обзор DSC (#10702)
- Обновление Support_Question.md с ссылкой на Stack Overflow как ещё один ресурс сообщества (#10638) (Спасибо @mklement0!)
- Добавить архитектуру процессора в шаблон запроса распространения (#10661)
- Добавить новую книгу по PowerShell MoL для изучения документации PowerShell (#10602)
- Обновление README.md и метаданные для релизов версий 6.1.6 и 6.2.3 (#10523)
- Исправьте опечатку в README.md (#10465) (Спасибо @vedhasp!)
- Добавьте ссылку на модуль PSKoans в документацию Learning Resources (#10369) (Спасибо @vexx32!)
- Обновление README.md и metadata.json для 7.0.0-preview.3 (#10393)