Предположим, у меня есть следующее
$csvfiles | ForEach-Object {Import-Csv "$csvLocation\$_"; Remove-Item "$csvLocation\$_" -Verbose | tee .\log.txt -Append} |
Export-Csv -NoTypeInformation "$csvLocation\$DBName.csv" -force
Я вижу подробный вывод на консоли, но tee ничего не добавляет в файл журнала. Как я могу вывести вывод -verbose в файл? (VERBOSE: выполнение операции удаления файла...)
@ Олаф, хм, понятно. так что мне придется сначала сохранить его в переменной, да? например: $VerboseMessage = $($_ = Remove-Item "$csvLocation\$_") 4>&1
Нет, просто перенаправьте подробный вывод на стандартный вывод (;Remove-Item "$csvLocation\$_" -Verbose 4>&1|tee .\log.txt -append}
и передайте его в tee-object
, но с тем, что вы делаете, вы не хотите этого делать, поскольку это передаст это сообщение по конвейеру вместе с данными CSV, и тогда Export-Csv
не знал бы, что делать с VERBOSE: Performing remove...
@TheMadTechnician вроде работает, но создает линию между двумя разными серверами в экспортированном CSV-файле.
Пожалуйста, редактировать свой вопрос, чтобы обновить код, который вы используете, и привести пример проблемы, с которой вы столкнулись. Прямо сейчас я думаю, что вам нужно изменить tee
на add-content
, но трудно сказать.
Это помогло
Remove-Item "$csvLocation\$DBName.csv" -ErrorAction SilentlyContinue
$csvfiles | ForEach-Object {
Import-Csv "$csvLocation\$_" | Export-Csv -Append -NoTypeInformation "$csvLocation\$DBName.csv" -Force;
Remove-Item "$csvLocation\$_" -Verbose 4>&1 | tee .\log.txt -Append
}
Это должно помочь вам Программный захват подробного вывода