8 juin 2022

Script Powershell Comptes AD Inactifs

Juste un exemple de script permettant de traiter les comptes d’utilisateurs et d’ordinateurs inactifs présents dans l’annuaire Active Directory (AD).

Copiez le script dans Powershell ISE ce sera plus lisible avec les couleurs.

Le script effectuera les actions suivantes :

  • Recherche des comptes d’ordinateurs et d’utilisateurs inactifs depuis 180 jours.
  • Supprimer l’utilisateur de tous les groupes sauf Utilisateurs du domaine.
  • Désactiver le compte d’utilisateur.
  • Déplacer l’objet dans l’UO Utilisateurs / Comptes inactifs (à vous d’adapter).
  • Supprimer le dossier réseau personnel (dans l’exemple on imagine que chaque user a un dossier personnel sur les serveur de fichiers) – (Chemin à adapter).
  • Supprimer l’ordinateur de tous les groupes sauf Ordinateurs du domaine.
  • Désactiver le compte d’ordinateur.
  • Déplacer l’objet dans l’UO Postes_de_Travail / Postes_Inactifs (à vous d’adapter).


  • Attention un utilisateur qui vient d’être créé mais qui n’a pas encore ouvert de session est considéré comme inactif. Il sera donc traité par le script.

 

 

Début du script :

#Script Powershell permettant de changer l’OU des ordinateurs et utilisateurs inactifs, de sortir ces derniers de leurs groupes de sécurité,
#et désactiver tous ces objets.

#On recherche les utilisateurs et ordinateurs non connectés depuis 180 jours, en omettant les users invité et krbtgt (commande Where).
#L’opérateur And permet d’omettre les objets déjà désactivés :

$Login = Search-ADaccount -AccountInactive -Timespan 180 | Where{ $_.DistinguishedName -notmatch « CN=Users » -and ($_.Enabled -eq $true) }

#On crée une boucle pour agir sur chacun des enregistrements :

foreach($User in $Login)
{

#On récupère certains champs dans des variables :
$SamAccountName = $User.SamAccountName
$DistinguishedName = $User.DistinguishedName
$ObjectClass = $User.ObjectClass


#Si l’objet est un utilisateur :

if ($ObjectClass -eq « user »)
{

#On supprime le membre de chacun des ses groupes sauf du groupe Utilisateurs du domaine :

Get-AdPrincipalGroupMembership -Identity $SamAccountName | Where-Object { $_.Name -Ne « Utilisateurs du domaine » } | Remove-AdGroupMember -Members $SamAccountName -Confirm:$false


#On désactive l’utilisateur :

Set-ADUser -Identity $SamAccountName -Enabled:$false -Description « Désactivé le $(Get-Date -Format dd/MM/yyyy) »


#Puis on déplace l’objet dans une OU dédiée aux comptes inactifs :

Move-ADObject -Identity $DistinguishedName -TargetPath « OU=Comptes Inactifs,OU=Utilisateurs,DC=wood,DC=dom »


#Et on supprime son dossier réseau personnel :

Remove-Item D:\Lecteurs_Reseau\$SamAccountName


}

#Si l’objet est un ordinateur :

elseif ($ObjectClass -eq « computer »)

{

#On le supprimes des groupes sauf Ordinateurs du domaine :

Get-AdPrincipalGroupMembership -Identity $SamAccountName | Where-Object { $_.Name -Ne « Ordinateurs du domaine » } | Remove-AdGroupMember -Members $SamAccountName -Confirm:$false


#On désactive l’objet :

Set-ADComputer -Identity $SamAccountName -Enabled:$false -Description « Désactivé le $(Get-Date -Format dd/MM/yyyy) » -ErrorVariable +ClearObject

#Et on le change d’OU :
Move-ADObject -Identity $DistinguishedName -TargetPath « OU=Postes Inactifs,OU=Postes_de_travail,DC=wood,DC=dom » -ErrorVariable ClearObject

}

}

Share

You may also like...

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.