我有两个包含数据的电子表格,我想比较这些数据以突出显示匹配和不匹配的数据,并带有一些“陷阱” - 我想忽略一些列进行比较(分数、测试名),其他列我想包括(文件名和哈希) ,并且我想通过双方(所以即使它不匹配,我也想做一个“完整的外部”查询)。这是我的示例数据:
CSV1(来源):
FileName, ServerName, TestName, Hash, Score
C:\temp, ServerA, TestA, 12345, 100
C:\temp1, ServerA, TestA, 12345, 100
C:\temp2, ServerA, TestA, 12345, 5
C:\temp3, ServerA, TestA, 8888, 100
C:\temp5, serverA, TestB, 9999, 100
CSV2(比较目标):
FileName, ServerName, TestName, Hash, Score
C:\temp, ServerB, TestA, 12345, 100
C:\temp1, ServerB, TestA, 5555, 100
C:\temp3, ServerB, TestA, 8888, 100
C:\temp5, ServerB, TestB, 9999, 100
C:\temp7, ServerB, TestB, 5678, 22
我想看看文件名和哈希是否匹配 - 例如 C:\temp 和 C:\temp5 将匹配并返回带有侧面指示符的所有列 - 例如
输出 CSV
SourceFileName, SourceServer,DestinationServer, ..., Match, Score
C:\temp, ServerA, ServerB, True, 100
C:\temp3, ServerA, ServerB, True, 8888
C:\temp1, ServerA, ServerB, False, 100
C:\temp2, ServerA, N/A, False, 5
C:\temp7, N/A, ServerB, False, 22
我使用了 ForEach($record in $CSV1) 并检查了匹配的文件名,然后是哈希,但是对于大量数据来说速度很慢(我怀疑是因为我的完整外部查询需要我用所有列的新成员扩展我的哈希表) .
我认为 Compare-object 会很合适,但这似乎不允许我在 passthru 语句中包含双方,除非我遗漏了什么?