我正在尝试查找唯一值/合并两个CSV。但它似乎没有奏效。
由于某种原因,代码不返回唯一值(不合并)。输出始终是第一个CSV的值。在这种情况下,它返回$Users1
的值。如果我将其更改为$UserUnique = $Users2 + $user1
,则会返回$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
有什么想法吗?
提前致谢。
我的参考链接 - How to merge two csv files in powershell with same headers and discard duplicate rows
根据要求提供更多信息:请在下面找到CSV和预期结果。
$用户1
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
答案 0 :(得分:0)
您的问题是简单错误:$user2
应为$users2
。
未定义的变量 - $user2
,在这种情况下 - 默认为$null
,使目标数组连接操作$Users1 + $user2
成为无操作:有效,你得到的只是$Users1
,这解释了你的症状(你试图交换操作数,$Users2 + $user1
,保留了错字)。
要防止此类拼写错误,使用Set-StrictMode -Version 1
或更高版本,以便在访问未定义的变量时使PowerShell报告错误 ("..."
内部除外)。
除此之外,我建议绕过Import-Csv
和昂贵的Select-Object -Property *
方法(请参阅my answer链接问题以获得解释),这既简化了代码又使其更多有效:
Get-Content \\share\user\Desktop\disabledusers.csv, \\share\user\Desktop\disabledusers2.csv |
Select-Object -Unique