CREE UN UTILISATEUR AD
(PowerShell)

# ==================================================================================================
# NAME: CREAT_USER.ps1
# AUTHOR: Nicolas IGUINIZ
# DATE: 20/03/2021
#
# KEYWORDS: Creat, User, Active Directory
# VERSION 1.0
# COMMENTS: Crée un nouvel utilisateur pour le domaine ACME.local .Crée son dossier personnel, 
# et accorde les droit de modification pour le groupe son service. Permet de séparer les stagiaires
# ==================================================================================================

Install-Module NTFSSecurity

$domaine = "ACME"
$ext = "local"

function Creat_user {

    Do {
        # Demander le login de l'utilisateur :
        $login = Read-Host "`nMerci de Rentrer le Login de l’Utilisateur à Créer en respectant cette convention :`nP.NOM ex: B.SIMPSON pour Bart SIMPSON. `n`nEntrez le Login du nouvel utilisateur"
        if ($login -ne "" -and [bool](Get-ADUser -F { SamAccountName -eq $login })) {
            Write-Warning "$login existe deja"
            $login = $null
        }
    } Until ($login -ne "" -and $null -ne $login )

    Do {
        $prenom = Read-Host "Merci d'indiquer le prénom de l'utilisateur"
    } Until ($prenom -ne "" -and $null -ne $prenom )

    Do {
        $famille = Read-Host "Merci d'indiquer le nom de famille de l'utilisateur"
    } Until ($famille -ne "" -and $null -ne $famille )

    Do {
        $mdp = Read-Host "Merci de Rentrer le Mot de Passe de l’Utilisateur à créer (Doit contenir au moins 1 chiffre, une lettre et un caractère spéciale)"
    } Until ($mdp -ne "" -and $null -ne $mdp )


    $tel = Read-Host "Merci d'indiquer le numéro de téléphone Fixe de l'utilisateur (Laissez vide si inconnu)"
    $mobile = Read-Host "Merci d'indiquer le numéro de téléphone mobile de l'utilisateur (Laissez vide si inconnu)"
    $mail = Read-host "Merci d'indiquer l'adresse mail de l'utilisateur (Laissez vide si inconnu)"
    
    # Crée l'utilisateur :
    New-ADUser -Name "$famille $prenom" -GivenName $prenom -Surname $famille -SamAccountName $login -Description $service -Office $poste -OfficePhone $tel -MobilePhone $mobile -Company $domaine -EmailAddress $mail -UserPrincipalName $login@$domaine.$ext -AccountPassword (ConvertTo-SecureString -AsPlainText $mdp -Force) -PasswordNeverExpires $true -CannotChangePassword $true -Enabled $true

    $pathUser = "E:\Utilisateurs\$login"

    if (Test-Path $pathUser) {
        Write-Host -NoNewLine "Le dossier $pathUser existe deja, sauvegarder le dossier et pressez une touche pour continuer...";
        $null = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown');
    }

    New-Item -Path $pathUser -itemType Directory -Force | Out-Null

    if (Test-Path $pathUser) {

        New-SmbShare -Name $login -Path $pathUser -FullAccess "Tout le monde"  | Out-Null

        Add-NTFSAccess -Path $pathUser -Account "acme\$login" -AccessRights Modify  | Out-Null

        # OU
        #Write-Output "Voici la liste des Services de l'entreprise"
        #Get-ADOrganizationalUnit -Filter {Description -like "$domaine"} | Select Name
        $add_OU = Read-Host "`nEntrer le nom de l'unité d'organisation choisi"
        if (Get-ADOrganizationalUnit -F {OU -eq $add_OU})
        {
        Move-ADObject -Identity "CN=$famille $prenom,CN=Users,DC=$domaine,DC=$ext" -TargetPath "OU=$add_OU,OU=Services_ACME,DC=$domaine,DC=$ext"
        }
        else
        {
        Write-Warning "Le service n'existe pas, merci de retenter votre chance !"
        $add_OU = Read-Host "`nEntrer le nom de l'unité d'organisation choisi"
        }

        Add-AdGroupMember -Identity $add_OU -Members $login

        # Ajouter l'utilisateur au groupe :
        Do {
            $stagiaire = Read-Host "Es ce que l'utilisateur est un stagiaire ?" 
        } Until($stagiaire -ne "" -and $null -ne $stagiaire)
        if ($stagiaire -eq "oui") {
            Add-AdGroupMember -Identity Stagiaire -Members $login
        }

        # # Donner les droits au dossier du service :
        # Set-Location E:\Services
        # Grant-SmbShareAccess -Name $add_OU -AccountName $login -AccessRight Full -Force

         Add-NTFSAccess -Path E:\Services\$add_OU -Account "acme\$add_OU" -AccessRights Modify  | Out-Null

        # MESSAGE DE FIN
        Write-Output " "
        Write-Output " "
        Write-Output "Félicitation, Votre utilisateur à bien été créé, et ajouter à l'unité organisationel $add_OU. Il fait maintenant partie du group $group ."

        Write-Output " "
        Write-Output " "
        # Demander à l'utilisateur si il veux crée un nouvel utilisateur :
        $new = Read-Host "Souhaitez-vous crée un autre utilisateur ? (oui ou non)"
        if ($new -eq "oui") {
            # Rappeler la fonction:
            return Creat_User
        }
        return Write-Output "`nMerci d'avoir crée vos utilisateurs avec nos services ! Bonne journée et à bientôt !"
    }
}

try {
    # Démarrer la création :
    Creat_User
}
catch {
    Write-Output $_ 
    Write-Warning "Une erreur s'est produite et le processus n'est pas aller à son terme"
    exit 1
}