# Ce script désactive les comptes utilisateurs si : # 1. Le compte utilisateur ne s'est pas connecté depuis plus de 67 jours (basé sur l'attribut LastLogonTimeStamp), si l'attribut LastLogonTimeStamp n'est pas vide. # 2. LastLogonTimeStamp est vide mais le compte a été créé depuis plus de 67 jours (attribut WhenCreated) # 3. Ne désactive pas les compte qui ont comme valeur dans le champ Description "Compte de service ****" # Ajoute les commandes PowerShell Quest Add-PSSnapin Quest.ActiveRoles.ADManagement # Connexion sur le contrôleur de domaine MSREPORTDC1 Connect-QADService MSREPORTDC1 # Configure Powershell pour afficher au maximum 100000 résultats Set-QADPSSnapinSettings -DefaultSizeLimit 100000 # ================ VARIABLES =========================== $date = Get-Date $datelimit = $date.AddDays(-67) $SCOPESEARCH = "OU=utilisateurs,DC=msreport,DC=intra" # ====================================================== # Génère la liste des comptes à désactiver: $DATABASE = Get-QADuser -enable -SearchRoot $SCOPESEARCH | Where-Object {($_.LastLogonTimestamp -le $datelimit -AND $_.LastLogonTimestamp -ne $null) -OR ($_.whenCreated -le $datelimit -AND $_.LastLogonTimestamp-eq $null)} | Select-Object DN,Description,Name,DisplayName,Email,SamAccountName,LastlogonTimeStamp,whencreated # Génère un fichier résultat en se basant sur la date du jour. $fileresult = "C:\_adm\Disable-account\Comptes-desactives\Comptesdesactives-" + $((get-date).tostring(‘dd-MM-yyyy’))+".csv" #echo $fileresult # Create headears of the report file Echo “DN;Name;DisplayName;SamAccountName;Email;LastLogonTimeStamp (Format FR);WhenCreated (Format FR)” | Out-file -FilePath $fileresult -Encoding ASCII # Generate report, update description field and disable account foreach ($user in $DATABASE) { $newdescription = "" # Analyse et mise à jour du champ description if ($($user.description) -notlike "*Compte de service*") { # Ajoute une nouvelle ligne au fichier résultat if ($user.LastlogonTimeStamp -ne $null) { $UserLastLogonTimeStamp = ($($user.LastlogonTimeStamp).tostring(‘dd-MM-yyyy’)) } $UserWhenCreated = ($($user.whencreated).tostring(‘dd-MM-yyyy’)) echo “$($user.DN);$($user.Name);$($user.DisplayName);$($user.SamAccountName);$($user.Email);$UserLastLogonTimeStamp;$UserWhenCreated” | Out-File -FilePath $fileresult -append # Désactive le compte utilisateur Disable-QADUser -Identity $($user.SamAccountName) if (($($user.description)).length -lt 1024) { $newdescription = "Ce compte a été désactivé le " + $((get-date).tostring(‘DD-MM-yyyy’)) + " par votre administrateur - " + $($user.description) # Modification de la valeur du champ description Set-QAduser -Identity $($user.SamAccountName) -Description $newdescription } else { $newdescription = "Ce compte a été désactivé le " + $((get-date).tostring(‘MM-dd-yyyy’)) + " par votre administrateur." # Modification de la valeur du champ description Set-QAduser -Identity $($user.SamAccountName) -Description $newdescription } } }