Pour supprimer un utilisateur spécifique de toutes les ACL des dossiers partagés dans un répertoire, ainsi que de tous les groupes auxquels il appartient, sauf le groupe « Utilisateurs du domaine », nous devons effectuer plusieurs étapes distinctes. Voici le script PowerShell complet pour réaliser cette tâche :
- Supprimer l’utilisateur des ACL des dossiers partagés.
- Supprimer l’utilisateur de tous les groupes sauf « Utilisateurs du domaine ».
Voici le script PowerShell :
powershellCopier le code# Définir le répertoire cible
$targetDirectory = "C:\Chemin\Vers\Votre\Répertoire"
# Définir l'utilisateur à supprimer des ACL et des groupes
$userToRemove = "DOMAIN\Utilisateur"
$domain = "DOMAIN"
$userName = "Utilisateur"
# Fonction pour supprimer l'utilisateur des ACL
function Remove-UserFromACL {
param (
[string]$path,
[string]$user
)
$items = Get-ChildItem -Path $path -Recurse
foreach ($item in $items) {
try {
$acl = Get-Acl -Path $item.FullName
$newAclEntries = $acl.Access | Where-Object { $_.IdentityReference -ne $user }
$newAcl = New-Object System.Security.AccessControl.DirectorySecurity
foreach ($aclEntry in $newAclEntries) {
$newAcl.AddAccessRule($aclEntry)
}
Set-Acl -Path $item.FullName -AclObject $newAcl
Write-Host "Supprimé $user des ACL de $($item.FullName)"
} catch {
Write-Host "Erreur lors du traitement de $($item.FullName): $_"
}
}
}
# Fonction pour supprimer l'utilisateur des groupes
function Remove-UserFromGroups {
param (
[string]$domain,
[string]$userName
)
# Obtenir les groupes de l'utilisateur
$userGroups = Get-ADUser -Identity "$domain\$userName" -Property MemberOf | Select-Object -ExpandProperty MemberOf
foreach ($group in $userGroups) {
# Exclure le groupe 'Utilisateurs du domaine'
if ($group -notlike "*Domain Users*") {
try {
Remove-ADGroupMember -Identity $group -Members "$domain\$userName" -Confirm:$false
Write-Host "Supprimé $userName du groupe $group"
} catch {
Write-Host "Erreur lors de la suppression de $userName du groupe $group: $_"
}
}
}
}
# Supprimer l'utilisateur des ACL des dossiers partagés
Remove-UserFromACL -path $targetDirectory -user $userToRemove
# Supprimer l'utilisateur des groupes sauf 'Utilisateurs du domaine'
Remove-UserFromGroups -domain $domain -userName $userName
Explications du script :
- Définir le répertoire cible et l’utilisateur à supprimer :powershellCopier le code
$targetDirectory = "C:\Chemin\Vers\Votre\Répertoire" $userToRemove = "DOMAIN\Utilisateur" $domain = "DOMAIN" $userName = "Utilisateur" - Fonction
Remove-UserFromACL:- Récupère tous les sous-dossiers et fichiers dans le répertoire cible.
- Pour chaque élément, obtient l’ACL et filtre les entrées pour exclure l’utilisateur spécifié.
- Applique la nouvelle ACL à l’élément.
- Fonction
Remove-UserFromGroups:- Récupère les groupes de l’utilisateur.
- Supprime l’utilisateur de chaque groupe, sauf « Utilisateurs du domaine ».
- Appel des fonctions :
- Supprime l’utilisateur des ACL des dossiers partagés.
- Supprime l’utilisateur des groupes sauf « Utilisateurs du domaine ».
Remarques :
- Exécutez ce script avec des privilèges administratifs.
- Testez le script dans un environnement de développement ou de test avant de l’exécuter en production.
- Assurez-vous que le module Active Directory est installé et importé (
Import-Module ActiveDirectory) pour utiliser les cmdletsGet-ADUseretRemove-ADGroupMember.
Ce script devrait vous aider à atteindre vos objectifs de gestion des ACL et des groupes pour l’utilisateur spécifié.
