PowerShell:單行輸出不同顏色的文字
通常Powershell輸出文字都是用Write-Host。
想變換前景顏色加參數-ForegroundColor後面搭配顏色
想變換背景顏色加參數-BackgroundColor後面搭配顏色
例如:
Write-Host "Hello World" -ForegroundColor White -BackgroundColor Blue
這樣就會輸出藍底白字的Hello World
但是如果你想單行輸出不同顏色的字,就要另外自帶Function進來
分享一下我找到的Function:Write-Color
function Write-Color([String[]]$Text, [ConsoleColor[]]$Color = "White", [int]$StartTab = 0, [int] $LinesBefore = 0,[int] $LinesAfter = 0, [string] $LogFile = "", $TimeFormat = "yyyy-MM-dd HH:mm:ss") {
$DefaultColor = $Color[0]
if ($LinesBefore -ne 0) { for ($i = 0; $i -lt $LinesBefore; $i++) { Write-Host "`n" -NoNewline } } # Add empty line before
if ($StartTab -ne 0) { for ($i = 0; $i -lt $StartTab; $i++) { Write-Host "`t" -NoNewLine } } # Add TABS before text
if ($Color.Count -ge $Text.Count) {
for ($i = 0; $i -lt $Text.Length; $i++) { Write-Host $Text[$i] -ForegroundColor $Color[$i] -NoNewLine }
} else {
for ($i = 0; $i -lt $Color.Length ; $i++) { Write-Host $Text[$i] -ForegroundColor $Color[$i] -NoNewLine }
for ($i = $Color.Length; $i -lt $Text.Length; $i++) { Write-Host $Text[$i] -ForegroundColor $DefaultColor -NoNewLine }
}
Write-Host
if ($LinesAfter -ne 0) { for ($i = 0; $i -lt $LinesAfter; $i++) { Write-Host "`n" } } # Add empty line after
if ($LogFile -ne "") {
$TextToFile = ""
for ($i = 0; $i -lt $Text.Length; $i++) {
$TextToFile += $Text[$i]
}
Write-Output "[$([datetime]::Now.ToString($TimeFormat))]$TextToFile" | Out-File $LogFile -Encoding unicode -Append
}
}
當你想輸出一行三個英文單字,但三個不同顏色,用-Text “AA”,”BB”,”CC” -Color 顏色,顏色,顏色
就可以將一行字分別輸出成三種顏色
Write-Color -Text "Blue ", "Green ", "White " -Color Blue,Green,White
另外她其他參數
-StartTab參數指的是在這一行前面增加你指定的TABS
-LinesBefore此排文字前,你想加幾行空白的行數
-LinesAfter此排文字後,你想加幾行空白的行數
你說這是不是很方便呢
感谢~,请问我可以转载这篇文章吗?(CC BY-NC-SA,保持署名)
可以喔,感謝!