Création des GDL
Introduction
On le redit encore, mais le plus long pour l'AGDLP, c'est la mise en place, d'abord des dossiers, et ensuite des groupes GDL, ce que nous allons voir maintenant !
GDL et OU
Import-Module ActiveDirectory
# Racine des dossiers
$SourcePath = "chemin\vers\Partage"
# OU racine pour créer les OUs
$OUracine = "OU=AGDLP,DC=domain,DC=local"
# On récupère la liste des dossiers, pour créer la même structure dans l'AD, afin d'avoir une meilleure lisibilité en cas de modifs
function Get-OrCreateOU {
param(
[string[]]$OUlist,
[string]$OUbase
)
$currentPath = $OUbase
foreach ($ou in $OUlist) {
$currentPath = "OU=$ou,$currentPath"
if (-not (Get-ADOrganizationalUnit -Filter "Name -eq '$ou'" -SearchBase $currentPath.Substring($currentPath.IndexOf(",")+1) -ErrorAction SilentlyContinue)) {
New-ADOrganizationalUnit -Name $ou -Path $currentPath.Substring($currentPath.IndexOf(",")+1)
Write-Host "OU créée : $ou sous $currentPath"
}
}
return $currentPath
}
# Parcours récursif des dossiers
Get-ChildItem -Path $SourcePath -Recurse -Directory | ForEach-Object {
$fullPath = $_.FullName.Substring($SourcePath.Length).Trim("\")
$parts = $fullPath -split "\\" # découpe en dossiers
if ($parts.Count -gt 0) {
# Pour les groupes : garder uniquement le premier mot de chaque dossier
# Le but est de limite la taille du nom du groupe, d'ou le système de numérotation dans la nomenclature
# sauf pour les dossiers finaux dans le cas présent
$tokens = @()
foreach ($p in $parts) {
$tokens += ($p -split " ")[0]
}
$nomBase = "GDL_" + ($tokens -join "-")
$groupRO = "${nomBase}_RO"
$groupRW = "${nomBase}_RW"
# Pour les OU : garder le nom complet de chaque dossier
# plus facile de retrouver les groupes associés aux repertoires si les OU et l'arborescence sont en miroir
$ouPath = Get-OrCreateOU -OUlist $parts -OUbase $OUracine
# Créer les groupes s’ils n’existent pas
foreach ($grp in @($groupRO, $groupRW)) {
if (-not (Get-ADGroup -Filter "Name -eq '$grp'" -SearchBase $ouPath -ErrorAction SilentlyContinue)) {
New-ADGroup -Name $grp -SamAccountName $grp -GroupScope Global -GroupCategory Security -Path $ouPath
Write-Host "Groupe créé : $grp dans $ouPath"
}
}
}
}
Bien ! A présent nous avons des groupes bien nommés dans des OU bien classées.
Nous allons passer à la mise en place de la hiérarchie des groupes !
No comments to display
No comments to display