Ç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