Powershell 比较对象管道到文件和函数
Powershell Compare-Object pipe to file and function
我是 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
您可以将 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
我是 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
您可以将 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