# --- CONFIGURATION ---
$DomainName = "kiwicloud.local"
$GPOName = "GPO_ABCommerce_DossiersPersonnels"
# Chemin récupéré de votre capture d'écran
$RootShare = "\\kiwicloud.local\Partage\ABC\Utilisateurs"
# Chemin LDAP de l'OU (basé sur votre structure ABCommerce)
$TargetOU = "OU=Utilisateurs,OU=ABCommerce,DC=kiwicloud,DC=local"
Import-Module ActiveDirectory
Import-Module GroupPolicy
Write-Host "--- Démarrage de la configuration DFS/GPO ---" -ForegroundColor Cyan
# 1. Vérification / Création de la GPO
$GPO = Get-GPO -Name $GPOName -ErrorAction SilentlyContinue
if ($GPO) {
Write-Host "La GPO '$GPOName' existe déjà." -ForegroundColor Yellow
} else {
Write-Host "Création de la GPO '$GPOName'..." -ForegroundColor Green
$GPO = New-GPO -Name $GPOName -Comment "GPO créée par script pour les dossiers personnels"
}
# 2. Liaison de la GPO à l'OU
$Link = Get-GPLink -Target $TargetOU -ErrorAction SilentlyContinue | Where-Object {$_.DisplayName -eq $GPOName}
if ($Link) {
Write-Host "La GPO est déjà liée à l'OU." -ForegroundColor Yellow
} else {
Write-Host "Liaison de la GPO à l'OU $TargetOU..." -ForegroundColor Green
New-GPLink -Name $GPOName -Target $TargetOU -LinkEnabled Yes | Out-Null
}
# 3. Configuration du Lecteur Réseau P: (Méthode Registre pour la GPO)
# Cela va monter P: vers \\kiwicloud.local\Partage\ABC\Utilisateurs\%USERNAME%
Write-Host "Configuration du lecteur P: dans la GPO..." -ForegroundColor Green
# Clé pour mapper le lecteur P:
$KeyPath = "HKCU\Network\P"
Set-GPRegistryValue -Name $GPOName -Key $KeyPath -ValueName "RemotePath" -Type String -Value "$RootShare\%USERNAME%"
Set-GPRegistryValue -Name $GPOName -Key $KeyPath -ValueName "ConnectionType" -Type DWord -Value 1
Set-GPRegistryValue -Name $GPOName -Key $KeyPath -ValueName "ProviderName" -Type String -Value "Microsoft Windows Network"
Set-GPRegistryValue -Name $GPOName -Key $KeyPath -ValueName "UserName" -Type String -Value ""
# 4. Sécurisation du dossier racine (CRUCIAL pour la création automatique)
# On s'assure que le dossier physique existe, sinon le script s'arrête (il faut que le partage existe d'abord)
# Note: Ce bloc doit être exécuté sur le serveur de fichier ou il faut que le chemin UNC soit accessible en écriture par l'admin actuel.
try {
if (Test-Path $RootShare) {
Write-Host "Configuration des permissions NTFS sur $RootShare..." -ForegroundColor Green
$Acl = Get-Acl $RootShare
# Désactiver l'héritage pour contrôler finement
$Acl.SetAccessRuleProtection($true, $true)
# Règle : Utilisateurs du domaine peuvent CRÉER des dossiers, mais pas voir ceux des autres
# "Traverse, ListDirectory, CreateDirectories, AppendData, ReadAttributes, ReadExtendedAttributes, ReadPermissions"
$Arg = "Domain Users","ReadAndExecute, CreateDirectories","ContainerInherit, ObjectInherit","None","Allow"
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule $Arg
$Acl.AddAccessRule($AccessRule)
# Règle : Creator Owner a le contrôle total (sur ce qu'il a créé)
$ArgCO = "CREATOR OWNER","FullControl","ContainerInherit, ObjectInherit","InheritOnly","Allow"
$AccessRuleCO = New-Object System.Security.AccessControl.FileSystemAccessRule $ArgCO
$Acl.AddAccessRule($AccessRuleCO)
Set-Acl $RootShare $Acl
Write-Host "Permissions NTFS appliquées avec succès." -ForegroundColor Green
} else {
Write-Host "ATTENTION: Le chemin $RootShare est inaccessible. Vérifiez votre DFS." -ForegroundColor Red
}
} catch {
Write-Host "Erreur lors de la gestion des permissions: $_" -ForegroundColor Red
}
Write-Host "--- Terminé ! ---" -ForegroundColor Cyan
Write-Host "Action requise : Allez dans la console GPO, modifiez '$GPOName' et activez la Redirection de Dossiers (Documents) manuellement vers le chemin racine si nécessaire." -ForegroundColor Yellow