Appuyer sur "Entrée" pour passer au contenu

Comment utiliser le Splatting

Thomas ILLIET 2

Le splatting est une méthode de transmission de plusieurs paramètres à une commande en une seule unité. Cela se fait en stockant les paramètres et leurs valeurs en tant que paires clé-valeur dans une table de hachage et en les répartissant dans une applet de commande à l’aide de l’opérateur de répartition @

En effet, certaines commandes ont un nombre assez important de paramètres obligatoires et cela peut rapidement devenir illisible, malgré l’utilisation du caractère ` ([Alt Gr]+7).

Exemple

Vous trouverez ci-dessous deux exemples à ne pas reproduire dans vos scripts PowerShell, car cela peut en rendre difficile leur lecture et modification.

New-ADGroup -Name 'gg_Artistes' -Path 'OU=Groups,DC=PDZ,DC=lab' -GroupCategory 'Security' -GroupScope 'Global'
New-ADGroup -Name 'gg_Artistes' `
    -Path 'OU=Groups,DC=PDZ,DC=lab' `
    -GroupCategory 'Security' `
    -GroupScope 'Global'

Voici ce que donne la même commande quand on utilise le splatting

$splats = @{
    Name           = 'gg_Artistes' 
    Path           = 'OU=Groups,DC=PDZ,DC=lab'
    GroupCategory  = 'Security'
    GroupScope     = 'Global'
}
New-ADGroup @splats

Dans un autre cas, il n’est pas rare de devoir réutiliser une commande plusieurs fois avec les mêmes paramètres. D’ordinaire, on définit les paramètres un à un. Le bon réflexe est de centraliser les valeurs dans des variables, puis de les assigner aux paramètres de chaque commande avec de légères variations.

$splats = @{
    Path           = 'OU=Groups,DC=PDZ,DC=lab'
    GroupCategory  = 'Security'
    GroupScope     = 'Global'
}

New-ADGroup -Name 'gg_Artistes' @splats
New-ADGroup -Name 'gg_Auteurs' @splats
New-ADGroup -Name 'gl_Direction' @splats

Conclusion

Le splatting prend beaucoup de place, c’est pourquoi il est recommandé de l’utiliser avec un minimum de 4 paramètres.

N’hésitez pas à user et abuser de cette astuce sur l’ensemble de vos développements afin d’améliorer significativement la lisibilité et la réutilisabilité de votre travail.

Notable Replies

  1. Bonjour,

    J’ai découvert cette méthode lors de l’écriture d’un script où j’avais une commande (la creation d’une tache planifiée avec tout les paramètres) qui devenait totalement illisible !
    Ca change la vie, enfin le code surtout :slight_smile:

  2. Comme précisé dans le document ‘about’, le splatting s’applique aussi au type Array. Je ne l’ai jamais utilisé dans un script mais en ligne de commande, cela peut être utile.

    $splat = 'Get-Help', 'Microsoft.PowerShell.Core'
    get-command @splat
    

    Un détail que la documentation ne précise pas, c’est qu’on peut utiliser plusieurs ‘splat’ sur la même commande :

    $splat1 = @{ Name = 'Get-Help' }
    $splat2 = @{ Module = 'Microsoft.PowerShell.Core' }
    Get-Command @splat1 @splat2
    

Continue the discussion at community.powershell-du-zero.fr

Participants