Powershell比较对象管道到文件和功能

时间:2015-11-17 14:11:20

标签: powershell compareobject

我是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 个答案:

答案 0 :(得分: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