我經常需要從基於一些條件,我每次和了這個集合中刪除某些對象:從集合中刪除項目的建議方法是什麼?
Get-SomeCollection | ? { $_.SomeProperty -eq "SomeValue" } | % { $_.Delete() }
但是,這將只刪除第一個元素,然後拋出一個異常「集合被修改。 ..bla bla ...「。我明白了這個例外,但是這是什麼建議?
我通常使用一些陣列itemsToDelete
,然後我通過數組再次重複並執行刪除操作:
$itemsToDelete = @()
Get-SomeCollection | ? { $_.SomeProperty -eq "SomeValue" } | % { $itemsToDelete += $_ }
$itemsToDelete | % { $_.Delete() }
我想知道這是否是足夠好或有什麼更好的辦法。
我不熟悉使用PowerShell。我在泛型方面也有類似的問題。也許這會有所幫助。 http://stackoverflow.com/questions/2995811/removing-items-from-a-generic-listt – frosty