簡體   English   中英

使用Powershell比較兩個CSV文件中的單元格

[英]Comparing cells in two CSV files using powershell

這很新。 我需要將一個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

它不一定必須是true / 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文件即可。

將第二個文件讀入哈希表:

$users = @{}
Import-Csv 'file2.csv' | ForEach-Object {
    $users[$_.Username] = $true
}

然后檢查第一個CSV的每一行是否包含該哈希表中的用戶名,並添加帶有檢查結果的字段

(Import-Csv 'file1.csv') |
    Select-Object *,@{n='Duplicate';e={$users.ContainsKey($_.Username)}} |
    Export-Csv 'file1.csv' -NoType

這是我的方法:

# 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

最好的問候根瑟

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM