2017-08-07 27 views
1

私はオブジェクトAとBの2つのコレクションを持っています.AはCSVファイルのもので、BはGet-ADUserです。 AとBの両方に「Username」という名前のフィールドがあります。私は何をすることができるようにしたいことはBが含まれているかどうかをチェックし、もしそうなら、このようなA.何かにBから説明をコピーである:Where-Objectを使用してオブジェクトから他のデータを取得

$A.'Description' = $B | ? {$A.Username -eq $B.Username; $B.Description} 

私は反復せずにこれを行う方法があるように感じます別のループを渡って(私は既にAの各objをループしています)。

+0

'のforeachを($ Aの$ AUser){$ AUser.Description =($ B | Where {$ _。ユーザー名-eq $ AUser.UserName})説明} '? – TessellatingHeckler

答えて

1

それぞれの記述に$Bからユーザ名をマッピングhashtable作成:

$ht = @{} 
$B | ForEach-Object { $ht[$_.Username] = $_.Description } 

$htが整合キー含まれている場合、$Aの要素を反復処理し、それらの説明を更新:

$A | Where-Object { 
    $ht.ContainsKey($_.Username) 
} | ForEach-Object { 
    $_.Description = $ht[$_.Username] 
} 
+1

@downvoterあなたは私の答えについてdownvote-worthyと考えていることを説明するのに気をつけますか? –

関連する問題