退出我有以下代碼:如何從的foreach對象在PowerShell中
$project.PropertyGroup | Foreach {
if($_.GetAttribute('Condition').Trim() -eq $propertyGroupConditionName.Trim()) {
$a = $project.RemoveChild($_);
Write-Host $_.GetAttribute('Condition')"has been removed.";
}
};
問題1:如何從退出的ForEach?我嘗試使用「休息」和「繼續」,但它不起作用。
問題#2:我發現我可以修改foreach
循環內的列表...我們不能在C#中這樣做......爲什麼PowerShell允許我們這樣做?
我想你的意思是在你的循環中添加一行''a = 1..23;'來表明更改不會反映在循環執行中。 – ruffin 2015-06-09 21:44:22
項目#2不正確(至少在v5中使用固定大小的陣列)。您可以修改該數組,並在'ForEach'構造中使其可見。如果要在ForEach結構中添加'$ a [1] = 9',它將顯示9作爲第二個元素,但不能從數組中添加/移除元素,並且使用「+」 ='運營商將不會顯示,直到結束。如果不是固定大小的數組(即'$ a = [System.Collections.ArrayList @(1,2,3)'),那麼任何修改內容的嘗試都將導致'集合被修改;枚舉操作可能不會執行。「錯誤,終止循環。 – Adrian 2016-01-26 20:19:30
這是一個完全不正確的答案。問題在於「Foreach-Object」。在powershell中(主要討厭gotcha btw)'foreach'是一個「運算符」和一個「別名」。在這個答案中由smeltplate提供的'foreach'是「操作符」而不是「別名」。請參閱[這裏。](https://blogs.technet.microsoft.com/heyscriptingguy/2014/07/08/getting-to-know-foreach-and-foreach-object/)注意:這個答案是一個完整的重構代碼,並可能無法適用於許多情況。 – 2017-07-16 00:40:52