Liaison GG-GDL
Introduction
Il s'agit de la dernière étape pour mettre en place des droits AGDLP, ajout les GG comme membres des GDLP afin que les utilisateurs puissent accéder aux ressources partagées.
Tableau modèle
Introduction
ToujoursNous dans un soucis de simplicité pour l'utilisateur qui remplira ce fichier, nous n'allons pas partir des GDL, mais des chemins absolus dansreprenons une premièrenouvelle colonnes,fois puisnotre dansfichier CSV :
| FolderPath | GG_RW | GG_RO | GDL_RW | GDL_RO | Parent_GDL |
| 00-Commun | Tous les |
GDL_00_RW | GDL_00_RO | |
|
| 00-Commun\01-Scan | Tous |
|
GDL_00-01_RW | GDL_00-01_RO | GDL_00_RO |
| 00-Commun\02-Sport | GG_Sport | GDL_00-02_RW | GDL_00-02_RO | GDL_00_RO | |
| 01-RH | GG_RH, GG_Direction | GDL_01_RW | GDL_01_RO | ||
| 01-RH\01-Paie | GDL_01-01_RW | GDL_01-01_RO | GDL_01_RO | ||
| 01-RH\01-Paie\01-2025 | GDL_01-01-01_RW | GDL_01-01-01_RO | GDL_01-01_RO | ||
| 01-RH\01-Paie\01-2025\01-Janvier | GDL_01-01-01-01_RW | GDL_01-01-01-01_RO | GDL_01-01-01_RO | ||
| 01-RH\01-Paie\01-2025\02-Février | GDL_01-01-01-02_RW | GDL_01-01-01-02_RO | GDL_01-01-01_RO | ||
| 01-RH\01-Paie\01-2025\03-Mars | GDL_01-01-01-03_RW | GDL_01-01-01-03_RO | GDL_01-01-01_RO | ||
| 01-RH\01-Paie\01-2025\04-Avril | GDL_01-01-01-04_RW | GDL_01-01-01-04_RO | GDL_01-01-01_RO | ||
| 01-RH\01-Paie\01-2025\05-Mai | GDL_01-01-01-05_RW | GDL_01-01-01-05_RO | GDL_01-01-01_RO | ||
| 01-RH\02-Formation | GDL_01-02_RW | GDL_01-02_RO | GDL_01_RO | ||
| 01-RH\03-Carrière | GDL_01-03_RW | GDL_01-03_RO | GDL_01_RO | ||
| 02-Informatique | GG_Informatique | Tous les utilisateurs | GDL_02_RW | GDL_02_RO | |
| 02-Informatique\01-Procédures | Tous les utilisateurs | GDL_02-01_RW | GDL_02-01_RO | GDL_02_RO |
Ajouter les GG dans les GDL
Pour cette dernière étape, le script va utiliser les colonnes GG_RW qui va ajouter comme membre du GDL_RW correspondant, idem pour GG_RO avec GDL_RO :
Param(
[string]$CsvPath = "C:\Chemin\vers\fichier.csv"
)
Try { Import-Module ActiveDirectory -ErrorAction Stop } Catch {}
# Import CSV avec UTF8 et séparateur ;
$GDLList = Import-Csv -Path $CsvPath -Delimiter ';' -Encoding UTF8
foreach ($row in $GDLList) {
$gdlRO = $row.GDL_RO
$gdlRW = $row.GDL_RW
# Récupérer les GG de la colonne GG_RO (séparateur ,)
$ggRO = @()
if ($row.GG_RO -and $row.GG_RO.Trim() -ne "") {
$ggRO = $row.GG_RO.Split(',') | ForEach-Object { $_.Trim() } | Where-Object { $_ -ne "" }
}
# Récupérer les GG de la colonne GG_RW (séparateur ,)
$ggRW = @()
if ($row.GG_RW -and $row.GG_RW.Trim() -ne "") {
$ggRW = $row.GG_RW.Split(',') | ForEach-Object { $_.Trim() } | Where-Object { $_ -ne "" }
}
# --- Supprimer uniquement les GG existants du GDL_RO ---
if ($gdlRO) {
$currentMembersRO = Get-ADGroupMember -Identity $gdlRO -ErrorAction SilentlyContinue | Where-Object { $_.objectClass -eq 'group' -and $_.distinguishedName -notlike "CN=GDL_*" }
if ($currentMembersRO) {
Try {
Remove-ADGroupMember -Identity $gdlRO -Members $currentMembersRO -Confirm:$false -ErrorAction Stop
Write-Host "Tous les GG supprimés de $gdlRO"
} Catch {
Write-Warning "Impossible de supprimer certains GG de $gdlRO : $_"
}
}
}
# --- Supprimer uniquement les GG existants du GDL_RW ---
if ($gdlRW) {
$currentMembersRW = Get-ADGroupMember -Identity $gdlRW -ErrorAction SilentlyContinue | Where-Object { $_.objectClass -eq 'group' -and $_.distinguishedName -notlike "CN=GDL_*" }
if ($currentMembersRW) {
Try {
Remove-ADGroupMember -Identity $gdlRW -Members $currentMembersRW -Confirm:$false -ErrorAction Stop
Write-Host "Tous les GG supprimés de $gdlRW"
} Catch {
Write-Warning "Impossible de supprimer certains GG de $gdlRW : $_"
}
}
}
# --- Ajouter les GG_RO au GDL_RO ---
if ($ggRO.Count -gt 0 -and $gdlRO) {
foreach ($member in $ggRO) {
if (Get-ADGroup -Filter "Name -eq '$member'" -ErrorAction SilentlyContinue) {
Try {
Add-ADGroupMember -Identity $gdlRO -Members $member -ErrorAction Stop
Write-Host "Ajout de '$member' dans $gdlRO"
} Catch {
Write-Warning "Impossible d'ajouter '$member' à $gdlRO : $_"
}
} else {
Write-Warning "GG_RO '$member' introuvable dans AD"
}
}
}
# --- Ajouter les GG_RW au GDL_RW ---
if ($ggRW.Count -gt 0 -and $gdlRW) {
foreach ($member in $ggRW) {
if (Get-ADGroup -Filter "Name -eq '$member'" -ErrorAction SilentlyContinue) {
Try {
Add-ADGroupMember -Identity $gdlRW -Members $member -ErrorAction Stop
Write-Host "Ajout de '$member' dans $gdlRW"
} Catch {
Write-Warning "Impossible d'ajouter '$member' à $gdlRW : $_"
}
} else {
Write-Warning "GG_RW '$member' introuvable dans AD"
}
}
}
}
