Untitled
TssrNetro
plain_text
9 days ago
4.4 kB
4
Indexable
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8 Import-Module ActiveDirectory $domain = "ComputeSys.lan" $domainPath = "DC=ComputeSys,DC=lan" $siegePath = "OU=SIEGE,$domainPath" $csvPath = "C:\Users\Administrateur\Documents\AD.csv" # Vérification du fichier CSV if (-not (Test-Path $csvPath)) { Write-Host "ERREUR : Fichier $csvPath introuvable." -ForegroundColor Red exit } # Mapping groupe -> OU avec validation $groupToOUMap = @{ "GG-DIRECTION" = "DIRECTION" "GG-SECRETARIAT-DIRECTION" = "DIRECTION" "GG-AVANT-VENTES" = "COMMERCIAUX" # Correction ici "GG-VENTE" = "COMMERCIAUX" # Correction ici "GG-COMPTABILITE" = "COMPTABILITE" "GG-ADMINISTRATEUR" = "ADMINISTRATEUR" "GG-SUPPORT-01" = "SUPPORT-01" "GG-SUPPORT-02" = "SUPPORT-02" } # Création des UOs $requiredOUs = @("DIRECTION", "COMMERCIAUX", "COMPTABILITE", "ADMINISTRATEUR", "SUPPORT-01", "SUPPORT-02", "DL") foreach ($ou in $requiredOUs) { $targetOU = "OU=$ou,$siegePath" if (-not (Get-ADOrganizationalUnit -Filter "Name -eq '$ou'" -SearchBase $siegePath -ErrorAction SilentlyContinue)) { New-ADOrganizationalUnit -Name $ou -Path $siegePath Write-Host "[+] UO créée : $ou" -ForegroundColor Green } else { Write-Host "[ ] UO existe déjà : $ou" -ForegroundColor DarkGray } } # Traitement des utilisateurs Import-Csv -Path $csvPath -Delimiter ";" -Encoding UTF8 | ForEach-Object { try { $entry = $_ Write-Host "`nTraitement de : $($entry.prenom) $($entry.nom)" -ForegroundColor Cyan # Validation groupe if (-not $groupToOUMap.ContainsKey($entry.groupe)) { Write-Host "ERREUR : Groupe '$($entry.groupe)' non valide." -ForegroundColor Red return } # Détermination OU $ouName = $groupToOUMap[$entry.groupe] $targetOU = "OU=$ouName,$siegePath" Write-Host "|-> Groupe cible : $($entry.groupe) dans $ouName" # Création groupe if (-not (Get-ADGroup -Filter "Name -eq '$($entry.groupe)'" -SearchBase $targetOU -ErrorAction SilentlyContinue)) { New-ADGroup -Name $entry.groupe -Path $targetOU -GroupScope Global -GroupCategory Security Write-Host "|-> [+] Groupe créé : $($entry.groupe)" -ForegroundColor Green } else { Write-Host "|-> [ ] Groupe existe déjà : $($entry.groupe)" -ForegroundColor DarkGray } # Génération username $username = ($entry.prenom + "." + $entry.nom).Trim('.') -replace '[^a-zA-Z0-9\.]','' -replace '\.{2,}','.' -replace '^\.|\.$','' $username = $username.ToLower() # Création utilisateur if (-not (Get-ADUser -Filter "SamAccountName -eq '$username'" -ErrorAction SilentlyContinue)) { $userParams = @{ SamAccountName = $username Name = "$($entry.prenom) $($entry.nom)".Trim() GivenName = $entry.prenom Surname = $entry.nom UserPrincipalName = "$username@$domain" AccountPassword = ConvertTo-SecureString "P@ssw0rd123!" -AsPlainText -Force Enabled = $true Path = $targetOU ChangePasswordAtLogon = $true } $newUser = New-ADUser @userParams -PassThru Write-Host "|-> [+] Utilisateur créé : $username" -ForegroundColor Green } else { Write-Host "|-> [ ] Utilisateur existe déjà : $username" -ForegroundColor DarkGray $newUser = Get-ADUser -Filter "SamAccountName -eq '$username'" } # Ajout au groupe if ($newUser) { try { Add-ADGroupMember -Identity $entry.groupe -Members $newUser -ErrorAction Stop Write-Host "|-> [+] Utilisateur ajouté au groupe : $($entry.groupe)" -ForegroundColor Green } catch { Write-Host "|-> ERREUR : Échec de l'ajout au groupe [$($entry.groupe)] pour [$username] : $_" -ForegroundColor Red } } } catch { Write-Host "|-> ERREUR GLOBALE : $_" | Out-File "$env:TEMP\AD_Errors.log" -Append } } Write-Host "`nTraitement terminé. Vérifiez les messages ci-dessus." -ForegroundColor Cyan
Editor is loading...
Leave a Comment