powershell

powershell foreach vs foreach object



Ir al siguiente elemento en ForEach-Object (2)

Tengo una secuencia de comandos de PowerShell que realiza algunas comprobaciones en todos los administradores de dominio en varios dominios. Para cada cuenta de usuario se realizan varios controles. Cuando uno de ellos falla, el script debe ir al siguiente administrador en la lista.

Actualmente tengo algo como esto (simplificado):

Get-QADGroupMember "Domain Admins" | Select-Object SamAccountName | ForEach-Object { #Do something if(!ThisCheckIsOK) { break; } #Do something else if(ThisCheckIsNotOK) { break; } ... }

Esto detiene todo el script. ¿Hay alguna manera de ir al siguiente elemento?

$foreach.movenext() no funciona ya que $foreach es null .


Es posible que desee utilizar la instrucción Continue para continuar con el bucle más interno.

Extracto del archivo de ayuda de PowerShell :

En una secuencia de comandos, la instrucción continue hace que el flujo del programa se mueva inmediatamente a la parte superior del bucle más interno controlado por cualquiera de estas declaraciones:

  • for
  • foreach
  • while

Sólo tienes que reemplazar la break con una declaración de return .

Piense en el código dentro del Foreach-Object como una función anónima. Si tiene bucles dentro de la función, solo use las palabras clave de control que se aplican a la construcción ( continue , break , ...).