У меня есть скрипт, который принимает «-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 }