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
我正在尝试找到唯一的 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