Skip to main content

Liaison GG-GDL

agdlp.pngagdlp.png

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 deuxutilisateurs suivantesGDL_00_RW nousGDL_00_RO aurons alors une dédiéeau00-Commun\01-Scan droitTous lectureles seule,utilisateurs et l'autre auGDL_00-01_RW droitGDL_00-01_RO lecture/écriture.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"
            }
        }
    }
}