Merge/output 使用 Powershell 的两个 CSV 的唯一值

Merge/output Unique values of two CSVs using Powershell

我正在尝试找到唯一的 values/merge 两个 CSV。但它似乎没有用。

出于某种原因,代码没有 return 唯一值(不合并)。输出始终是第一个 CSV 的值。在本例中,它是 returning $Users1 的值。如果我将它更改为 $UserUnique = $Users2 + $user1 它 return 是 $User2

的值

这是我的代码:

$Users1 = Import-Csv -Path \share\user\Desktop\disabledusers.csv
$Users2 = Import-Csv -Path \share\user\Desktop\disabledusers2.csv

$UserUnique = $Users1 + $user2
$UserUnique | Select-Object -Property * -Unique

有什么想法吗?

提前致谢。

我的参考 link -

根据要求提供更多信息:请在下面找到 CSV 和预期结果。

$Users1

name    lastlogondate   passwordlastset SAMAccountName  
Name1   20/03/2017 12:54    05/09/2013 13:43    Sam1    
Name2   18/08/2016 10:31    04/03/2015 09:42    Sam2    
Name3   11/09/2016 17:48    17/03/2015 12:02    Sam3    
Name4   06/09/2016 08:46    06/10/2015 09:44    Sam4    
Name5   07/09/2016 08:46    07/10/2015 09:44    Sam5    
Name6   08/09/2016 08:46    08/10/2015 09:44    Sam6    

$Uers2

name    lastlogondate   passwordlastset SAMAccountName
Name1   20/03/2017 12:54    05/09/2013 13:43    Sam1
Name2   18/08/2016 10:31    04/03/2015 09:42    Sam2
Name3   11/09/2016 17:48    17/03/2015 12:02    Sam3
Name4   06/09/2016 08:46    06/10/2015 09:44    Sam4
Name7   09/09/2016 08:46    09/10/2015 09:44    Sam7
Name8   10/09/2016 08:46    10/10/2015 09:44    Sam8
Name9   11/09/2016 08:46    11/10/2015 09:44    Sam9
Name10  12/09/2016 08:46    12/10/2015 09:44    Sam10

预期结果

name    lastlogondate   passwordlastset SAMAccountName
Name1   20/03/2017 12:54    05/09/2013 13:43    Sam1
Name2   18/08/2016 10:31    04/03/2015 09:42    Sam2
Name3   11/09/2016 17:48    17/03/2015 12:02    Sam3
Name4   06/09/2016 08:46    06/10/2015 09:44    Sam4
Name5   07/09/2016 08:46    07/10/2015 09:44    Sam5
Name6   08/09/2016 08:46    08/10/2015 09:44    Sam6
Name7   09/09/2016 08:46    09/10/2015 09:44    Sam7
Name8   10/09/2016 08:46    10/10/2015 09:44    Sam8
Name9   11/09/2016 08:46    11/10/2015 09:44    Sam9
Name10  12/09/2016 08:46    12/10/2015 09:44    Sam10

您的问题是一个 简单的错字 $user2 应该是 $users2.

一个未定义的变量 - $user2,在这种情况下 - 默认为 $null,使得预期的数组连接操作 $Users1 + $user2 没有-op:实际上,您只得到 $Users1,这就解释了您的症状(您尝试交换操作数,$Users2 + $user1,保留了拼写错误)。

为防止此类拼写错误,使用 Set-StrictMode -Version 1 或更高版本使 PowerShell 在访问未定义的变量时报告 错误"..." 内除外)。

然而,除此之外,我建议绕过 Import-Csv 和昂贵的 Select-Object -Property * 方法(请参阅 链接问题的解释),这既简化了代码又使效率更高:

Get-Content \share\user\Desktop\disabledusers.csv, \share\user\Desktop\disabledusers2.csv |
  Select-Object -Unique