我有两个 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","<="
谢谢, 扎克
最佳答案
这应该为 $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
可以将它们与不同的数组进行比较,并将属性维护为输出。
关于sql-server - 将比较对象结果添加到差异数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12498393/