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 :

      
FolderPathGG_RWGG_ROGDL_RWGDL_ROParent_GDL
00-Commun Tous les utilisateursGDL_00_RWGDL_00_RO 
00-Commun\01-ScanTous les utilisateurs GDL_00-01_RWGDL_00-01_ROGDL_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
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 !