Skip to main content

Création de l'arborescence

agdlp.png

Introduction

Comme vu plus tôt dans ce chapitre, il est très long et complexe de mettre en place l'AGDLP car il faut des GDL (Groupe de Domaine Local)
C'est pourquoi j'ai mis en place une série de script, qui permet d'automatiser la création des dossiers, si on part de zéro, mais aussi la création des GDL, la parentalité des GDL, ainsi que l'application des droits sur les répertoires !

Structure et nomenclature

Commençons par définir la structure de notre arborescence dans un petit fichier csv : 
Il y aura trois colonnes : une première pour les chemins absolus des répertoires à créer, les deux autres seront les groupes globaux (GG) respectivement Lecture et Lecture/Ecriture
Pour bien faire, on va toujours définir le chemin absolu de chaque répertoire :
Voici le tableau :

FolderPath GG_RW GG_RO
00-Commun   Tous les utilisateurs
00-Commun\01-Scan Tous les utilisateurs  
00-Commun\02-Sport GG_Sport  
01-RH GG_RH, GG_Direction  
01-RH\01-Paie    
01-RH\01-Paie\01-2025    
01-RH\01-Paie\01-2025\01-Janvier    
01-RH\01-Paie\01-2025\02-Février    
01-RH\01-Paie\01-2025\03-Mars    
01-RH\01-Paie\01-2025\04-Avril    
01-RH\01-Paie\01-2025\05-Mai    
01-RH\02-Formation    
01-RH\03-Carrière    
02-Informatique GG_Informatique Tous les utilisateurs
02-Informatique\01-Procédures   Tous les utilisateurs

Et en vue CSV :

FolderPath;GG_RW;GG_RO
00-Commun;;Tous les utilisateurs
00-Commun\01-Scan;Tous les utilisateurs;
00-Commun\02-Sport;GG_Sport;
01-RH;GG_RH, GG_Direction;
01-RH\01-Paie;;
01-RH\01-Paie\01-2025;;
01-RH\01-Paie\01-2025\01-Janvier;;
01-RH\01-Paie\01-2025\02-Février;;
01-RH\01-Paie\01-2025\03-Mars;;
01-RH\01-Paie\01-2025\04-Avril;;
01-RH\01-Paie\01-2025\05-Mai;;
01-RH\02-Formation;;
01-RH\03-Carrière;;
02-Informatique;GG_Informatique;Tous les utilisateurs
02-Informatique\01-Procédures;;Tous les utilisateurs

Avec cette structure de fichier, et de dossier, il sera plus simple de procéder pour la suite.

J'ai fait le choix, pour des questions de simplicité, de numéroter l'ensemble des répertoire, ce qui permet de choisir l'ordre de ces derniers, et rendra bien plus lisible les GDL, et leur gestion automatisée. Nous verrons cela dans les pages suivantes.

Création des dossiers

La structure du fichier, avec des chemins absolus, permet de faciliter l'écriture du script.
En effet, chaque ligne représentant un chemin absolu donc chaque nom de répertoire est séparé des autres par un "\".
Il suffit alors de créer les dossiers en lisant le fichier comme cela.

Param(
    [string]$CsvPath = "C:\Chemin\vers\fichier.csv",
    [string]$Destination = "C:\Chemin\Destination\Arbo"
)

# Import CSV avec UTF8 et séparateur ;
if (-not (Test-Path $CsvPath)) {
    Write-Error "Le fichier CSV $CsvPath n'existe pas."
    exit
}

$GDLList = Import-Csv -Path $CsvPath -Delimiter ';' -Encoding UTF8

foreach ($row in $GDLList) {
    $ligne = $row.FolderPath.Trim()
    if ($ligne -eq "") { continue }

    # Découper le chemin sur les "\"
    $parts = $ligne.Split('\')

    # Nettoyer les caractères interdits pour Windows
    $safeParts = foreach ($p in $parts) {
        $p -replace '[:*?"<>|]', '_'
    }

    # Créer les dossiers
    $fullPath = $Destination
    foreach ($part in $safeParts) {
        $fullPath = Join-Path $fullPath $part
        if (-not (Test-Path $fullPath)) {
            try {
                New-Item -Path $fullPath -ItemType Directory -Force | Out-Null
                Write-Host "Création : $fullPath"
            }
            catch {
                Write-Warning "Erreur création de $fullPath : $_"
            }
        }
        else {
            Write-Host "Existe déjà : $fullPath"
        }
    }
}

Avec cela, nous avons une arborescence toute neuve et propre (presque, celle-ci n'est évidemment la que pour le test)

image.png