Powershell 使用Where对象从对象获取其他数据
我有两个对象集合,A和B。A来自CSV文件,B来自Powershell 使用Where对象从对象获取其他数据,powershell,Powershell,我有两个对象集合,A和B。A来自CSV文件,B来自Get ADUser。A和B都有一个名为“用户名”的字段。我想做的是检查B是否包含A,如果是,将描述从B复制到A。类似这样: $A.'Description' = $B | ? {$A.Username -eq $B.Username; $B.Description} 我觉得有一种方法可以做到这一点,而无需迭代另一个循环(我已经在循环中遍历了每个obj) 创建一个将用户名从$B映射到相应描述的映射: $ht = @{} $B | ForEach
Get ADUser
。A和B都有一个名为“用户名”的字段。我想做的是检查B是否包含A,如果是,将描述从B复制到A。类似这样:
$A.'Description' = $B | ? {$A.Username -eq $B.Username; $B.Description}
我觉得有一种方法可以做到这一点,而无需迭代另一个循环(我已经在循环中遍历了每个obj) 创建一个将用户名从$B
映射到相应描述的映射:
$ht = @{}
$B | ForEach-Object { $ht[$_.Username] = $_.Description }
然后迭代$A
的元素,如果$ht
包含匹配的键,则更新这些描述:
$A | Where-Object {
$ht.ContainsKey($_.Username)
} | ForEach-Object {
$_.Description = $ht[$_.Username]
}
<代码>前缀($AUSER为$A){$AUSER。描述=($B){ $$·用户名-EQ$AUSER。用户名})。