vendredi 29 avril 2022

POWERSHELL - ordinateurs inactifs - Liste et suppression de l'active Directory et des enregistrements DNS

#Domaine de l'active directory qui sera parcouru

$Domaine=(Get-WmiObject Win32_ComputerSystem).Domain


#Nombre de jours d'inactivé servant pour la suppression des ordinateurs

$DaysInactive = 200


#Nom du Fichier de sortie pour la liste des ordinateurs Inactifs

$FicInactiveComputers = "c:\temp\$($CDate)_$($Domaine)_InactiveComputers.txt"


#Nom du Fichier de sortie pour les DNS invalides

$FicInvalidDNS = "c:\temp\$($CDate)_$($Domaine)_DnsRecord.txt"


#Date

$CDate = Get-Date -format "yyyyMMdd"


$time = (Get-Date).Adddays(-($DaysInactive))


$InactiveComputers = Get-ADComputer -Filter {LastLogonTimeStamp -lt $time} -Properties Name, OperatingSystem, SamAccountName, DistinguishedName, LastLogonDate | Format-Table -Property Name,DistinguishedName, LastLogonDate 


#Liste des ordinateurs supprimés 


$InactiveComputers > $FicInactiveComputers


#Suppression des ordinateurs dans l'AD


Get-ADComputer -Filter {LastLogonTimeStamp -lt $time} | Set-ADObject -ProtectedFromAccidentalDeletion:$false


Get-ADComputer -Filter {LastLogonTimeStamp -lt $time} | Remove-ADObject -Recursive 


Get-ADComputer -Filter {LastLogonTimeStamp -lt $time} | Remove-ADComputer 



$InactiveList = Get-Content $FicInactiveComputers


$dnsrecords = Get-DnsServerResourceRecord -ZoneName $Domaine




foreach($ligne in $InactiveList){


    $CarReference = $ligne.IndexOf(" ")

    


   if ($CarReference  -ne -1 ) {

        $Colonne = $ligne.substring(0,$CarReference)

    }



         


    $deadDC = $dnsrecords | Where-Object {$_.HostName -eq $colonne}

    


    #Suppression des entrées DNS


    Remove-DnsServerResourceRecord -ZoneName $Domaine -RRType "A" -name $colonne


    #Liste des entrées DNS supprimées


    $out=$deadDC | Out-File -FilePath $FicInvalidDNS -Append


      


}