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.
Introduction
Nous reprenons une nouvelle fois notre fichier CSV :
| FolderPath | GG_RW | GG_RO | GDL_RW | GDL_RO | Parent_GDL |
| 00-Commun | Tous les utilisateurs | GDL_00_RW | GDL_00_RO | ||
| 00-Commun\01-Scan | Tous les utilisateurs | 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"
}
}
}
}

No comments to display
No comments to display