在一个命令中,在Powershell中使用多个前景色,包括空格

在一个命令中,在Powershell中使用多个前景色,包括空格,powershell,colors,Powershell,Colors,我想为我的小脚本制作一个漂亮的GUI。我正在描述一个函数如何实现它 function Write-Color([String[]]$Text, [ConsoleColor[]]$Color) { for ($i = 0; $i -lt $Text.Length; $i++) { Write-Host $Text[$i] -Foreground $Color[$i] -NoNewLine } Write-Host } Write-Color -Text R

我想为我的小脚本制作一个漂亮的GUI。我正在描述一个函数如何实现它

function Write-Color([String[]]$Text, [ConsoleColor[]]$Color) {
    for ($i = 0; $i -lt $Text.Length; $i++) {
        Write-Host $Text[$i] -Foreground $Color[$i] -NoNewLine
    }
    Write-Host
}

Write-Color -Text Red,White,Blue -Color Red,White,Blue
它通常工作正常,但不喜欢有空间的情况。我想确保输出外观良好,因此我添加了一些空格


有没有一种方法可以让它包含空间,而不会做出怪异的行为(至少在我看来是这样?)。有趣的是,它有时能正确显示,有时却不能。我不知道为什么?

我不知道为什么会这样,但在执行颜色之前添加“开始睡眠”解决了这个问题

Start-Sleep -Milliseconds 30
# Write-Color goes here... 

因此,对于清除屏幕(通过菜单)后的每个新显示,我实际上设置了开始睡眠。这就好像在颜色赶上屏幕之前,显示器的执行速度太快了

您的PowerShell版本是什么,您在哪里运行此脚本。我很难复制您的输出。Windows 2012 R2、PowerShell ISE、PS4.0版。我在很多场合都见过这种情况,不仅仅是在空间上。当我考虑开始睡眠工作时,一定是输出延迟。
Start-Sleep -Milliseconds 30
# Write-Color goes here...