【发布时间】:2020-08-16 06:22:58
【问题描述】:
说[假设地],我有两个 .CSV 我正在比较尝试看看我当前的哪些成员是原始成员...我写了一个嵌套的 ForEach-Object 比较每个对象中的每个 $name 和 $memberNumber所有其他对象。它工作得很好,但需要很长时间,特别是因为每个 CSV 都有成千上万个对象。我还有其他方法可以解决这个问题吗?
Original_Members.csv
姓名、成员编号
爱丽丝,1234
吉姆,4567
Current_Members.csv
爱丽丝,4599
吉姆,4567
$currentMembers = import-csv $home\Desktop\current_members.csv |
ForEach-Object {
$name = $_.Name
$memNum = $_."Member Number"
$ogMembers = import-csv $home\Desktop\original_members.csv" |
ForEach-Object {
If ($ogMembers.Name -eq $name -and $ogMembers."Member Number" -eq $memNum) {
$ogMember = "Yes"
}
Else {
$ogMember = "No"
}
}
[pscustomobject]@{
"Name"=$name
"Member Number"=$memNum
"Original Member?"=$ogMember
}
} |
select "Name","Member Number","Original Member?" |
Export-CSV "$home\Desktop\OG_Compare_$(get-date -uformat "%d%b%Y").csv" -Append -NoTypeInformation
【问题讨论】:
-
显示你的嵌套 foreach 代码
-
将较大的转换为哈希表,然后将其用作查找表。如果需要,键可以是
.Name或两个属性作为字符串。 ///// 你可能还想看看使用哈希集。 -
它们都有不同的(附加)列。我有办法只在哈希表/数组中包含某些列吗?
标签: powershell import-csv foreach-object