Aller au contenu

Cloner un groupe Active Directory

Le script suivant permet de cloner un groupe Active Directory vers un nouveau groupe.
Il peut aussi ajouter le contenu d'un groupe à un groupe existant.

# Importer le module Active Directory
Import-Module ActiveDirectory

# Demander le nom du groupe source à l'utilisateur
$sourceGroupName = Read-Host "Entrez le nom du groupe source Active Directory"

# Vérifier si le groupe source existe
if (-not (Get-ADGroup -Filter {Name -eq $sourceGroupName})) {
 Write-Host "Le groupe source '$sourceGroupName' n'existe pas."
 exit
}

# Demander le nom du groupe cible à l'utilisateur
$targetGroupName = Read-Host "Entrez le nom du groupe cible"

# Vérifier si le groupe cible existe
if (-not (Get-ADGroup -Filter {Name -eq $targetGroupName})) {
 Write-Host "Le groupe cible '$targetGroupName' n'existe pas."

 # Demander à l'utilisateur s'il souhaite créer le groupe cible
 $createGroup = Read-Host "Voulez-vous créer le groupe cible '$targetGroupName' ? (O/N)" 
 if ($createGroup -eq "O" -or $createGroup -eq "o") {

 # Demander à l'utilisateur de confirmer ou de saisir une autre OU
 $ouPath = "OU=Utilisateurs,DC=domain,DC=com0"
 $confirmOU = Read-Host "L'OU par défaut est '$ouPath'. Voulez-vous utiliser cette OU ? (O/N)"

 if ($confirmOU -eq "N" -or $confirmOU -eq "n") {
 $ouPath = Read-Host "Entrez le chemin complet de l'OU à utiliser (ex: 'OU=Utilisateurs,DC=in,DC=ama,DC=bzh')"
 }

 # Créer le groupe cible
 New-ADGroup -Name $targetGroupName -GroupScope DomainLocal -Path $ouPath
 Write-Host "Le groupe cible '$targetGroupName' a été créé avec succès dans $ouPath."
 } else {
 Write-Host "Opération annulée. Le groupe cible n'a pas été créé."
 exit
 }
}

# Obtenir les membres du groupe source
$sourceGroupMembers = Get-ADGroupMember -Identity $sourceGroupName

# Ajouter les membres au groupe cible
foreach ($member in $sourceGroupMembers) {
Add-ADGroupMember -Identity $targetGroupName -Members $member
}
Write-Host "Les membres du groupe source ont été ajoutés au groupe cible '$targetGroupName'."

# Afficher les membres du groupe cible
Write-Host "Voici les membres du groupe $targetGroupName :"
$targetGroupMembers = Get-ADGroupMember -Identity $targetGroupName
foreach ($member in $targetGroupMembers) {
Write-Host $member.Name
}