いくつかの条件に基づいて、コレクションからいくつかのオブジェクトを削除する必要があることがよくあります。
Get-SomeCollection | ? { $_.SomeProperty -eq "SomeValue" } | % { $_.Delete() }
ただし、これは最初の要素のみを削除し、「コレクションが変更されました... bla bla ...」という例外をスローします。例外のポイントはわかりましたが、これを行うための推奨される方法は何ですか?
私は通常、いくつかの配列を使用itemsToDelete
し、その配列を再度繰り返して削除操作を実行します。
$itemsToDelete = @()
Get-SomeCollection | ? { $_.SomeProperty -eq "SomeValue" } | % { $itemsToDelete += $_ }
$itemsToDelete | % { $_.Delete() }
これで十分なのか、それともより良い方法があるのか 疑問に思っていました。