Powershell Compare-Object труба к файлу и функции

Я новичок в Powershell, и я хотел бы передать результат Compare-Object в функцию Write-Progress (индикатор выполнения), а также в файл.csv. У меня есть следующее, но он только пишет в файл. Могу ли я использовать только одну трубу? У меня есть большие каталоги для сравнения, и я действительно не хочу снова просматривать результаты после использования Compare-Object:

$Counter = 0
Write-Host "Comparing Folders"
compare-object $dirList1 $dirList2 | %{
Write-Progress -Activity "Comparing Folders" -Status "$_" -PercentComplete ($counter/$TotalFolderCount * 100)
sleep -milliseconds 20
$Counter++
} | ft inputobject, @{n="Only In Directory";e={ if ($_.SideIndicator -eq '=>') { "$dir2" }  else { "$dir1" } }} | Out-File $outFile

1 ответ

Решение

Вы можете заменить Out-File с Tee-Object

Tee-Object запишет входные объекты в файл и передаст их по конвейеру, например:

"Test01","Test02" | Tee-Object -FilePath C:\temp\tee.txt | % {
    Write-Host $_ -ForegroundColor Green
}

Вы увидите, что строки записаны на экране ярко-зеленым цветом, и если вы осмотрите файл, то увидите, что он также содержит строки:

PS C:\> Get-Content C:\temp\tee.txt
Test01
Test02
Другие вопросы по тегам