Untitled

 avatar
unknown
plain_text
23 days ago
4.2 kB
2
Indexable
# Démarrer la journalisation
$logPath = "C:\Logs\CreationUtilisateurs.log"
Start-Transcript -Path $logPath

# Chemin du fichier CSV
$CSVFile = "C:\Users\chris\Downloads\Utilisateurs.csv"
$CSVData = Import-CSV -Path $CSVFile -Delimiter ";" -Encoding UTF8

# Vérifier si l'OU principale (Siège) existe
$MainOUPath = "OU=Siège,DC=horizon,DC=local"

if (-not (Get-ADOrganizationalUnit -Filter "DistinguishedName -eq '$MainOUPath'" -ErrorAction SilentlyContinue)) {
    # Si l'OU principale n'existe pas, on la crée
    try {
        New-ADOrganizationalUnit -Name "Siège" -Path "DC=horizon,DC=local"
        Write-Output "Création de l'OU principale : Siège"
        Write-Output "Création de l'OU principale : Siège" | Out-File -Append $logPath
    }
    catch {
        Write-Error "Erreur lors de la création de l'OU principale Siège. $_"
        Write-Error "Erreur lors de la création de l'OU principale Siège. $_" | Out-File -Append $logPath
        continue
    }
}

# Traitement de chaque utilisateur
Foreach($Utilisateur in $CSVData){
    $UtilisateurPrenom = $Utilisateur.Prenom
    $UtilisateurNom = $Utilisateur.Nom
    $UtilisateurLogin = $UtilisateurPrenom + "." + $UtilisateurNom
    $UtilisateurMotDePasse = "Ertyuiop,"  # Mot de passe par défaut
    $UtilisateurOU = $Utilisateur.OU

    # Créer le chemin de l'OU en fonction de la colonne OU dans le CSV sous l'OU principale Siège
    $OUPath = "OU=$UtilisateurOU,OU=Siège,DC=horizon,DC=local"

    # Vérifier si l'OU spécifique existe déjà
    if (-not (Get-ADOrganizationalUnit -Filter "DistinguishedName -eq '$OUPath'" -ErrorAction SilentlyContinue)) {
        # Si l'OU spécifique n'existe pas, on la crée sous l'OU principale
        try {
            New-ADOrganizationalUnit -Name $UtilisateurOU -Path "OU=Siège,DC=horizon,DC=local"
            Write-Output "Création de l'OU : $UtilisateurOU sous l'OU principale Siège"
            Write-Output "Création de l'OU : $UtilisateurOU sous l'OU principale Siège" | Out-File -Append $logPath
        }
        catch {
            Write-Error "Erreur lors de la création de l'OU : $UtilisateurOU sous l'OU principale Siège. $_"
            Write-Error "Erreur lors de la création de l'OU : $UtilisateurOU sous l'OU principale Siège. $_" | Out-File -Append $logPath
            continue
        }
    }

    # Vérifier si l'utilisateur existe déjà dans l'AD
    if (Get-ADUser -Filter {SamAccountName -eq $UtilisateurLogin}) {
        Write-Warning "L'utilisateur $UtilisateurLogin existe déjà dans l'AD"
        Write-Warning "L'utilisateur $UtilisateurLogin existe déjà dans l'AD" | Out-File -Append $logPath
    }
    else {
        # Création de l'utilisateur dans l'OU spécifique sous l'OU principale
        try {
            New-ADUser -Name "$UtilisateurNom $UtilisateurPrenom" `
                        -DisplayName "$UtilisateurNom $UtilisateurPrenom" `
                        -GivenName $UtilisateurPrenom `
                        -Surname $UtilisateurNom `
                        -SamAccountName $UtilisateurLogin `
                        -UserPrincipalName "$UtilisateurLogin@horizon.local" `
                        -AccountPassword (ConvertTo-SecureString $UtilisateurMotDePasse -AsPlainText -Force) `
                        -ChangePasswordAtLogon $true `
                        -Enabled $true `
                        -Path $OUPath
            Write-Output "Création de l'utilisateur : $UtilisateurLogin ($UtilisateurNom $UtilisateurPrenom) dans l'OU : $UtilisateurOU sous l'OU principale Siège"
            Write-Output "Création de l'utilisateur : $UtilisateurLogin ($UtilisateurNom $UtilisateurPrenom) dans l'OU : $UtilisateurOU sous l'OU principale Siège" | Out-File -Append $logPath
        }
        catch {
            Write-Error "Erreur lors de la création de l'utilisateur $UtilisateurLogin sous l'OU principale Siège : $_"
            Write-Error "Erreur lors de la création de l'utilisateur $UtilisateurLogin sous l'OU principale Siège : $_" | Out-File -Append $logPath
        }
    }
}

# Arrêter la journalisation
Stop-Transcript
Leave a Comment