Script – Suppression groupe AD

Un certain nombre de contrôle sont fait pour éviter les erreurs.

Voici le processus de suppression choisit :

  1. Saisie des groupes dans un forms PowerShell.
  1. Demande de confirmation de la suppression.
  1. Vérification de l’existence du groupe dans les différents AD.
  1. Vérification de la présence du/des groupe(s) dans l’OU d’archive.

Si le groupe n’est pas dans l’OU archive, il ne sera pas traité et une désactivation du groupe sera demandée au préalable. (cette action se fait via le script de désactivation vu plus haut)

  1. Suppression du/des groupe(s) (Si les critères précédents sont remplis)
  1. Log de l’opération dans le fichier C:\admin\Backup_GRP\DELETE-GRP-LOG.txt

Le log contient également le nom du compte ayant procédé à la suppression.


#######################################################################################################
#
# Script de Suppression des groupes AD
#
# Auteur : Romain LETOT - Administrateur Systèmes & réseaux
# Date de Création : 04/01/2024
#
# Objet : Ce script permet de supprimer définitivement un groupe de l'AD
#
# Modifications : 
#
#
#######################################################################################################

$CURRENTUSER = $Env:UserName


#Gestion des logs
$PATHLOGS = "C:\admin\Backup_GRP\DELETE-GRP-LOG.txt"
function logmsg($msg) {
    $DATE = Get-Date -Format "dd-MM-yyyy_HH-mm-ss"
    write-output "[$DATE] $msg" >> $PATHLOGS
    write-host $msg
}

#Fenêtre de saisie des groupes à traiter
add-type -assembly System.Windows.Forms
    $form=New-Object System.Windows.Forms.Form
    $form.StartPosition='CenterScreen'
    $btn=New-Object System.Windows.Forms.Button
    $btn.Text='OK'
    $btn.DialogResult='Ok'
    $btn.Dock='bottom'
    $form.Controls.Add($btn)
    $btnCancel=New-Object System.Windows.Forms.Button
    $btnCAncel.Text='Annuler'
    $btnCancel.DialogResult='Cancel'
    $btnCancel.Dock='bottom'
    $form.Controls.Add($btnCancel)
    $tb=New-Object System.Windows.Forms.Textbox
    $tb.Multiline=$true
    $tb.Dock='Fill'
    $form.Controls.Add($tb)
    $form.add_load({$tb.Select()})
        
        if($form.ShowDialog() -eq 'Ok'){
            $tb.lines
        }else{
            Write-Host 'Annulation de la tâche' -ForegroundColor Red
           }

#Vérification si la saisie est vide 
if ([string]::IsNullOrEmpty($tb.lines)) {
    Write-Host "Erreur : Aucune donnée n'a été saisie" -ForegroundColor Red
    Exit
    }

Else {

    [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") | Out-Null

    $reponse = [System.Windows.Forms.MessageBox]::Show("Vous allez procéder à une suppression de groupes définitive, êtes vous sur de vouloir continuer ?", "Avertissement" , 4, 48)

    if ($reponse -eq "No") {
        Exit
    }

    Else {
        
        Foreach($GROUP in $tb.lines){


            logmsg ("Traitement du groupe $GROUP - Intervenant : $CURRENTUSER")



        Try {

            Get-ADGroup -identity $GROUP -ErrorAction Stop | Out-Null
            logmsg ("Le groupe $GROUP existe dans le domaine.")

            $OUACTUELLE = Get-ADGroup $GROUP | Select-Object DistinguishedName

            if ($OUACTUELLE -notlike "@{DistinguishedName=CN=$GROUP,OU=Groupes,OU=Archives,DC=senumerique,DC=local}") {
                logmsg ("Le groupe ne se trouve pas dans l'OU Archive. Merci d'effectuer une désactivation du groupe au préalable.")    
            }

            Else {

                Try {
                    Remove-ADGroup -Identity "$GROUP" -Confirm:$false -ErrorAction Stop
                    logmsg ("Le groupe a été supprimé de l'AD.")
                }

                Catch {
                    logmsg ("Une erreur s'est produite, le groupe n'a pas pu être supprimé du domaine.")
                }
            }
        }

        Catch {

            logmsg ("Le groupe $GROUP n'existe pas dans le domaine.")

        }


    }
}

    Write-Host "`n`nAppuyez sur [ENTREE] pour fermer" -nonewline ; Read-Host
}

Laisser un commentaire

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