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 :

suivantesnousauronsunedédiéeaudroitetaudroitlecture/écriture.

FolderPathGG_RWGG_ROGDL_RWGDL_ROParent_GDL
00-Commun Tous les deuxutilisateurs GDL_00_RW GDL_00_RO  alors
00-Commun\01-Scan Tous lectureles seule,utilisateurs  l'autre GDL_00-01_RW GDL_00-01_RO GDL_00_RO
00-Commun\02-SportGG_Sport GDL_00-02_RWGDL_00-02_ROGDL_00_RO
01-RHGG_RH, GG_Direction GDL_01_RWGDL_01_RO 
01-RH\01-Paie  GDL_01-01_RWGDL_01-01_ROGDL_01_RO
01-RH\01-Paie\01-2025  GDL_01-01-01_RWGDL_01-01-01_ROGDL_01-01_RO
01-RH\01-Paie\01-2025\01-Janvier  GDL_01-01-01-01_RWGDL_01-01-01-01_ROGDL_01-01-01_RO
01-RH\01-Paie\01-2025\02-Février  GDL_01-01-01-02_RWGDL_01-01-01-02_ROGDL_01-01-01_RO
01-RH\01-Paie\01-2025\03-Mars  GDL_01-01-01-03_RWGDL_01-01-01-03_ROGDL_01-01-01_RO
01-RH\01-Paie\01-2025\04-Avril  GDL_01-01-01-04_RWGDL_01-01-01-04_ROGDL_01-01-01_RO
01-RH\01-Paie\01-2025\05-Mai  GDL_01-01-01-05_RWGDL_01-01-01-05_ROGDL_01-01-01_RO
01-RH\02-Formation  GDL_01-02_RWGDL_01-02_ROGDL_01_RO
01-RH\03-Carrière  GDL_01-03_RWGDL_01-03_ROGDL_01_RO
02-InformatiqueGG_InformatiqueTous les utilisateursGDL_02_RWGDL_02_RO 
02-Informatique\01-Procédures Tous les utilisateursGDL_02-01_RWGDL_02-01_ROGDL_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"
            }
        }
    }
}