Skip to main content

Hiérarchie des GDL

agdlp.png

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
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

Ici, il faut que le GDL "01 - RH\01 - Paie\2025\Janvier" qui est lecture écriture donc "GDL_01-01-01-01_RW" soit membre de "01 - RH\01 - Paie\2025" lecture donc "GDL_01-01-01_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.
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\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 ($gdl in $GDLList) {
    $childRO = $gdl.GDL_RO
    $childRW = $gdl.GDL_RW
    $parentRO = $gdl.Parent_GDL

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

    # Vérifier que le parent existe dans AD
    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 GDL_RO '$parentRO' 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 !