Dans le billet précédent, j’expliquais la création de groupes ActiveDirectory pour cadrer les flux générés par le Windows Update Delivery Optimization. Afin de faciliter le process de création de groupes et de peuplement de ces groupes, j’ai développé un script Powershell qui, avec un peu d’adaptation, permet d’automatiser tout ce travail.
Ce script va importer un fichier CSV dans un tableau dont toutes les lignes seront traitées pour créer un groupe correspondant, renvoyer le GUID du groupe créé, puis ajouter à ce groupe les stations de travail correspondantes.
Dans cet exemple, le fichier CSV peut se présenter ainsi :
Le fichier CSV en question avec les « colonnes » ID et location qui seront ensuite importées dans un tableau. |
Ensuite, en prenant comme nomenclature <SiteID><Type><No>, qui va donner des noms comme FR01F01 pour le premier desktop parisien ou UK02M03 pour le troisième laptop du site de Glasgow, on peut articuler la requête ActiveDirectory qui va lister les stations correspondantes au site pour ensuite peupler le groupe lié. Le passage d’un paramètre permet de sélectionner – si cela est possible – le type de station que l’on souhaite inclure. Il sera peut-être nécessaire de travailler le contenu de la requête ActiveDirectory afin qu’elle corresponde à la nomenclature de nommage des stations.
function adquery{
param($T)
$adQuery = "Get-ADComputer -filter 'Name -like ""$id$T*""'"
$compList = Invoke-Expression $adQuery
if($?) {
foreach($comp in $compList){
Add-ADGroupMember -Identity $GrpName -Members $comp
}
}
}
$siteList = Import-CSV site.csv
$dn = (Get-ADDomain).DistinguishedName
foreach ($site in $siteList){
$id = $site.ID
$loc = $site.Location
$GrpName = $id+"-WUDO"
New-ADGroup -Name $GrpName -Description "Groupe d'ordinateurs du site $id ($loc)" -GroupScope DomainLocal -GroupCategory Security -Path "OU=Groupes-WUDO,OU=Workstations,$dn"
Write-Host "Groupe $GrpName"
Write-Host (Get-ADGroup $GrpName).ObjectGuid.Guid
adquery("F")
adquery("L")
}