如何在powershell中比较2个CSV文件

如何在powershell中比较2个CSV文件,powershell,csv,opencsv,export-csv,Powershell,Csv,Opencsv,Export Csv,我正在尝试将2个CSV文件与中的日志信息进行比较(logs\u all,logs\u new) 格式: 我想添加日志中不存在的行\u全部来自日志\u新建 $csv1 = Import-Csv $csvLogs_all -Delimiter "`t" $csv2 = Import-Csv $csvLogs_new -Delimiter "`t" $end = $csv1.Count $count = 0 $diffobj = @() # testtable is the name

我正在尝试将2个CSV文件与中的日志信息进行比较(logs\u all,logs\u new) 格式:

我想添加日志中不存在的行\u全部来自日志\u新建

$csv1 = Import-Csv $csvLogs_all -Delimiter "`t"
$csv2 = Import-Csv $csvLogs_new -Delimiter "`t"

$end     = $csv1.Count
$count   = 0
$diffobj = @()

# testtable is the name of the column, adjust it to your column header name
if($csv1.time[$count] -ne $csv2.time){
   $diffobj += $csv2[$count]
}

$count++
}until($count -eq $end)
Write-Host "chekking logs"
$diffobj | export-csv $csvLogs_all -NoTypeInformation
但是这不太好用,有什么可以帮我的吗?

看看cmdlet

cmdlet执行以下操作:

Compare-Object
cmdlet比较两组对象。一套 对象是“参考集”,另一个集是“差异集” 设置。”

比较的结果指示是否存在属性值 仅出现在引用集中的对象中(由
符号),或者,如果指定了
IncludeEqual
参数,则在这两种 对象(由
=
符号表示)

换句话说,它比较两个对象并告诉您它们的区别

要比较可以运行的两个CSV文件

$file1 = import-csv -Path "C:\temp\Test1.csv" 
$file2 = import-csv -Path "C:\temp\Test2.csv" 
Compare-Object $file1 $file2 -property ColumnName -IncludeEqual

非常感谢。如何将差异添加到文件1?您可以使用
addcontent
cmdlet向文件添加内容。例如,如果要将结果添加到
$file1
,只需运行
比较对象$file1$file2-属性列名称-IncludeEqual |添加内容$file1
,如果运行此操作,则会出现错误:添加内容:找不到驱动器。名为“@{time=19/04/2018 12”的驱动器不存在。在第1行char:71+…$file1$file2-属性列名-IncludeEqual |添加内容$file1我觉得不好,我认为
$file1
包含文件名。请尝试编写
添加内容-Path“name\u of_your\u file.txt”