将比较对象结果添加到差异数据集

时间:2012-09-19 15:54:01

标签: sql-server powershell diff

我有两个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","<="

谢谢, 扎克

1 个答案:

答案 0 :(得分:3)

这应该为$output提供您正在寻找的价值。

$output = Compare-Object $(Import-Csv c:\test.csv) $(Import-Csv c:\test2.csv) -Property FirstName, Lastname

当您使用文件的Get-Content时,它会将每一行作为数组的对象。这会将firstnamelastname视为单行,它存在于两个数组中。因此,它不会与compare-object一起返回,因为它同时存在。

当您使用Import-Csv时,它将第一行作为标题,并使它们成为数组的属性。之后的每一行都会根据其在.csv中的位置添加到该媒体资源中。这意味着compare-object可以将它们与不同的数组进行比较,并将属性保持为输出。