Untitled

 avatar
TssrNetro
plain_text
5 days ago
5.0 kB
2
Indexable
# Importer le module Active Directory (ajouté pour s'assurer que les commandes AD fonctionnent)
Import-Module ActiveDirectory

# Chemin du fichier CSV
$csvPath = "C:\Users\Administrateur\Documents\AD.csv"

# Lire le fichier CSV
# Assurez-vous que les en-têtes du CSV sont sans accents (Prenom, Nom, Groupe)
$users = Import-Csv -Path $csvPath -Delimiter ";"

# Utiliser un chemin de domaine cohérent partout
$domainPath = "DC=ComputeSys,DC=lan"

# Création des Unités d'Organisation (OU) avec protection contre les erreurs
try {
    New-ADOrganizationalUnit -Name "ComputeSystem" -Path $domainPath -ErrorAction Stop
    Write-Host "OU ComputeSystem créée avec succès" -ForegroundColor Green
} catch {
    Write-Host "Erreur lors de la création de l'OU ComputeSystem: $_" -ForegroundColor Red
}

# Mettre à jour le chemin de base pour les sous-OUs
$basePath = "OU=ComputeSystem,$domainPath"

# Créer les sous-OUs
try {
    New-ADOrganizationalUnit -Name "Utilisateurs" -Path $basePath -ErrorAction Stop
    New-ADOrganizationalUnit -Name "Groupes" -Path $basePath -ErrorAction Stop
    New-ADOrganizationalUnit -Name "DL" -Path $basePath -ErrorAction Stop
    Write-Host "Sous-OUs créées avec succès" -ForegroundColor Green
} catch {
    Write-Host "Erreur lors de la création des sous-OUs: $_" -ForegroundColor Red
}

# Création des groupes GG dans l'OU Groupes (uniques)
$groupesPath = "OU=Groupes,$basePath"
$groupes = $users | Select-Object -ExpandProperty Groupe | Sort-Object | Get-Unique

foreach ($groupe in $groupes) {
    try {
        New-ADGroup -Name $groupe `
                    -GroupScope Global `
                    -GroupCategory Security `
                    -Path $groupesPath `
                    -ErrorAction Stop
        Write-Host "Groupe $groupe créé avec succès" -ForegroundColor Green
    } catch {
        Write-Host "Erreur lors de la création du groupe $groupe: $_" -ForegroundColor Red
    }
}

# Création des utilisateurs dans l'OU Utilisateurs
$usersPath = "OU=Utilisateurs,$basePath"
foreach ($user in $users) {
    # Utiliser les noms de colonnes sans accents
    $prenom = $user.Prenom  # Assurez-vous que c'est "Prenom" sans accent dans le CSV
    $nom = $user.Nom
    $groupe = $user.Groupe

    try {
        # Créer l'utilisateur dans l'OU Utilisateurs
        New-ADUser -Name "$prenom $nom" `
                   -GivenName $prenom `
                   -Surname $nom `
                   -SamAccountName "$prenom.$nom".ToLower() `
                   -UserPrincipalName "$prenom.$nom@computesys.lan".ToLower() `
                   -Path $usersPath `
                   -Enabled $true `
                   -AccountPassword (ConvertTo-SecureString "Ertyuiop," -AsPlainText -Force) `
                   -ErrorAction Stop
        
        Write-Host "Utilisateur $prenom $nom créé avec succès" -ForegroundColor Green
        
        # Ajouter l'utilisateur au groupe correspondant
        Add-ADGroupMember -Identity $groupe -Members "$prenom.$nom".ToLower() -ErrorAction Stop
        Write-Host "Utilisateur $prenom $nom ajouté au groupe $groupe" -ForegroundColor Green
    } catch {
        Write-Host "Erreur lors de la création/affectation de l'utilisateur $prenom $nom: $_" -ForegroundColor Red
    }
}

# Création des groupes DL dans l'OU DL
$dlPath = "OU=DL,$basePath"
$dlGroups = @(
    "DL-DIRECTION-RW",
    "DL-COMMERCIAUX-RW",
    "DL-COMPTABILITE-R",
    "DL-COMPTABILITE-RW",
    "DL-ADMINISTRATEUR-RW",
    "DL-SUPPORT-02-R",
    "DL-SUPPORT-02-RW",
    "DL-SUPPORT-01-RW"
)

foreach ($dl in $dlGroups) {
    try {
        New-ADGroup -Name $dl `
                    -GroupScope DomainLocal `
                    -GroupCategory Security `
                    -Path $dlPath `
                    -ErrorAction Stop
        Write-Host "Groupe DL $dl créé avec succès" -ForegroundColor Green
    } catch {
        Write-Host "Erreur lors de la création du groupe DL $dl: $_" -ForegroundColor Red
    }
}

# Association des groupes GG aux groupes DL correspondants
$mapping = @{
    "GG-DIRECTION"          = @("DL-DIRECTION-RW")
    "GG-COMPTABILITE"       = @("DL-COMPTABILITE-R", "DL-COMPTABILITE-RW")
    "GG-SUPPORT-01"         = @("DL-SUPPORT-01-RW")
    "GG-SUPPORT-02"         = @("DL-SUPPORT-02-R", "DL-SUPPORT-02-RW")
    "GG-ADMINISTRATEUR"     = @("DL-ADMINISTRATEUR-RW")
}

foreach ($gg in $mapping.Keys) {
    foreach ($dl in $mapping[$gg]) {
        try {
            $members = Get-ADGroupMember -Identity $gg -ErrorAction Stop
            if ($members) {
                Add-ADGroupMember -Identity $dl -Members $members -ErrorAction Stop
                Write-Host "Membres du groupe $gg ajoutés au groupe $dl" -ForegroundColor Green
            } else {
                Write-Host "Le groupe $gg ne contient aucun membre" -ForegroundColor Yellow
            }
        } catch {
            Write-Host "Erreur lors de l'ajout des membres du groupe $gg au groupe $dl: $_" -ForegroundColor Red
        }
    }
}
Editor is loading...
Leave a Comment