我有两个System.Data.DataSet对象,我希望使用Compare-Object Cmdlet进行比较。我希望输出一个数据集,其中包含原始数据集的列,但仅包含差异,另外一列包含在Compare-Object cmdlet中计算的SideIndicator值。
假设我有这两个CSV:
#C:\test.csv
"firstName","lastName"
"Bruce","Wayne"
"Clark","Kent"
#C:\test2.csv
"firstName","lastName"
"Peter","Parker"
"Clark","Kent"
"Jean","Grey"
我想使用以下结果:
compare-object (Get-Content C:\test.csv) (Get-Content C:\test2.csv)
填充格式如下的数据集:
#desiredResult
"firstName","lastName","SideIndicator"
"Peter","Parker","=>"
"Jean","Grey","=>"
"Bruce","Wayne","<="
谢谢, 扎克
答案 0 :(得分:3)
这应该为$output
提供您正在寻找的价值。
$output = Compare-Object $(Import-Csv c:\test.csv) $(Import-Csv c:\test2.csv) -Property FirstName, Lastname
当您使用文件的Get-Content
时,它会将每一行作为数组的对象。这会将firstname
和lastname
视为单行,它存在于两个数组中。因此,它不会与compare-object
一起返回,因为它同时存在。
当您使用Import-Csv
时,它将第一行作为标题,并使它们成为数组的属性。之后的每一行都会根据其在.csv
中的位置添加到该媒体资源中。这意味着compare-object
可以将它们与不同的数组进行比较,并将属性保持为输出。