Функция с String Message, эхо на экран, изменение цвета сообщения - PullRequest
1 голос
/ 11 марта 2020

Доброе утро всем, решено Оба ответа работали рука об руку. Большое спасибо 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
}

Например, когда вызывается функция журнала, она выводит сообщение в виде зеленого текста, что нормально. Но если бы я хотел использовать функцию ведения журнала, чтобы изменить текст заголовков разделов на желтый, есть ли способ сделать это? Вот то, о чем я сейчас говорю

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

Ответы [ 2 ]

2 голосов
/ 11 марта 2020

Вам необходимо добавить еще один переключатель «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

1 голос
/ 11 марта 2020

Как это?

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
...