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 texte.
Pour bien faire, on va toujours définir le chemin absolu de chaque répertoire :

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

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

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.

# fichier modèle
$modele = "chemin\vers\structure.txt"

# destination dossiers
$partage = "chemin\vers\Partage"

# Lire en UTF-8 (compatible PowerShell 5.1)
$lignes = Get-Content -Path $modele -Encoding UTF8 | Where-Object { $_.Trim().Length -gt 0 }

foreach ($ligne in $lignes) {
    # Découper le chemin sur les "\"
    $parts = $ligne.Trim().Split('\')

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

    # Créer les dossiers
    $fullPath = $partage
    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éé : $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