对此很新。我需要将一个CSV文件中的列与用户名进行比较,将另一个CSV文件中的用户名列与一个列进行比较,如果存在重复项则输出或删除它们。
目前看起来如何:
$File1
:
Firstname,Lastname,Username Peter,Larsen,Larsen.123 Pia,Jensen,Jensen.123 Poul,Hansen,Hansen.123
$File2
:
Username Larsen.123 Andersen.123 Jensen.123
我在寻找:
Firstname,Lastname,Username,Duplicate Peter,Larsen,Larsen.123,True Pia,Jensen,Jensen.123,True Poul,Hansen,Hansen.123,False
它不一定是真/假输出,从File1或类似物中删除所有重复的条目,也是完全没问题。它本质上只是将我们AD中的用户与我们用户数据库中的用户进行比较,以查看是否有人仍然可以访问不应该拥有的用户。
修改
到目前为止试过这个问题,在这里找到了类似的问题:
foreach ($user in $File1) {
$MatchAccount = (Compare-Object $File2 $user -Property 'Username' -PassThru).Value
$user = Add-Member -InputObject $user -Type NoteProperty -Name 'Value' -Value $MatchAccount
只需按顺序导入和导出CSV文件。
答案 0 :(得分:1)
将第二个文件读入哈希表:
$users = @{}
Import-Csv 'file2.csv' | ForEach-Object {
$users[$_.Username] = $true
}
然后检查第一个CSV的每一行是否包含该哈希表中的用户名,并add a field是否包含该检查的结果:
(Import-Csv 'file1.csv') |
Select-Object *,@{n='Duplicate';e={$users.ContainsKey($_.Username)}} |
Export-Csv 'file1.csv' -NoType
答案 1 :(得分:0)
这是我的方法:
# import csv file1
$file1 = Import-Csv -Path C:\tmp\file1.csv
# import csv file2 and select column "Username"
$file2 = Import-Csv -Path C:\tmp\file2.csv | % {$_.Username}
# create output/result hash table
$file3 = @()
# go through entries in file1
foreach($entry in $file1) {
# check if entry is in not in file2
if($file2 -notcontains $entry.Username) {
# add entry to output hash table
$file3 += $entry
}
}
# export result to csv
$file3 | Export-Csv -Path C:\tmp\file3.csv -NoTypeInformation
file3.csv
将具有以下内容
Firstname,Lastname,Username
Poul,Hansen,Hansen.123
祝你好运 京特