我有两个对象集合,A和B.A来自CSV文件,B来自Get-ADUser
。 A和B都有一个名为"用户名"的字段。我想要做的是检查B是否包含A,如果是,请将描述从B复制到A.这样的事情:
$A.'Description' = $B | ? {$A.Username -eq $B.Username; $B.Description}
我觉得有一种方法可以在不迭代另一个循环的情况下执行此操作(我已经循环遍历A中的每个obj)。
答案 0 :(得分:1)
创建一个hashtable将用户名从$B
映射到相应的描述:
$ht = @{}
$B | ForEach-Object { $ht[$_.Username] = $_.Description }
然后迭代$A
的元素,并在$ht
包含匹配键时更新这些描述:
$A | Where-Object {
$ht.ContainsKey($_.Username)
} | ForEach-Object {
$_.Description = $ht[$_.Username]
}