Passer en revue la syntaxe de base pour énumérer des objets dans le pipeline

Effectué

La ForEach-Object commande exécute l’énumération. Il a deux alias courants : ForEach et %. Comme Where-Object, ForEach-Object a une syntaxe simplifiée et une syntaxe scriptblock.

Dans la syntaxe simplifiée, vous pouvez exécuter une méthode unique ou accéder à une propriété unique des objets qui ont été redirigés vers la commande. Voici un exemple :

Get-ChildItem –Path C:\Encrypted\  -File | ForEach-Object  -MemberName Encrypt

Avec cette syntaxe, vous n’incluez pas les parenthèses après le nom du membre si le membre est une méthode. Étant donné que cette syntaxe simplifiée est destinée à être courte, vous le remarquerez fréquemment sans le nom du -MemberName paramètre, et vous pouvez le remarquer avec un alias au lieu du nom de commande complet. Par exemple, les deux commandes suivantes effectuent la même action :

Get-ChildItem –Path C:\Encrypted\ -File | ForEach Encrypt

Get-ChildItem –Path C:\Encrypted\ -File | % Encrypt

Remarque

Il se peut que vous ne rencontriez pas beaucoup de scénarios nécessitant une énumération. Chaque nouveau système d’exploitation et version de PowerShell introduit de nouvelles commandes PowerShell. Les systèmes d’exploitation plus récents introduisent généralement de nouvelles commandes qui effectuent des actions qui ont précédemment requis l’énumération.

Limitations de la syntaxe simplifiée

La syntaxe simplifiée ne peut accéder qu’à une seule propriété ou méthode. Il ne peut pas effectuer de comparaisons logiques qui utilisent -and ou -or; il ne peut pas prendre de décisions ; et il ne peut pas exécuter d’autres commandes ou code. Par exemple, la commande suivante ne s’exécute pas et génère une erreur :

Get-Service | ForEach -MemberName Stop -and -MemberName Close

La syntaxe simplifiée accepte également un paramètre facultatif -ArgumentList pour passer des arguments à des méthodes qui nécessitent une entrée. Par exemple, pour fractionner une chaîne de nom de module à l'aide du caractère . :

"Microsoft.PowerShell.Core" | ForEach-Object -MemberName Split -ArgumentList "."

En utilisant la syntaxe abrégée positionnelle :

"Microsoft.PowerShell.Core" | foreach Split "."