Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用powershell比较两个CSV文件中的单元格_Powershell - Fatal编程技术网

使用powershell比较两个CSV文件中的单元格

使用powershell比较两个CSV文件中的单元格,powershell,Powershell,对这件事很陌生。我需要将一列与一个CSV文件中的用户名进行比较,将另一个CSV文件中的一列与用户名进行比较,如果存在重复项,则将其输出或删除 他们目前的样子: $File1: 我要找的是: Firstname,Lastname,Username,Duplicate Peter,Larsen,Larsen.123,True Pia,Jensen,Jensen.123,True Poul,Hansen,Hansen.123,False 然后按顺序导入和导出之前和之后的CSV文件。将第二个文件读入哈希

对这件事很陌生。我需要将一列与一个CSV文件中的用户名进行比较,将另一个CSV文件中的一列与用户名进行比较,如果存在重复项,则将其输出或删除

他们目前的样子:

$File1:

我要找的是:

Firstname,Lastname,Username,Duplicate Peter,Larsen,Larsen.123,True Pia,Jensen,Jensen.123,True Poul,Hansen,Hansen.123,False
然后按顺序导入和导出之前和之后的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
致意
Guenther

到目前为止,您尝试过什么编码?欢迎使用Stackoverflow,请查看帮助部分,了解有关如何提问的详细信息。您的问题很好,只是需要您尝试的代码的详细信息
(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
Firstname,Lastname,Username
Poul,Hansen,Hansen.123