Pourquoi ‘continue’ se comporte-t-il comme ‘break’ dans un Foreach-Object ?
Utilisez simplement return au lieu de continue. Ce return sort du bloc de script qui est invoque par ForEach-Object a une iteration donnee, simulant ainsi le continue dans une boucle.
1..100 | ForEach-Object {
if ($_ % 7 -ne 0 ) { return }
Write-Host "$($_) est un multiple de 7"
}
Il y a un piege a garder a l’esprit lors du refactoring. Parfois, vous souhaitez convertir un bloc d’instruction foreach en un pipeline avec la cmdlet ForEach-Object (elle a meme l’alias foreach qui facilite cette conversion et rend les erreurs faciles aussi). Tous les continue doivent etre remplaces par return.
P.S. : Malheureusement, il n’est pas aussi facile de simuler break dans ForEach-Object.