From 826c49d164a5ec3b5b9adfb111acaedaa02c19a2 Mon Sep 17 00:00:00 2001 From: ArescomML Date: Fri, 3 Jan 2025 14:26:45 +0100 Subject: [PATCH] Error handling and check if user exists --- AD/CreateN1-N2Users/Create-ADtechs.ps1 | 72 ++++++++++++++------------ 1 file changed, 38 insertions(+), 34 deletions(-) diff --git a/AD/CreateN1-N2Users/Create-ADtechs.ps1 b/AD/CreateN1-N2Users/Create-ADtechs.ps1 index 9148327..84f6dcc 100644 --- a/AD/CreateN1-N2Users/Create-ADtechs.ps1 +++ b/AD/CreateN1-N2Users/Create-ADtechs.ps1 @@ -48,11 +48,6 @@ function GetADSID { #On récupere le SID de l'AD pour pouvoir l'intégrer aux gr return $domaineSID } -function GetACID { #Fonction de test - return "superSID" -} -################################# - ########### Variables ########### $userList = "Tech-N1","Tech-N2","Tech-N3" @@ -76,37 +71,46 @@ $grpNetAdmin = "S-1-5-32-556" #Pour chaque user, on le crée + ajoute aux bons groupes ForEach($user in $userList){ - - $userPass = (GenPass) - $userEncPass = ConvertTo-SecureString -String $userPass -AsPlainText -Force + try{ + # On vérifie si l'utilisateur existe déjà, passe au suivant si oui + $existingUser = Get-ADUser -Filter { Name -eq $user } -ErrorAction SilentlyContinue + if ($existingUser) { + Write-Color -Text "L'utilisateur ", $user, " existe déjà. Aucun changement effectué." -Color White, Yellow + continue + } + $userPass = (GenPass) + $userEncPass = ConvertTo-SecureString -String $userPass -AsPlainText -Force + $detailsUser = @{ + Name = $user + AccountPassword = $userEncPass + Enabled = $true + ChangePasswordAtLogon = $false + PasswordNeverExpires = $true #On fait en sorte qu'il n'expire pas + } + New-ADUser @detailsUser #On cree l'user... - $detailsUser = @{ - Name = $user - AccountPassword = $userEncPass - Enabled = $true - ChangePasswordAtLogon = $false - PasswordNeverExpires = $true #On fait en sorte qu'il n'expire pas + #...puis on l'ajoute aux bons groupes + switch ($user) { + "Tech-N1"{$Groups = @($grpAccountOp,$grpPrintOp,$grpDHCPuser)} + "Tech-N2"{$Groups = @($grpAccountOp,$grpPrintOp,$grpDHCPadm,$grpGPOadmin,$grpNetAdmin)} + "Tech-N3"{$Groups = @($grpDomainAdm)} + Default {} + } + + $newCsvLine = @([PSCustomObject]@{Username = $user; Password = $userPass}) + $newCsvLine | Export-CSV "C:\techLogins-$pcName.csv" -Append -NoTypeInformation -Encoding UTF8 + + ForEach ($Group in $Groups) { + + Add-ADPrincipalGroupMembership $User -MemberOf $Group + + } + + Write-Color -Text "L'utilisateur ",$User," a bien été crée. Son mot de passe est ",$userPass -Color White,Green,White,Cyan + } + catch { + Write-Error "Erreur pour l'utilisateur $user : $_" } - New-ADUser @detailsUser #On cree l'user... - - #...puis on l'ajoute aux bons groupes - switch ($user) { - "Tech-N1"{$Groups = @($grpAccountOp,$grpPrintOp,$grpDHCPuser)} - "Tech-N2"{$Groups = @($grpAccountOp,$grpPrintOp,$grpDHCPadm,$grpGPOadmin,$grpNetAdmin)} - "Tech-N3"{$Groups = @($grpDomainAdm)} - Default {} - } - - $newCsvLine = @([PSCustomObject]@{Username = $user; Password = $userPass}) - $newCsvLine | Export-CSV "C:\techLogins-$pcName.csv" -Append -NoTypeInformation -Encoding UTF8 - - ForEach ($Group in $Groups) { - - Add-ADPrincipalGroupMembership $User -MemberOf $Group - - } - - Write-Color -Text "L'utilisateur ",$User," a bien été crée. Son mot de passe est ",$userPass -Color White,Green,White,Cyan } Write-Color -Text "Les utilisateurs ainsi que leur mots de passes ont été exportés ici : ","C:\techLogins-$pcName.csv" -Color White,Green \ No newline at end of file