PowershellのRemoveChildでプチハマったこと

Foreach($node in $list) {
    if($node.Name -eq "hoge") {
           $target.RemoveChild($node) 
    }
}

みたいなことをやっていた。 これだと、nodeを含む情報自身をForeach内で破壊していたため、ループが最後まで走査されなくなっていた。お目当てのものを予めリストに保持して後で削除するとうまくいく。

別にPowershellに限った話ではないが、ついついこーいうことをやってしまう