Aller à l'élément suivant dans le ForEach-Object
J'ai un script PowerShell qui n'quelques vérifications sur tous les Admins du Domaine dans un certain nombre de domaines.
Pour chaque compte d'utilisateur un certain nombre de vérifications sont effectuées. Quand l'un d'eux échoue, le script doit aller à la prochaine admin dans la liste.
J'ai actuellement quelque chose comme ceci (simplifié):
Get-QADGroupMember "Domain Admins" | Select-Object SamAccountName | ForEach-Object {
#Do something
if(!ThisCheckIsOK)
{
break;
}
#Do something else
if(ThisCheckIsNotOK)
{
break;
}
...
}
Cela arrête le script en entier. Est-il un moyen pour passer à l'élément suivant?
$foreach.movenext()
ne fonctionne pas depuis $foreach
est null
.
- Peut-être que vous pourriez obtenir de meilleures réponses sur DONC?
- Si elle aurait été un foreach en C++, alors oui. Maintenant, je suis à l'aide d'une applet de commande Powershell et il est clairement sysadmin-stuff.
- Je pense qu'il se situe quelque part entre les deux, mais votre question est génériquement Powershell (Comment faire pour passer à l'élément suivant dans une Powershell boucle), même si les détails sont sys-admin liés. Juste étant donné qu'il y a de ~500 Powershell questions sur SF, et près de la 4k sur DONC il y a probablement certaines des personnes les plus qualifiées pour répondre à la question là-bas. C'est mon avis en tout cas =)
- *Je ne suis pas sûr si le générique est un mot, mais ça sonne bien
- Je vois, merci, je vais essayer de me déplacer.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le
Continue
déclaration de continuer avec le plus intime de la boucle.Extrait de
PowerShell
fichier d'aide:ForEach-Object
instruction pour moi.Return
fonctionne (c'est à dire va à l'objet suivant).return
au lieu decontinue
. Pas très intutitive mais c'est comment il est..ForEach()
prend un script-bloc comme un argument. Une situation analogue existe dans JavaScript.Vous avez juste à remplacer le
break
avec unreturn
déclaration.Pense que le code à l'intérieur de la
Foreach-Object
comme une fonction anonyme. Si vous avez des boucles à l'intérieur de la fonction, il suffit d'utiliser le contrôle de l'application de mots-clés de la construction (continue
,break
, ...).Je sais que c'est un vieux post, mais je voulais ajouter quelque chose que j'ai appris pour la prochaine les gens qui débarquent ici pendant googler.
Dans Powershell 5.1, vous souhaitez utiliser
continue
pour passer à l'élément suivant dans votre boucle. J'ai testé avec 6 éléments dans un tableau, avait unforeach
en boucle, mais mettre une instruction if avec:Des 6 éléments, la 3e a été quelque chose. Comme prévu, il boucle à travers les 2 premiers, puis la correspondance quelque chose m'a donné la ligne rouge où
$i
appariés, j'ai vusomething is bad
et puis il est allé à l'élément suivant dans le tableau sans direshould not see this
. J'ai testé avecreturn
et il est sorti de la boucle complètement.