PI Services

Le blog des collaborateurs de PI Services

PowerShell - Les bienfaits du splatting

Ça pique les yeux

 

Vous avez peut être déjà eu recours à la commande (cmdlet) suivante pour créér un compte dans l'Active Directory (AD) :

New-ADUser -Name $Name -samAccountName $samAccountName -userPrincipalName $UserPrincipalName -Path $Path -AccountPassword $AccountPassword -DisplayName $DisplayName -GivenName $GivenName -sn $sn -Description $Description -Server $Server -ChangePasswordAtLogon -Enabled

 

Oui ca fait mal aux yeux, mais pourquoi ne pas utiliser le caractère backtick ` qui permet de scinder une cmdlet sur plusieurs lignes ?

New-ADUser -Name $Name -samAccountName $samAccountName 
` -userPrincipalName $UserPrincipalName
` -Path $Path -AccountPassword $AccountPassword 
` -DisplayName $DisplayName -GivenName $GivenName -sn $sn
` -Description $Description -Server $Server
` -ChangePasswordAtLogon -Enabled

 

Effectivement, c'est mieux, mais cela n'est toujours pas très esthétique, peut-on faire encore mieux ?

 

Le splatting

 

Le splatting permet de passer à une cmdlet un hash table (tableau associatif), array (tableau) ou une liste d'arguments qui va contenir la liste des paramètres voulus

$parameters = @{ #Ceci est un hash table qui va associer à gauche du signe égal le nom du paramètre avec à droite la valeur du dit paramètre
    Name = $Name
    samAccountName = $samAccountName
    userPrincipalName = $userPrincipalName
    Path = $Path 
    AccountPassword = $AccountPassword 
    DisplayName = $DisplayName
    GivenName = $GivenName
    sn = $sn
    Description = $Description
    Server = $Server
    ChangePasswordAtLogon = $true
    Enabled = $true
}

New-ADUser @parameters #Pour utiliser le splatting il faut passer en paramètre le hash table à l'aide du caractère @ et non $

 

En plus de rendre le code plus lisible, les méthodes associées aux hash table sont désormais accessibles, si par exemple on veut ajouter ou retirer des éléments plus loin dans le code :

 

$parameters.add('employeeID', $EmployeeID) #Ajout du paramètre à gauche du signe , employeeID et à droite la valeur du dit paramètre dans le hashtable $parameters 
$parameters.remove('ChangePasswordAtLogon') #Suppression du paramètre ChangePasswordAtLogon du hash table $parameters

 

Pour aller plus loin

 

Documentation officielle de Microsoft sur le splatting

Ajouter un commentaire

Loading