«

»

Fév 02

Powershell : désactiver les comptes ordinateurs AD non connectés depuis 60 jours

Powershell : désactiver les comptes ordinateurs AD non connectés depuis 60 jours
powershell_logo

Ce script a pour objectif de nettoyer la base des ordinateurs Active Directory en désactivant les machines qui ne sont pas connecté à l’Active Directory depuis plus de 60 jours.

A savoir que vous pouvez le modifier pour :

  • Prendre en compte un délais supérieur ou inférieur à 60 jours
  • Supprimer un compte ordinateur au lieu de le désactiver (en remplacent la commande Disable-ADComputer par Remove-ADComputer)
  • Définir des machines qui ne doivent pas être impactées (avec le filtre -and (Name -notlike « SRV* ») indiquant que les machines dont le nom commence par « SRV » ne seront pas pris en compte)

Afin d’utiliser ce code, créez un fichier .ps1 et copiez-collez y le code ci-dessous :

#=================================
# Script de purge des Pc AD +60jrs
# 
# source : www.oameri.com
#=================================
#==== Variables
#=================================
    $DaysInactive = 60 #valeur max des jours
    $Time = (Get-Date).Adddays(-($DaysInactive)) 

    $CSVfile = "c:\script\OLD_Computer_ToDel.csv"

    $iM = 0 # Compteur de machine supprime / reset a 0 en debut de boucle pour le comptage
    $TodayTime = Get-Date -UFormat %d-%m-%Y    
  
    $RapportTxt = 'c:\script\' + $TodayTime + '_log_purge_AD.txt'

#================================= En tete du rapport a generer
    echo "#=================================" > $RapportTxt
    echo "# Report on "$TodayTime >> $RapportTxt
    echo "#=================================" >> $RapportTxt
    echo " Computer desactivated : " >> $RapportTxt
#================================= Recuperation des vieilles machines
    Import-module ActiveDirectory
# Recuperation de toutes les machines AD dont la derniere connexion est inferieur au temps indique et dont le nom ne commence pas par SRV et export en CSV
    $ComputerToDel = Get-ADComputer -Filter {(LastLogonTimeStamp -lt $Time) -and (Name -notlike "SRV*") -Properties Name, LastLogonTimeStamp | export-csv $CSVfile -notypeinformation

#================================= Traitement de l'extract en CSV
    $CSVImport = Import-Csv $CSVfile -Delimiter "," 

    ForEach ($Ordinateur in $CSVImport){ 
      $Name = $($Ordinateur.Name)
    echo $Name >> $RapportTxt
#================================= Desactivation au fil de l'eau
	Disable-ADComputer -identity $Name -Confirm:$false
	  $iM++ # incrementer le compteur 
    }
#================================= Fin du rapport a generer
    echo "#=================================" >> $RapportTxt
    echo $iM "Computer have been Desactivated" >> $RapportTxt
    echo "#=================================" >> $RapportTxt
#================================= Envoi par email du rapport
$MailTo = "destinataire@free.fr"
$MailCC = "copiecarbone@free.fr"
$MailFrom = "Machine desactive de l'AD < expediteur@free.fr >"
$MailSmtp = "smtp.free.fr"

Send-MailMessage -From $MailFrom -To $MailTo -CC $MailCC -Subject "AD - Purge des Workstations" -Body "Voir le fichier de log en PJ" -Attachment $RapportTxt -SmtpServer $MailSmtp
Désactiver comptes ordinateurs

 

Avant de l’utiliser, pensez à modifier les variables du scripts :

  • $DaysInactive :
  • $CSVfile : indiquez-y le nom de votre contrôleur de domaine Active Directory
  • $RapportTxt : indiquez-y le chemin d’accès complet vers votre fichier .txt de sortie

 

Ainsi que les variables des paramètres de mails :

  • $MailTo : adresse email du destinataire
  • $MailCC : adresse email de la copie carbone
  • $MailFrom : adresse email de l’expéditeur
  • $MailSmtp : serveur smtp pour l’envoi

 

 

 

LinkedInFacebookTwitterGoogle+EmailGoogle GmailPartager

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser les balises HTML suivantes : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>