Tengo el siguiente código:Cómo salir de ParaCada a objetos con PowerShell
$project.PropertyGroup | Foreach {
if($_.GetAttribute('Condition').Trim() -eq $propertyGroupConditionName.Trim()) {
$a = $project.RemoveChild($_);
Write-Host $_.GetAttribute('Condition')"has been removed.";
}
};
Pregunta # 1: ¿Cómo se sale de ParaCada? Intenté usar "break" y "continue", pero no funciona.
Pregunta # 2: Encontré que puedo alterar la lista dentro de un bucle foreach
... No podemos hacerlo así en C# ... ¿Por qué PowerShell nos permite hacer eso?
Creo que quisiste agregar una línea como '$ a = 1..23;' en tu ciclo para mostrar que los cambios no se reflejan en la ejecución del ciclo medio. – ruffin
El elemento n.º 2 es incorrecto (al menos con v5 con una matriz de tamaño fijo). Puede modificar la matriz y hacerla visible dentro de la construcción 'ForEach'. Si tuviera que agregar '$ a [1] = 9' dentro del constructo' ForEach', se mostrará 9 como el 2º elemento, pero no puede agregar/eliminar elementos de la matriz y cualquier cosa que agregue usando el '+ = 'el operador no se mostrará hasta el final. Si no es una matriz de tamaño fijo (es decir, '$ a = [System.Collections.ArrayList] @ (1,2,3)'), cualquier intento de modificar el contenido provocará que 'Collection se haya modificado; la operación de enumeración no puede ejecutar el error., terminando el ciclo. – Adrian
Esta es una respuesta completamente incorrecta. La pregunta es con respecto a 'Foreach-Object'. En powershell (muy molesto gotcha btw) 'foreach' es un" operador "y un" alias ". 'foreach' provisto en esta respuesta por smeltplate es el" operador "y no el" alias ". Ver [aquí.] (Https://blogs.technet.microsoft.com/heyscriptingguy/2014/07/08/getting-to-know-foreach-and-foreach-object/) Nota: esta respuesta es una refactorización completa de código y puede no funcionar en muchas situaciones. –