Усовершенствования консоли в WMF 5.1#Console Improvements in WMF 5.1#

Усовершенствования консоли PowerShellPowerShell console improvements

Для улучшения работы с консолью в Powershell.exe в WMF 5.1 были внесены перечисленные ниже изменения.The following changes have been made to powershell.exe in WMF 5.1 to improve the console experience:

Поддержка VT100VT100 support

В Windows 10 реализована поддержка escape-последовательностей VT100.Windows 10 added support for VT100 escape sequences. При расчете ширины таблиц PowerShell игнорирует некоторые escape-последовательности форматирования VT100.PowerShell will ignore certain VT100 formatting escape sequences when calculating table widths.

В PowerShell также появился новый интерфейс API, который можно использовать при форматировании кода для определения наличия поддержки VT100.PowerShell also added a new API that can be used in formatting code to determine if VT100 is supported. Например:For example:

if ($host.UI.SupportsVirtualTerminal)
{
    $esc = [char]0x1b
    "A yellow ${esc}[93mhello${esc}[0m"
}
else
{
    "A default hello"
}

Вот полный пример, который можно использовать для выделения совпадений в результатах выполнения командлета Select-String.Here is a complete example that can be used to highlight matches from Select-String. Сохраните пример в файле с именем MatchInfo.format.ps1xml. Чтобы использовать его, в своем профиле или другом месте выполните команду Update-FormatData -Prepend MatchInfo.format.ps1xml.Save the example in a file named MatchInfo.format.ps1xml, then to use it, in your profile or elsewhere, run Update-FormatData -Prepend MatchInfo.format.ps1xml.

Имейте в виду, что escape-последовательности VT100 поддерживаются начиная с юбилейного обновления Windows 10. В более ранних системах они не поддерживаются.Note that VT100 escape sequences are only supported starting with the Windows 10 Anniversary update; they are not supported on earlier systems.

Поддержка режима vi в PSReadlineVi mode support in PSReadline

В PSReadline добавлена поддержка режима vi.PSReadline adds support for vi mode. Чтобы включить режим vi, выполните команду Set-PSReadlineOption -EditMode Vi.To use vi mode, run Set-PSReadlineOption -EditMode Vi.

Перенаправленный поток stdin с интерактивным вводомRedirected stdin with interactive input

В предыдущих версиях среду PowerShell требовалось запускать с помощью команды powershell -File -, если поток stdin перенаправлялся и необходимо было вводить команды в интерактивном режиме.In earlier versions, starting PowerShell with powershell -File - was required when stdin was redirected and you wanted to enter commands interactively.

В WMF 5.1 этот сложный для обнаружения вариант больше не требуется.With WMF 5.1, this hard to discover option is no longer necessary. PowerShell можно запустить без параметров, например powershell.You can start PowerShell without any options, e.g. powershell.

Обратите внимание на то, что PSReadline в настоящее время не поддерживает перенаправленный поток stdin, а встроенные возможности редактирования в командной строке с перенаправленным потоком stdin крайне ограничены, например не работают клавиши со стрелками.Note that PSReadline does not currently support redirected stdin, and the built-in command-line editing experience with redirected stdin is extremely limited, for example, arrow keys don't work. В будущих версиях PSReadline эта проблема должна быть решена.A future release of PSReadline should address this issue.