Пользовательский PowerShell BackgroundColor возвращается при запуске команд? - PullRequest
0 голосов
/ 19 июня 2019

Я использую профиль powershell, чтобы изменить цвет фона консоли powershell (на черный), когда он работает в качестве моей учетной записи суперпользователя или на основе других критериев. Я делаю это просто, устанавливая следующие переменные в моем профиле ps1.

$host.ui.rawui.backgroundcolor = "black"
$host.ui.rawui.foregroundcolor = "white"

Окна консоли, использующие этот профиль, открываются с черным фоном, а исходное приглашение - белый текст с черным фоном. Нажатие Enter без ввода текста ничего не меняет.

Однако, как только я введу какой-либо текст, цвет фона напечатанного текста, подсказок и любого вывода (кроме ошибок) изменится на белый по умолчанию на темно-синем. Общий фон консоли остается черным.

Перезагрузка профиля с помощью . .\path\profile.ps1 или ручной сброс переменных $host (как указано выше) переводит запрос в белый на черный, но такое же поведение происходит снова. Самым странным является то, что даже если набрать текст, а затем отступить и ничего не вводить, приглашение снова перейдет во флот.

Есть ли способ на самом деле иметь чисто черный фон, или это просто ограничение консоли powershell (v5.1 btw)?

Я видел некоторые ссылки на другие связанные с цветом переменные, но я не понимаю, как они могут быть полезны в этом отношении:

$host.PrivateData.ErrorForegroundColor
$host.PrivateData.ErrorBackgroundColor
$host.PrivateData.WarningForegroundColor
$host.PrivateData.WarningBackgroundColor
$host.PrivateData.DebugForegroundColor
$host.PrivateData.DebugBackgroundColor
$host.PrivateData.VerboseForegroundColor
$host.PrivateData.VerboseBackgroundColor
$host.PrivateData.ProgressForegroundColor
$host.PrivateData.ProgressBackgroundColor

P.S. Я бы опубликовал изображение, но моя подсказка и прочее содержат личную информацию. Я уверен, что не могу дождаться нового модного Terminal MS, анонсированного в прошлом месяце. Я могу только надеяться, что это гораздо менее громоздко, чем это.

1 Ответ

1 голос
/ 19 июня 2019

Вам нужно будет соответственно изменить параметры PSReadLineOption, а также RawUI и PrivateData.

См. Get-PSReadlineOption, чтобы отрегулировать текущие цвета и настроить их с помощью Set-PSReadlineOption -TokenKind $token -BackgroundColor Black

...