2

我有 2 个带有用户名的 CSV 文件。
我只想导出两个文件中都不存在的用户名。

我现在拥有的代码:

$file1 = import-csv -Path "C:\ps\output\adusers.csv" 
$file2 = import-csv -Path "C:\ps\output\users.csv" 
Compare-Object $file1 $file2 -property name | Export-Csv -NoTypeInformation -Path "C:\ps\result\result.csv"
4

4 回答 4

2

用于Select-Object name仅从 Compare-Object 的输出中提取名称字段:

Compare-Object $file1 $file2 -Property name |
    select name |
    sort -unique -Property name |
    Export-Csv -NoTypeInformation -Path "C:\ps\result\result.csv"

笔记:

  • sort -unique对列表进行重复数据删除和排序。
  • 如果 CSV 很大,请使用HashSet
于 2017-02-20T08:16:41.287 回答
1

尝试这样的事情仅用于与file1Compare-Object的差异:

$file1=import-csv "C:\temp\test\adusers.csv" 
$file2=import-csv "C:\temp\test\users.csv"

Compare-Object $file1 $file2 -Property "Name" | 
    Where SideIndicator -eq "<=" |
    Select Name | 
    Export-Csv "C:\temp\test\result.csv" -NoType

如果您想要所有差异(来自两个文件),请删除此部分:

'Where SideIndicator -eq "<=" |'
于 2017-02-20T08:23:44.560 回答
1

如果您不介意使用 linq/NET,这将列出两个列表中的用户:

$file1 = import-csv -Path "C:\ps\output\adusers.csv" 
$file2 = import-csv -Path "C:\ps\output\users.csv" 
[linq.enumerable]::intersect( [object[]]($file1.name), [object[]]($file2.name) ) | 
  Export-Csv -NoTypeInformation -Path "C:\ps\result\result.csv"

Linq 没有相反/反向相交的方法,但您可以使用通用集合中的SymmetricExceptWith

下面的代码列出了出现在一个列表或另一个列表中但不是同时出现在两个列表中的用户:

$file1 = import-csv -Path "C:\ps\output\adusers.csv" 
$file2 = import-csv -Path "C:\ps\output\users.csv" 
$res = [Collections.Generic.HashSet[String]]( [string[]]($file1.name) )
$res.SymmetricExceptWith( [string[]]($file2.name) )
$res | Export-Csv -NoTypeInformation -Path "C:\ps\result\result.csv"

注意:此代码可能不适用于早期的 powershell 版本。

于 2017-02-20T12:18:50.313 回答
0

使用 SideIndicator 获取差异。

$file1 = import-csv -path C:\Output\Test.csv
$file2 = import-csv -path C:\Output\DomainUsers.csv
Compare-Object $file1 $file2 -property name -IncludeEqual | where-object {($_.SideIndicator -eq "=>") -or ($_.SideIndicator -eq "<=") } | Export-csv C:\Output\Difference.csv –NoTypeInformation

注意:您也可以在您的情况下使用sort -unique

希望能帮助到你。

于 2017-02-20T08:17:58.170 回答