Skip to main content

Hiérarchie des GDL

agdlp.png

Introduction

AfinNous de pouvoir administrer au mieux les droits, il fautreprenons une hiérarchie,nouvelle un exemple avecfois notre structurefichier de testCSV :

       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
FolderPath;GG_RW;GG_RO;GDL_RW;GDL_RO;Parent_GDL
00-CommunCommun;;Tous les utilisateurs;GDL_00_RW;GDL_00_RO;
00-Commun\01-ScanScan;Tous les utilisateurs;;GDL_00-01_RW;GDL_00-01_RO;GDL_00_RO
00-Commun\02-SportSport;GG_Sport;;GDL_00-02_RW;GDL_00-02_RO;GDL_00_RO
01-RHRH;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\2025\Janvier01-2025;;;GDL_01-01-01_RW;GDL_01-01-01_RO;GDL_01-01_RO
01-RH\01-Paie\01-2025\Février01-Janvier;;;GDL_01-01-01-01_RW;GDL_01-01-01-01_RO;GDL_01-01-01_RO
01-RH\01-Paie\01-2025\Mars02-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\Avril03-Mars;;;GDL_01-01-01-03_RW;GDL_01-01-01-03_RO;GDL_01-01-01_RO
01-RH\01-Paie\01-2025\Mai04-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-FormationFormation;;;GDL_01-02_RW;GDL_01-02_RO;GDL_01_RO
01-RH\03-CarrièreCarrière;;;GDL_01-03_RW;GDL_01-03_RO;GDL_01_RO
02-InformatiqueInformatique;GG_Informatique;Tous les utilisateurs;GDL_02_RW;GDL_02_RO;
02-Informatique\01-ProcéduresProcédures;;Tous les utilisateurs;GDL_02-01_RW;GDL_02-01_RO;GDL_02_RO

Ici, il faut que le GDL "01 - RH\01 - Paie\2025\Janvier" qui est lecture écriture donc "GDL_01-01-2025-Janvier_RW01-01_RW" soit membre de "01 - RH\01 - Paie\2025" lecture donc "GDL_01-01-202_RO01_RO", qui lui même sera membre de "GDL_01-01_RO" etc etc

De plus, il faut, au contraire que "GDL_01_RW" par exemple ai des droits récursifs sur l'ensemble des enfants, mais cela sera pour une prochaine partie.

Mise ne place de la hiérarchie

On en vient donc au script qui permet de faire çaça.
Il va simplement lire les colonnes GDL_RW, GDL_RO et Parent_GDL, ce qui lui donnes toutes les infos nécessaires :

Param(
    [string]$CsvPath = "C:\chemin\Chemin\vers\GDLMapping.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 ($gdl in $GDLList) {
    $childRO = $gdl.GDLNameROGDL_RO
    $childRW = $gdl.GDLNameRWGDL_RW
    $parentRO = $gdl.ParentGDLROParent_GDL

    # Si pas de parent, on passe à la ligne suivante
    if ([string]::IsNullOrEmpty($parentRO)) { # Pas de parent, on ignore
        continue }

    # Vérifier que lesle groupesparent existentexiste avantdans d'ajouterAD
    if (Get-ADGroup -Filter "Name -eq '$parentRO'" -ErrorAction SilentlyContinue) {
        Try {
            # Ajouter les enfants au parent
            Add-ADGroupMember -Identity $parentRO -Members $childRO,$childRW -ErrorAction Stop
            Write-Host "$childRO et $childRW ajoutés à $parentRO"
        } Catch {
            Write-Warning "Impossible d'ajouter $childRO/$childRW à $parentRO : $_"
        }
    } else {
        Write-Warning "Parent ROGDL_RO '$parentROparentRO' non trouvé dans l'AD"
    }
}

Avec cela, chaque enfant RO et RW est membre de son parent RO direct.
Prochaine étape appliquer les ACL aux répertoires du partage !