Центрирование разноцветного текста с помощью PowerShell - PullRequest
1 голос
/ 08 ноября 2019

Я пытаюсь центрировать текст по окну;однако текст разноцветный. Например, «Папка:» имеет белый цвет, а «C: \ Temp» - красный. По центру окна, независимо от того, насколько оно велико или мало, будет «Папка: C: \ Temp», но слово «Папка:» будет белым, а «C: \ Temp» красным.

Я знаю, как центрировать весь текст, если он одного цвета.

Мой код:

$Path = "C:\Temp"

Function Write-A{
 param($message) Write-Host ("{0}.{1}" -f * (([Math]::Max(0, $Host.UI.RawUI.BufferSize.Width / 2) - [Math}::Floor($message.Length / 2)))), $message) -ForegroundColor DarkGray
}

Write-A "Folder: $Path"

Это центрирует текст;Тем не менее, это все один цвет. Есть предложения?

1 Ответ

0 голосов
/ 09 ноября 2019

Если вы хотите использовать собственный PS, вам нужно будет использовать 2 отдельных вызова для Write-Host, чтобы достичь этого.

$Path = "C:\Temp"

Function Write-A
{
 param($message)

 Write-Host -NoNewLine ("{0}{1}" -f (' ' * (([Math]::Max(0, $Host.UI.RawUI.BufferSize.Width / 2) - [Math]::Floor($Message.Length / 2)))), "Folder: ") -ForegroundColor white 

 Write-Host -NoNewLine $message -ForegroundColor red

}

Write-A "$Path"

К счастью для нас, это было довольно легко сделать с помощью Write-Цвет: https://github.com/EvotecIT/PSWriteColor

https://www.powershellgallery.com/packages/PSWriteColor/0.86

Я еще не выяснил, как с ним центрировать текст, но, я уверен, это возможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...