String Message 函数,回显到屏幕,改变消息的颜色

Function with String Message, echos to screen, change the color of message

大家早上好, 已解决 两种反应齐头并进。非常感谢 Scepticalist 和 Wasif Hasan 提供的示例!!

我有一个带有消息参数的日志记录函数。通过该函数,它使用绿色文本颜色编写消息。有没有办法改变日志中某些消息的颜色?下面是函数。

Function Get-Logger { 
    param(
       [Parameter(Mandatory=$True)]
       [String]$message
    )

    $TimeStamp = Get-Date -Format "MM-dd-yyy hh:mm:ss"

    Write-Host $TimeStamp -NoNewline
    Write-Host `t $message -ForegroundColor Green
    $logMessage = "[$TimeStamp]  $message"
    $logMessage | Out-File -Append -LiteralPath $VerboseLogFile
}

例如,当调用日志函数时,它会以绿色文本回显消息,这很好。但是如果我想使用日志记录功能将 headers 部分的文本更改为黄色,有没有办法做到这一点?下面是我要说的

Get-Logger "Hello Word Starting" -Foregroundcolor yellow -nonewline

像这样?

Function Get-Logger { 
    param(
       [Parameter(Mandatory=$True)][String]$message,
       [validatescript({[enum]::getvalues([system.consolecolor]) -contains $_})][string]$messagecolor,
       [switch]$nonewline
    )

    $TimeStamp = Get-Date -Format "MM-dd-yyy hh:mm:ss"
    If ($nonewline){
        Write-Host `t $message -ForegroundColor $($messagecolor) -nonewline
    }
    Else {
        Write-Host `t $message -ForegroundColor $($messagecolor)
    }
    $logMessage = "[$TimeStamp]  $message"
    $logMessage | Out-File -Append -LiteralPath $VerboseLogFile
}

然后:

Get-Logger "Hello Word Starting" -messagecolour yellow -nonewline

您需要添加另一个开关"NoNewLine"。所以在参数块中添加:

[switch]$nonewline

并且在函数体中,做:

If ($nonewline){
  Write-Host `t $message -ForegroundColor $($messagecolour) -nonewline
}
Else {
  Write-Host `t $message -ForegroundColor $($messagecolour)
}

您现在可以在参数块上添加验证脚本来验证颜色:

[validatescript({[enum]::getvalues([system.consolecolor]) -contains $_})][string]$messagecolor

感谢@Scepticalist