Skip to main content

Hiérarchie des GDL

agdlp.png

Introduction

Afin de pouvoir administrer au mieux les droits, il faut une hiérarchie, un exemple avec notre structure de test :

00-Commun
00-Commun\01-Scan
00-Commun\02-Sport
01-RH
01-RH\01-Paie\2025\Janvier
01-RH\01-Paie\2025\Février
01-RH\01-Paie\2025\Mars
01-RH\01-Paie\2025\Avril
01-RH\01-Paie\2025\Mai
01-RH\02-Formation
01-RH\03-Carrière
02-Informatique
02-Informatique\01-Procédures

Ici, il faut que le GDL "01 - RH\01 - Paie\2025\Janvier" qui est lecture écriture donc "GDL_01-01-2025-Janvier_RW" soit membre de "01 - RH\01 - Paie\2025" lecture donc "GDL_01-01-202_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 :

Param(
    [string]$CsvPath = "C:\chemin\vers\GDLMapping.csv"
)

Try { Import-Module ActiveDirectory -ErrorAction Stop } Catch {}

# Import CSV avec UTF8
$GDLList = Import-Csv -Path $CsvPath -Encoding UTF8

foreach ($gdl in $GDLList) {
    $childRO = $gdl.GDLNameRO
    $childRW = $gdl.GDLNameRW
    $parentRO = $gdl.ParentGDLRO

    if ([string]::IsNullOrEmpty($parentRO)) {
        # Pas de parent, on ignore
        continue
    }

    # Vérifier que les groupes existent avant d'ajouter
    if (Get-ADGroup -Filter "Name -eq '$parentRO'" -ErrorAction SilentlyContinue) {
        Try {
            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 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 !