Условно записать вывод в файл для отслеживания потоков - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть скрипт, который принимает «-outToFilename» в качестве необязательного параметра с целью, при желании, вести журнал как на консоли, так и на файле. Обычно я использую такие функции:

function myLogger {
    [CmdletBinding()] 
    param(
        [Parameter(Mandatory)]
        [string]$myMessage,       
        [Parameter(Mandatory)]
        [string]$logToFile
    )
    if ($logToFile) {
       write-host $myMessage |tee -append -filePath $logToFile
    } else {
       write-host $myMessage
}

Но во время игры с Tee-Object мне было интересно, можно ли условно передать вывод записи- host cmdlet для tee-объекта Что-то вроде этого:

write-host $myMessage | if ($logToFile) { $_ | tee -filePath $logToFile }<br/>

РЕДАКТИРОВАТЬ с tee-Object лучше использовать write-output , чтобы Tee мог получать значения из конвейера: запись-вывод $ myMessage | if ($ logToFile) {$ _ | tee -filePath $ logToFile} Кроме того, в ожидании лучшего решения, когда мне нужен условный вывод в (обе) консоли и файла, я использую это:

write-host -ForegroundColor yellow "Some text to show"
if ( $saveToFile) { Write-output  "Some text to show" | tee -FilePath $saveToFile -Append |Out-Null }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...