通过PowerShell将多色文本居中

通过PowerShell将多色文本居中,powershell,colors,Powershell,Colors,我试图在窗口中居中显示文本;但是,文本是多色的。例如,“文件夹:”为白色,“C:\Temp”为红色。无论窗口有多大或多小,窗口的中心将是“Folder:C:\Temp”,但单词“Folder:”将为白色,“C:\Temp”将为红色 我知道如何使整个文本居中,只要是一种颜色 我的代码: $Path = "C:\Temp" Function Write-A{ param($message) Write-Host ("{0}.{1}" -f * (([Math]::Max(0, $Host.UI.

我试图在窗口中居中显示文本;但是,文本是多色的。例如,“文件夹:”为白色,“C:\Temp”为红色。无论窗口有多大或多小,窗口的中心将是“Folder:C:\Temp”,但单词“Folder:”将为白色,“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"

以文本为中心;然而,它都是一种颜色。有什么建议吗?

如果您想使用本机PS,则需要使用两个单独的调用来编写主机以实现此目的

$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"
幸运的是,使用书写颜色,这实际上变得非常简单:


我还没有弄清楚如何使用它来居中文本,但我相信这是可能的。

如果您想使用本机PS,您需要使用两个单独的调用来编写主机来实现这一点

$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"
幸运的是,使用书写颜色,这实际上变得非常简单:

我还没有弄明白如何用它来居中文本,但我相信这是可能的