Share via


about_Simplified_Syntax

Description courte

Décrit des méthodes de script plus simples et plus simples pour les collections d’objets.

Description longue

La syntaxe simplifiée, introduite dans Windows PowerShell 3.0, vous permet de générer des commandes de filtre sans utiliser de blocs de script. La syntaxe simplifiée ressemble plus étroitement au langage naturel et est principalement utile avec des collections d’objets qui sont redirigés vers des commandes et ou leurs alias correspondants Where-Objectwhere et foreach.ForEach-Object

Vous pouvez utiliser une méthode sur les membres d’une collection (le plus souvent, un tableau) sans faire référence à la variable $_ automatique à l’intérieur d’un bloc de script.

Tenez compte des deux appels suivants :

Syntaxe standard

Get-ChildItem Cert:\LocalMachine\Root |
    Where-Object -FilterScript { $_.FriendlyName -eq 'Verisign' }
Get-ChildItem Cert:\ -Recurse |
    ForEach-Object -FilterScript { $_.GetKeyAlgorithm() }

Remarque

Dans la deuxième commande, la GetKeyAlgorithm méthode est appelée sur chaque objet de la collection. Si l’objet reçu à partir du pipeline n’a pas de GetKeyAlgorithm méthode, la commande génère une erreur.

Syntaxe simplifiée

Sous la syntaxe simplifiée, les opérateurs de comparaison qui travaillent sur les membres d’objets d’une collection sont implémentés en tant que paramètres. En outre, vous pouvez appeler une méthode sur des objets d’une collection sans faire référence à la variable $_ automatique à l’intérieur d’un bloc de script. Comparez les deux appels suivants aux exemples de syntaxe standard :

Get-ChildItem Cert:\LocalMachine\Root |
    Where-Object -Property FriendlyName -EQ 'Verisign'
Get-ChildItem Cert:\ -Recurse |
    ForEach-Object -MemberName GetKeyAlgorithm

Étant donné que les paramètres Property et MemberName sont positionnels, vous pouvez les omettre à partir de la commande. À l’aide d’alias, vous pouvez simplifier davantage les commandes :

dir Cert:\LocalMachine\Root | Where FriendlyName -EQ 'Verisign'
dir Cert:\ -Recurse | ForEach GetKeyAlgorithm

Bien que les deux syntaxes fonctionnent, la syntaxe simplifiée retourne des résultats sans faire référence à la variable $_ automatique à l’intérieur d’un bloc de script. La syntaxe simplifiée lit plus comme une instruction en langage naturel et peut être plus facile à comprendre.

Le nom GetKeyAlgorithm de la méthode est passé en tant qu’argument pour le paramètre MemberName de ForEach-Object. Lorsque vous appelez la méthode à l’aide de la syntaxe simplifiée, la méthode est appelée pour chaque objet dans le pipeline uniquement si cet objet a cette méthode. Par conséquent, vous obtenez les mêmes résultats, mais sans erreurs.

Dans l’exemple suivant, Description est passé au paramètre MemberName de ForEach-Object. La commande affiche la description de chaque objet System.Diagnostics.Process retourné par Get-Process.

Get-Process | foreach Description

Dans cet exemple, le nom GetFiles de la méthode est passé au paramètre MemberName de la ForEach-Object commande. La .* valeur est passée au paramètre ArgumentList . La GetFiles() méthode est appelée avec le paramètre .* de modèle de recherche pour chaque objet System.IO.DirectoryInfo retourné par Get-ChildItem.

Get-ChildItem /home -Directory | foreach GetFiles .*

Voir aussi