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


Что нового в PowerShell Core 6.2

Релиз PowerShell Core 6.2 был сосредоточен на повышении производительности, исправлении ошибок и уменьшении cmdlet и языковых улучшений, которые улучшают качество. Чтобы увидеть полный список улучшений, ознакомьтесь с нашими подробными списками изменений на GitHub.

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

Ранее мы поддерживали Experimental Features. В релизе 6.2 у нас есть четыре экспериментальных функции для опробования. Пожалуйста, оставляйте отзывы, чтобы мы могли внести улучшения и решить, стоит ли продвигать функцию до массового статуса.

Используйте Get-ExperimentalFeature список доступных экспериментальных функций. Вы можете включить или отключить эти функции с помощью Enable-ExperimentalFeature и Disable-ExperimentalFeature.

Рекомендации Command Not Found

Эта функция использует нечеткое сопоставление для поиска предложений команд или cmdlet, которые вы могли ошибочно ввести.

Enable-ExperimentalFeature -Name PSCommandNotFoundSuggestion

Example

В этом примере ошибочно написанное название cmdlet нечетко совпадает с несколькими вариантами от наиболее вероятных до наименее вероятных.

Get-Commnd
Get-Commnd : The term 'Get-Commnd' is not recognized as the name of a cmdlet, function, script file,
or operable program. Check the spelling of the name, or if a path was included, verify that the path
is correct and try again.
At line:1 char:1
+ Get-Commnd
+ ~~~~~~~~~~
+ CategoryInfo          : ObjectNotFound: (Get-Commnd:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException


Suggestion [4,General]: The most similar commands are: Get-Command, Get-Content, Get-Job, Get-Module,
Get-Event, Get-Host, Get-Member, Get-Item, Set-Content.

Неявное удалённое партиирование

При использовании неявного удаления в конвейере PowerShell рассматривает каждую команду в конвейере независимо. Объекты многократно сериализируются между de-serialized клиентом и удалённой системой во время выполнения конвейера.

С помощью этой функции PowerShell анализирует конвейер, чтобы определить, безопасна ли команда для выполнения и существует ли она на целевой системе. Когда это верно, PowerShell запускает весь конвейер удалённо и сериализирует только и de-serializes возвращает результаты клиенту.

Enable-ExperimentalFeature -Name PSImplicitRemotingBatching

Реальный тест Get-Process | Sort-Object поверх локального хозяева уменьшается с 10-15 секунд до 20-30 миллисекунд. Функция должна быть включена только на клиенте. Изменения на сервере не требуются.

Временный драйв

Enable-ExperimentalFeature -Name PSTempDrive

Если вы используете PowerShell Core на разных операционных системах, вы обнаружите, что переменная окружения для поиска временной папки отличается на Windows, macOS и Linux! С этой функцией вы получаете PSDrive , Temp: который автоматически назначается с временной папкой операционной системы, которую вы используете.

Example

PS> "Hello World!" > Temp:/hello.txt
PS> Get-Content Temp:/hello.txt
Hello World!

Имейте в виду, что нативные команды файлов (например ls , на Linux) не знают о PSDrives и не увидят этот Temp: диск.

Расширение сокращений

Ожидается, что cmdlets PowerShell будут иметь описательные существительные. Это приводит к длинным названиям, которые сложнее вводить. Эта функция позволяет просто ввести заглавные символы cmdlet и использовать заполнение вкладок для поиска совпадения.

Enable-ExperimentalFeature -Name PSUseAbbreviationExpansion

Example

PS> i-arsavsf

Если вы нажмёте вкладку и установите модуль Azure PowerShell Az , автоматическое завершение будет следующее:

PS> Import-AzRecoveryServicesAsrVaultSettingsFile

Замечание

Эта функция предназначена для интерактивного использования. Сокращённые формы cmdlet нельзя выполнять. Эта функция не заменяет псевдонимы.

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

  • Исправьте -NoEnumerate поведение Write-Output в соответствии с Windows PowerShell. (#9069)
  • Сделайте Join-String -InputObject 1,2,3 результат равным 1,2,3 | Join-String результату (#8611) (Спасибо @sethvs!)
  • Добавить -Stable и Sort-Object связанные тесты (#7862) (Спасибо @KirkMunro!)
  • Улучшить Start-Sleep cmdlet для приема дробных секунд (#8537) (Спасибо @Prototyyppi!)
  • Измените хэш-таблицу, чтобы использовать OrdinalIgnoreCase case-insensitive во всех культурах (#8566)
  • Исправьте LiteralPathImport-Csv для связи с Get-ChildItem выводом (#8277) (Спасибо @iSazonov!)
  • Больше не пропускает столбец без названия, если в (#7899) используется Import-Csv разделитель двойных кавычок (Спасибо @Topping!)
  • Get-ExperimentalFeature Больше нет -ListAvailable Switch (#8318)
  • Параметр отладки теперь установлен $DebugPreference на Continue вместо Inquire (#8195) (Спасибо @KirkMunro!)
  • Honor -OutputFormat , если указано в неинтерактивной, перенаправленной, закодированной команде, используемой с pwsh (#8115)
  • Загрузите сборку с базового пути модуля перед попыткой загрузки с GAC (#8073)
  • Удалить тильду из пакетов предпросмотра Linux (#8244)
  • Переместить обработку -WorkingDirectory профилей до обработки (#8079)
  • Не добавляйте PATHEXT переменную среды в Unix (#7697) (Спасибо @iSazonov!)

Известные проблемы

  • Удалённый доступ на платформах Windows IoT ARM вызывает проблему загрузки модулей. См. (#8053)

Общие обновления и исправления

  • Включить заполнение вкладок без регистра для файлов и папок в файловой системе, чувствительной к регистру (#8128)
  • Сделайте PSVersionInfo.PSVersion и PSVersionInfo.PSEdition публичными (#8054) (Спасибо @KirkMunro!)
  • Add type inference for $_ / $PSItem in catch{ } blocks (#8020) (Спасибо @vexx32!)
  • Исправьте выведение типа вызова статического метода (#8018) (Спасибо @SeeminglyScience!)
  • Создайте выводные типы для Select-Object, Group-Object, PSObject и Hashtable (#7231) (Спасибо @powercode!)
  • Поддержка метода вызова с ByRef-like параметрами типа (#7721)
  • Рассмотрите случай, когда путь модуля Windows PowerShell уже находится в PSModulePath среды (#7727)
  • Включите SecureString cmdlets для не-Windows, сохраняя обычный текст (#9199)
  • Улучшение сообщения об ошибке на не-Windows при импорте clixml с securestring (#7997)
  • Добавление параметра ReplyTo Send-MailMessage (#8727) (Спасибо @replicaJunction!)
  • Добавить устаревшее сообщение в Send-MailMessage (#9178)
  • Исправление Restart-Computer , с которым нужно работать localhost , когда WinRM отсутствует (#9160)
  • Сделать Start-Job ошибку завершения броска при размещении PowerShell (#9128)
  • Добавьте ускорители и суффиксы в стиле C# для коротких, уинтовых, улонговых и коротких литералов (#7813) (Спасибо @vexx32!)
  • Добавлены новые суффиксы для числовых литералов — см. about_Numeric_Literals (#7901) (Спасибо @vexx32!)
  • Правильно сообщать об уровне воздействия, если SupportsShouldProcess не установлен в 'true' (#8209) (Спасибо @vexx32!)
  • Исправьте проблемы с набором символов запроса в веб-командах (#8742) (Спасибо @markekraus!)
  • Исправление Ожидаемой 100-continue проблемы с веб-командировками (#8679) (Спасибо @markekraus!)
  • Исправьте проблему блокировки файлов с веб-командолами (#7676) (Спасибо @Claustn!)
  • Исправлена проблема с разбором кодовых страниц в Invoke-RestMethod (#8694) (Спасибо @markekraus!)
  • Рефакторинг ConvertTo-Json для открытия JsonObject.ConvertToJson как публичного API (#8682)
  • Добавьте настраиваемую максимальную глубину ConvertFrom-Json с помощью -Depth (#8199) (Спасибо @louistio!)
  • Добавить параметр EscapeHandling в ConvertTo-Json cmdlet (#7775) (Спасибо @iSazonov!)
  • Добавить -CustomPipeName к pwsh и Enter-PSHostProcess (#8889)
  • Включите создание относительных символических ссылок в Windows с New-Item помощью (#8783)
  • Разрешить пользователям Windows в режиме разработчика создавать символические ссылки без повышения высоты (#8534)
  • Разрешить Write-Information принять $null (#8774)
  • Исправление Get-Help расширенных функций с помощью справочного контента MAML (#8353)
  • Исправьте Get-Help проблему с PSTypeName в -Parameter, когда объявлен только один параметр (#8754) (Спасибо @pougetat!)
  • Исправление вычисления токена для Get-Help выполнения на ScriptBlock для помощи с комментариями. (#8238) (Спасибо @hubuk!)
  • Измените Get-Help параметр cmdlet -Parameter чтобы он принимал строковые массивы (#8454) (Спасибо @sethvs!)
  • Разреши PAGER, если его путь содержит пробелы (#8571) (Спасибо @pougetat!)
  • Добавьте подсказку к использованию less функции 'help' для инструкции пользователю по выходу (#7998)
  • Добавьте типы поддержки enum и char в Format-Hex cmdlet (#8191) (Спасибо @iSazonov!)
  • Удалить ShouldProcess из Format-Hex (#8178)
  • Добавьте новые параметры Format-Hex смещения и счёта и рефакторируйте cmdlet (#7877) (Спасибо @iSazonov!)
  • Разрешить 'name' в качестве псевдонима для 'label' в ConvertTo-Html, позвольте записи 'width' быть целым числом (#8426) (Спасибо @mklement0!)
  • Заставьте вычисленные свойства на основе scriptblock снова работать в ConvertTo-Html (#8427) (Спасибо @mklement0!)
  • Добавить cmdlet Join-String для создания текста из входа в конвейер (#7660) (Спасибо @powercode!)
  • Исправление Join-String логики параметра cmdlet FormatString (#8449) (Спасибо @sethvs!)
  • Переключитесь Clear-Host обратно на использование $RAWUI и очистку для работы удалённо (#8609)
  • Сменить Clear-Host на просто вызов [console]::clear и удалить чистый псевдоним из Unix (#8603)
  • Исправьте LiteralPath Import-Csv для связи с Get-ChildItem выводом (#8277) (Спасибо @iSazonov!)
  • Функция помощи не должна использовать пейджер для AliasHelpInfo (#8552)
  • Добавить -UseMinimalHeaderStart-Transcript заголовок транскрипта для минимизации (#8402) (Спасибо @lukexjeremy!)
  • Add Enable-ExperimentalFeature и Disable-ExperimentalFeature cmdlets (#8318)
  • Экспонировать все cmdlets от PSDiagnostics , если logman.exe доступен (#8366)
  • Удалить параметр сохранения с New-PSDrive платформы non-Windows (#8291) (Спасибо @lukexjeremy!)
  • Добавить поддержку для cd + (#7206) (Спасибо @bergmeister!)
  • Включите Set-Location -LiteralPath работу с папками с именами - и + (#8089)
  • Test-Path возвращается $false , когда присваивается пустое значение или $null значение пути (#8080) (Спасибо @vexx32!)
  • Разрешить возвращение динамического параметра, даже если путь не совпадает с каким-либо провайдером (#7957)
  • Поддержка Get-PSHostProcessInfo и Enter-PSHostProcess на платформах Unix (#8232)
  • Сократить выделения в Get-Content cmdlet (#8103) (Спасибо @iSazonov!)
  • Включить Add-Content возможность совместного доступа к чтению с другими инструментами во время написания контента (#8091)
  • Get/Add-Content выдает улучшенную ошибку при нацеливании на контейнер (#7823) (Спасибо @kvprasoon!)
  • Добавить -Nameпараметры -NoUserOverrides , и -ListAvailable в Get-Culture cmdlet (#7702) (Спасибо @iSazonov!)
  • Добавить унифицированный атрибут для завершения параметра кодирования . (#7732) (Спасибо @ThreeFive-O!)
  • Разрешить числовые идентификаторы и названия зарегистрированных кодовых страниц в параметрах кодирования (#7636) (Спасибо @iSazonov!)
  • Исправление Rename-Item -Path с уайлд-каром (#7398) (Спасибо @kwkam!)
  • Когда файл используется Start-Transcript , пустой файл вместо удаления (#8131) (Спасибо @paalbra!)
  • Создайте Add-Type файлы с открытым исходным кодом с помощью FileAccess.Read и FileShare.Read явно (#7915) (Спасибо @IISResetMe!)
  • Исправление Enter-PSSession -ContainerId для последней версии Windows (#7883)
  • Убедитесь, что свойство NestedModules заполняется ( Test-ModuleManifest #7859)
  • Добавить %F кейс в Get-Date -UFormat (#7630) (Спасибо @britishben!)
  • Исправление Set-Service -Status Stopped для прекращения сервисов с зависимостью (#5525) (Спасибо @zhenggu!)