Mettre a jour le champ email
Aujourd’hui, je vous propose un script powershell assez simple que j’ai du mettre en place pour mettre à jour les champs email des comptes utilisateurs d’un active directory.
Il affiche un choix de menu que l’on peut aisément agrandir et adapter à d’autres traitements. Basé sur QAD et en admettant que vous avez les droits admin (sinon il faut faire un get-credential et le stocker dans une variable, vous pouvez facilement le modifier).
De plus, il vous permet de voir une structure composée de commandes imbriquées telles que do-until-switch-foreach-for assez astucieuse je trouve. Les logs sont générés pour être adapter a la structure mais on pourrait très bien le faire en try-catch pour mettre en place une gestion des erreurs si le script venait a grandir et effectuer d’autres traitements. Vous découvrirez également la notion de $tableau, bref que du bonheur 😀
Cls $log = "result.log" $scriptpath = get-location $date = get-date "*** Debut *** a $date" >> $log $req = get-qaduser -searchroot 'votre domaine ici' -enabled | select samaccountname,mail,givenname,userprincipalname $tableau = @() [Int]$nbr = 0 | Out-Null [Int]$nbr2 = 0 | out-null do { do { Write-Host "" Write-Host "A - Scanner et Ajouter les emails aux utilisateurs du domaine" Write-Host "Q - Quitter" Write-Host "" write-host -nonewline "Entrer votre choix (A/Q) puis entrée : " $choix = read-host write-host "" $ok = @("A","Q") -contains $choix if ( -not $ok) { Write-Host "Choix pas disponible" -fore Red } } until ( $ok ) switch ( $choix ) { "A" { Write-Host "Vous avez choisi 'A'" cls foreach ($user in $req) { write-host "***************" -BackgroundColor black -ForegroundColor White write-host $user.samaccountname if(Get-QADMemberOf $user.samaccountname -Indirect -Name Posh_ID){ # comptes non valide pour creation email write-host "Compte de service trouvés" -foregroundcolor red write-host "MAJ Email IGNOREE... $user" -foregroundcolor red $nbr++ }else{ if($user.mail -eq $null){ # comptes valides on continue write-host "Ce compte n'a pas d'email et va etre mis a jour" -ForegroundColor Yellow set-aduser -identity $user.samaccountname -EmailAddress $user.UserPrincipalName write-host "MAJ Email ... $user" -ForegroundColor Green $nbr2++ "MAJ Email ... $user" >> $log } } $tableau += $user } for ($count = 0; $count -le $tableau.Length; $count++){ $user = $tableau[$count]} #cls Write-host "Il y a $nbr comptes ignores" -ForegroundColor red Write-host "Il y a $nbr2 comptes a modifier" -ForegroundColor Green "Terminé ! Nbre comptes ignores $nbr et nombre comptes modifies $nbr2" >> $log write-host "Terminé voir $scriptpath\$log" -ForegroundColor Green # $tableau >> $log "*** Fin *** a $date" >> $log } "Q" { cls Write-Host "Bye" -fore yellow "Aucun changement effectue $date" >> $log break } } } until ( $choix -eq "Q" )
Bon on va détailler tout ca et le réecrire car il ya eu une conversion malheureuse de plugin wordpress sur la syntaxe du code et vlan, patatra…