#ADD USER IN YOUR AD WITH GRAPHICAL POWERSHELL SCRIPT #AJOUT UTILISATEUR SCRIPT POWERSHELL AVEC INTERFACE GRAPHIQUE #Créer par le contributeur Microsoft Technet Gérald.coille #CREATE GUI [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") # create-user.ps1 $rootdomain = "isitest.local" $rootpath = "LDAP://localhost:389/dc=isitest,dc=local" function get-OU { param ($path = $rootpath) $adsi = [ADSI]$path $searcher = new-object DirectoryServices.DirectorySearcher $adsi $searcher.filter = "(ObjectCategory=OrganizationalUnit)" $ou = @($searcher.findall()) $ou } function get-Groups { param ($path = $rootpath) $adsi = [ADSI]$path $searcher = new-object DirectoryServices.DirectorySearcher $adsi $searcher.filter = "(ObjectCategory=Group)" $groups = @($searcher.findall()) $groups } function new-User { param ($login, $firstname, $lastname, $ou) $cn = $samaccountname = $login $userprincipalname = "{0}@{1}" -f $login, $rootdomain $displayname = "{0} {1}" -f $firstname, $lastname $adsi = [ADSI]$ou $user = $adsi.Create("User", "CN=$cn") $user.Put("userPrincipalName", $userprincipalname) $user.Put("displayName", $displayname) # $user.Put("samAccountName", $samaccountname) $user.SetInfo() $userPath = $user.Path return $userPath } function add-User { param ($user, $group) $adsi = [ADSI]$group $adsi.Add($user) } $objForm = New-Object System.Windows.Forms.Form $objForm.Text = "Add USER AD ORGANIZATION" $objForm.Size = New-Object System.Drawing.Size(1200,1200) $objForm.StartPosition = "CenterScreen" $objForm.BackColor = "#929fae" $objForm.KeyPreview = $True $objForm.Add_KeyDown({if ($_.KeyCode -eq "Valider") {$x=$objTextBox.Text;$objForm.Close()}}) $objForm.Add_KeyDown({if ($_.KeyCode -eq "Quitter") {$objForm.Close()}}) $OKButton = New-Object System.Windows.Forms.Button $OKButton.Location = New-Object System.Drawing.Size(550,700) $OKButton.Size = New-Object System.Drawing.Size(75,23) $OKButton.Text = "Valider" $OKButton.Add_Click({$x=$objTextBox.Text;$objForm.Close()}) $objForm.Controls.Add($OKButton) $CancelButton = New-Object System.Windows.Forms.Button $CancelButton.Location = New-Object System.Drawing.Size(700,700) $CancelButton.Size = New-Object System.Drawing.Size(75,23) $CancelButton.Text = "Quitter" $CancelButton.Add_Click({$objForm.Close()}) $objForm.Controls.Add($CancelButton) $objLabel = New-Object System.Windows.Forms.Label $objLabel.Location = New-Object System.Drawing.Size(10,20) $objLabel.Size = New-Object System.Drawing.Size(280,20) $objLabel.Text = "Entrer l'identifiant" $objForm.Controls.Add($objLabel) # Création du label et de la ListBox pour l'OU $lbl_OU = New-Object System.Windows.Forms.Label $lbl_OU.Text = "OU:" $lbl_OU.Size = New-Object System.Drawing.Size @(59, 20) $lbl_OU.Location = New-Object System.Drawing.Point @(400, 183) $listbox_OU = New-Object System.Windows.Forms.ListBox $listbox_OU.BackColor = [System.Drawing.Color]::FromArgb(255,245,255,250) $listbox_OU.Size = New-Object System.Drawing.Size @(143, 100) $listbox_OU.Location = New-Object System.Drawing.Point @(400, 183) $listbox_OU.FormattingEnabled = $True $listbox_OU.SelectionMode = "One" # Création du label et de la CheckListBox pour les groupes $lbl_group = New-Object System.Windows.Forms.Label $lbl_group.Text = "Groupes:" $lbl_group.Size = New-Object System.Drawing.Size @(59, 20) $lbl_group.Location = New-Object System.Drawing.Point @(400, 350) $listbox_group = New-object Windows.Forms.CheckedListBox $listbox_group.BackColor = [System.Drawing.Color]::FromArgb(255,245,255,250) $listbox_group.Size = New-Object System.Drawing.Size @(143, 82) $listbox_group.Location = New-Object System.Drawing.Point @(400, 400) $listbox_group.FormattingEnabled = $True $listbox_group.CheckOnClick = $true # Ajout des contrôles au formulaire $objForm.Controls.Add($lbl_OU) $objForm.Controls.Add($listbox_OU) $objForm.Controls.Add($lbl_group) $objForm.Controls.Add($listbox_group) #text pour 2eme textbox $objLabel = New-Object System.Windows.Forms.Label $objLabel.Location = New-Object System.Drawing.Size(10,70) $objLabel.Size = New-Object System.Drawing.Size(280,20) $objLabel.Text = "Entrer le PRENOM" $objForm.Controls.Add($objLabel) #fin du text #text pour 3eme textbox $objLabel = New-Object System.Windows.Forms.Label $objLabel.Location = New-Object System.Drawing.Size(10,130) $objLabel.Size = New-Object System.Drawing.Size(280,20) $objLabel.Text = "Entrer le NOM" $objForm.Controls.Add($objLabel) #fin du text #text pour 4eme textbox $objLabel = New-Object System.Windows.Forms.Label $objLabel.Location = New-Object System.Drawing.Size(10,190) $objLabel.Size = New-Object System.Drawing.Size(280,20) $objLabel.Text = "Entrer le TELEPHONE" $objForm.Controls.Add($objLabel) #fin du text #text pour 5eme textbox $objLabel = New-Object System.Windows.Forms.Label $objLabel.Location = New-Object System.Drawing.Size(10,250) $objLabel.Size = New-Object System.Drawing.Size(280,20) $objLabel.Text = "Entrer le Mot De Passe" $objForm.Controls.Add($objLabel) #texte pour 6e textbox $objLabel = New-Object System.Windows.Forms.Label $objLabel.Location = New-Object System.Drawing.Size(10,310) $objLabel.Size = New-Object System.Drawing.Size(280,20) $objLabel.Text = "Entrer le nom de votre Service" $objForm.Controls.Add($objLabel) #texte pour 7e textbox $objLabel = New-Object System.Windows.Forms.Label $objLabel.Location = New-Object System.Drawing.Size(10,370) $objLabel.Size = New-Object System.Drawing.Size(280,20) $objLabel.Text = "Entrer votre fonction dans l'entreprise" $objForm.Controls.Add($objLabel) #texte pour 8e textbox $objLabel = New-Object System.Windows.Forms.Label $objLabel.Location = New-Object System.Drawing.Size(10,430) $objLabel.Size = New-Object System.Drawing.Size(280,20) $objLabel.Text = "Entrer votre Adresse" $objForm.Controls.Add($objLabel) #texte pour 9e textbox $objLabel = New-Object System.Windows.Forms.Label $objLabel.Location = New-Object System.Drawing.Size(10,490) $objLabel.Size = New-Object System.Drawing.Size(280,20) $objLabel.Text = "Entrer votre numéro de téléphone portable" $objForm.Controls.Add($objLabel) #texte pour 10e textbox $objLabel = New-Object System.Windows.Forms.Label $objLabel.Location = New-Object System.Drawing.Size(10,550) $objLabel.Size = New-Object System.Drawing.Size(280,20) $objLabel.Text = "Entrer votre ville" $objForm.Controls.Add($objLabel) #texte pour 11e textbox $objLabel = New-Object System.Windows.Forms.Label $objLabel.Location = New-Object System.Drawing.Size(10,610) $objLabel.Size = New-Object System.Drawing.Size(280,20) $objLabel.Text = "Entrer votre code postal" $objForm.Controls.Add($objLabel) #fin du text $objTextBox = New-Object System.Windows.Forms.TextBox $objTextBox.Location = New-Object System.Drawing.Size(10,40) $objTextBox.Size = New-Object System.Drawing.Size(260,20) $objForm.Controls.Add($objTextBox) #modif ajout fenetre $objTextBox2 = New-Object System.Windows.Forms.TextBox $objTextBox2.Location = New-Object System.Drawing.Size(10,90) $objTextBox2.Size = New-Object System.Drawing.Size(260,20) $objForm.Controls.Add($objTextBox2) $objTextBox3 = New-Object System.Windows.Forms.TextBox $objTextBox3.Location = New-Object System.Drawing.Size(10,150) $objTextBox3.Size = New-Object System.Drawing.Size(260,20) $objForm.Controls.Add($objTextBox3) $objTextBox4 = New-Object System.Windows.Forms.TextBox $objTextBox4.Location = New-Object System.Drawing.Size(10,210) $objTextBox4.Size = New-Object System.Drawing.Size(260,20) $objForm.Controls.Add($objTextBox4) $objTextBox5 = New-Object System.Windows.Forms.TextBox $objTextBox5.Location = New-Object System.Drawing.Size(10,270) $objTextBox5.Size = New-Object System.Drawing.Size(260,20) $objForm.Controls.Add($objTextBox5) $objTextBox6 = New-Object System.Windows.Forms.TextBox $objTextBox6.Location = New-Object System.Drawing.Size(10,330) $objTextBox6.Size = New-Object System.Drawing.Size(260,20) $objForm.Controls.Add($objTextBox6) $objTextBox7 = New-Object System.Windows.Forms.TextBox $objTextBox7.Location = New-Object System.Drawing.Size(10,390) $objTextBox7.Size = New-Object System.Drawing.Size(260,20) $objForm.Controls.Add($objTextBox7) $objTextBox8 = New-Object System.Windows.Forms.TextBox $objTextBox8.Location = New-Object System.Drawing.Size(10,450) $objTextBox8.Size = New-Object System.Drawing.Size(260,20) $objForm.Controls.Add($objTextBox8) $objTextBox9 = New-Object System.Windows.Forms.TextBox $objTextBox9.Location = New-Object System.Drawing.Size(10,510) $objTextBox9.Size = New-Object System.Drawing.Size(260,20) $objForm.Controls.Add($objTextBox9) $objTextBox10 = New-Object System.Windows.Forms.TextBox $objTextBox10.Location = New-Object System.Drawing.Size(10,570) $objTextBox10.Size = New-Object System.Drawing.Size(260,20) $objForm.Controls.Add($objTextBox10) $objTextBox11 = New-Object System.Windows.Forms.TextBox $objTextBox11.Location = New-Object System.Drawing.Size(10,630) $objTextBox11.Size = New-Object System.Drawing.Size(260,20) $objForm.Controls.Add($objTextBox11) #fin de modif $objForm.Topmost = $True $objForm.Add_Shown({$objForm.Activate()}) [void] $objForm.ShowDialog() $result = $objForm.ShowDialog() $x # Récupération de la liste des OU $OUList = get-OU $listbox_OU.Items.AddRange($($OUList | foreach {$_.properties.name})) # Récupération de la liste des groupes $GroupList = get-groups $listbox_group.Items.AddRange($($GroupList | foreach {$_.properties.name})) # Récupération de l'OU sélectionnée $OUSelected = $OUList[$listbox_OU.SelectedIndex] # Création de l'utilisateur dans l'OU sélectionnée $lastname = $textbox_lastname.Text $firstname = $textbox_firstname.Text $login = $textbox_login.Text $OU = $OUSelected.Path $phone=$textbox_tel.Text $newuser = new-User -login $login -first $firstname -last $lastname -ou $OU $newuser = ([String]$newuser).Trim() # Récupération des groupes sélectionnés $GroupSelection = @() foreach ($index in $listbox_group.CheckedIndices) { $GroupSelection += $GroupList[$index]} #Ajout Dans L'AD $ou = "OU=isitest,DC=isitest,DC=local" $nom=$objTextBox3.Text $prenom=$objTextBox2.Text $pseudo=$objTextBox.Text $mdp=$objTextBox5.Text $phone=$objTextBox4.Text $service=$objTextBox6.Text $fonction=$objTextBox7.Text $adresse=$objTextBox8.Text $portable=$objTextBox9.Text $ville=$objTextBox10.Text $cp=$objTextBox11.Text $desc=$objTextBox12.Text #creation de l'utilisateur avec les infos recuperees pour celui-ci new-ADUser -Name "$prenom $nom" -AccountPassword (ConvertTo-SecureString -String $mdp -AsPlainText -Force) -DisplayName "$pseudo" -EmailAddress "$pseudo@adapei36.fr" -Enabled 1 -GivenName "$prenom" -OfficePhone "$phone" -Path "$ou" -SamAccountName "$pseudo" -Surname "$nom" -UserPrincipalName "$pseudo@adapei36.fr" -HomeDrive "P:" -HomeDirectory "\\srv-fichier\shared" -Department "$service" -title "$fonction" -MobilePhone "$portable" -City "$ville" -PostalCode "$cp" -Description "$prenom $nom" -State "Indre" -Country "FR" -HomePage "www.adapei36.fr" -StreetAddress "$adresse" -Company "ADAPEI36" -Office "$ville" -PasswordNeverExpires 1 # Ajout de l'utilisateur aux groupes sélectionnés foreach ($group in $GroupSelection) { add-User -user $newuser -group $group.Path } echo $OUselected echo $OUList