{"id":941,"date":"2017-02-15T19:56:15","date_gmt":"2017-02-15T18:56:15","guid":{"rendered":"http:\/\/blog.purplescreen.fr\/?p=941"},"modified":"2017-02-22T13:09:41","modified_gmt":"2017-02-22T12:09:41","slug":"ad-script-creation-dutilisateurs-suite","status":"publish","type":"post","link":"https:\/\/blog.purplescreen.fr\/?p=941","title":{"rendered":"AD \u2013 Script Cr\u00e9ation d\u2019Utilisateurs (Suite&#8230;)"},"content":{"rendered":"<p>Je vous propose ce script qui permet d&#8217;ajouter des utilisateurs en masse idem que ce post <a href=\"http:\/\/blog.purplescreen.fr\/?p=920\" target=\"_blank\">http:\/\/blog.purplescreen.fr\/?p=920<\/a><br \/>\nMais un peu plus complet. Il g\u00e8re les erreurs utilisateurs et propose des templates utilisateur pour les ajouter dans les groupes AD souhaitez. Il faudra mettre vos templates dans une OU s\u00e9parer et modifier les lignes correspondantes a votre infrastructure.<\/p>\n<pre>#Script by Olivier Gosselin\r\n #http:\/\/blog.purplescreen.fr\/\r\n #Chemin du fichier TXT\r\n #Champ1;Champ2;Champ3\r\n #TemplateUser;FirstName;LastName\r\n\r\n#Import-module ActiveDirectory\r\n $File = Get-Content -Path \"ChemindeVotreFichierTXT\"\r\n #A quel endroit je veux cr\u00e9er les utilisateurs\r\n#Exemple pour ces lignes (mettre le chemin pour les templates)\r\n$PathOUDestination = \"OU=Users,OU=HOME,DC=home,DC=local\"\r\n$OUTemplate = \"OU=Templates,OU=Users,OU=HOME,DC=home,DC=local\"\r\n $NbCaracterePassword = \"10\"\r\n $upnName = \"@home.local\"\r\n\r\n#Password complexe modifier la valeur $NbCaracterePassword selon vos besoins\r\n function GenPassword () {\r\n $Assembly = Add-Type -AssemblyName System.Web\r\n $password = [System.Web.Security.Membership]::GeneratePassword($NbCaracterePassword,2)\r\n return $password\r\n }\r\n\r\nForeach ($line in $File) {\r\n #On d\u00e9coupe avec de ;\r\n $line_splitted = $line.split(\";\")\r\n #On cr\u00e9er l'utilisateur\r\n $password = GenPassword\r\n $TemplateUser = $line_splitted[0]\r\n $firstName = $line_splitted[1]\r\n $lastName = $line_splitted[2]\r\n ##On r\u00e9cup\u00e8re le login en fonction du fisrt Name et et Last Name\r\n $firstNameLetter = $firstName.Substring(0,1)\r\n $login = \"$firstNameLetter$lastName\".Replace(' ','')\r\n $Userlogin = $login.ToLower()\r\n #$MembersGroup = $Userlogin\r\n $secureString = convertto-securestring \"$password\" -asplaintext -force\r\n\r\n#On v\u00e9rifier si une valeur est pr\u00e9sente dans la liste\r\n if (!$TemplateUser) {\r\n $SelectTemplate = Get-ADUser -SearchBase $OUTemplate -Filter *\r\n $CountSelect = $SelectTemplate.count\r\n Write-Host \"Aucun template de renseigner dans le fichier pour l'utilisateur $Userlogin\"\r\n for ($i=0;$i -lt $CountSelect;$i++) {\r\n Write-Host $i \" : \"$SelectTemplate.Name[$i]\r\n }#FIN for\r\n $MaxVal = $i-1\r\n do {\r\n $ChoixTemplate = Read-Host \"Votre Choix ?[0-\"$MaxVal\"]\"\r\n } while ((!$ChoixTemplate) -or ($ChoixTemplate -ge $CountSelect) -or ($ChoixTemplate -match '\\D+'))\r\n $TemplateUser = $SelectTemplate.Name[$ChoixTemplate]\r\n #Write-Host \"Votre choix est :\" $Template\r\n\r\n#Recuperation du SAMObject pour le template\r\n $templateSAM = Get-ADUser -Filter {(Name -eq $TemplateUser)}\r\n $templateSAM = $templateSAM.SamAccountName\r\n\r\n#Le template correspond avec un des utilisateurs template. On cr\u00e9er l'utilisateur et on utilise le template\r\n #Creation de l'utilisateur\r\n New-ADUser -UserPrincipalName \"$Userlogin$upnName\" -SamAccountName $Userlogin -Name \"$firstName $lastName\" -GivenName $firstName -DisplayName \"$firstName $lastName\" -Surname $lastName -Path \"$PathOUDestination\" -Description \"Password : $password\" -ChangePasswordAtLogon 0 -CannotChangePassword 0 -AccountPassword $secureString -Enabled 1\r\n #Ajout dans les groupes\r\n Get-ADUser -Identity $templateSAM -Properties memberof | Select-Object -ExpandProperty memberof | Add-ADGroupMember -Members $Userlogin\r\n }\r\n\r\n#Si une valeur est pr\u00e9sente, on v\u00e9rifie que la valeur est bonne\r\n else {\r\n $SelectTemplate = Get-ADUser -SearchBase $OUTemplate -Filter *\r\n $CountSelect = $SelectTemplate.count\r\n if ($SelectTemplate.Name -contains $TemplateUser) {\r\n Write-Host \"Le template pour user $Userlogin a \u00e9t\u00e9 retrouver dans les templates disponibles. L'utilisateur est cr\u00e9\u00e9 $Userlogin\"\r\n Write-Host \"==================================================================================================================\"\r\n\r\n#Recuperation du SAMObject pour le template\r\n $templateSAM = Get-ADUser -Filter {(Name -eq $TemplateUser)}\r\n $templateSAM = $templateSAM.SamAccountName\r\n\r\n#Write-Host \"SamTemplate :\" $templateSAM.SamAccountName\r\n #Le template correspond avec un des utilisateurs template. On cr\u00e9er l'utilisateur et on utilise le template\r\n #Creation de l'utilisateur\r\n New-ADUser -UserPrincipalName \"$Userlogin$upnName\" -SamAccountName $Userlogin -Name \"$firstName $lastName\" -GivenName $firstName -DisplayName \"$firstName $lastName\" -Surname $lastName -Path \"$PathOUDestination\" -Description \"Password : $password\" -ChangePasswordAtLogon 0 -CannotChangePassword 0 -AccountPassword $secureString -Enabled 1\r\n #Ajout dans les groupes\r\n Get-ADUser -Identity $templateSAM -Properties memberof | Select-Object -ExpandProperty memberof | Add-ADGroupMember -Members $Userlogin\r\n\r\n##############Debug\r\n #Write-Host \"Debug :\"\r\n #Write-Host \"Template SAM : $templateSAM\"\r\n #Write-Host \"UpN : $Userlogin$upnName\"\r\n #Write-Host \"Login : $Userlogin\"\r\n #Write-Host \"FirstName : $firstName\"\r\n #Write-Host \"LastName : $lastName\"\r\n #Write-Host \"PathOU : $PathOUDestination\"\r\n #Write-Host \"Password : $password\"\r\n #Write-Host \"MemberGroup : $MembersGroup\"\r\n\r\n}\r\n else {\r\n $SelectTemplate = Get-ADUser -SearchBase $OUTemplate -Filter *\r\n $CountSelect = $SelectTemplate.count\r\n Write-Host \"Le template pour user $Userlogin est diff\u00e9rent des templates disponibles. Merci d'en choisir un dans la liste\"\r\n Write-Host \"============================================================================================================\"\r\n for ($i=0;$i -lt $CountSelect;$i++) {\r\n Write-Host $i \" : \"$SelectTemplate.Name[$i]\r\n }#FIN for\r\n $MaxVal = $i-1\r\n do {\r\n $ChoixTemplate = Read-Host \"Votre Choix ?[0-\"$MaxVal\"]\"\r\n } while ((!$ChoixTemplate) -or ($ChoixTemplate -ge $CountSelect) -or ($ChoixTemplate -match '\\D+'))\r\n $TemplateUser = $SelectTemplate.Name[$ChoixTemplate]\r\n #Write-Host \"Votre choix est :\" $Template\r\n\r\n#Recuperation du SAMObject pour le template\r\n $templateSAM = Get-ADUser -Filter {(Name -eq $TemplateUser)}\r\n $templateSAM = $templateSAM.SamAccountName\r\n\r\n#Le template correspond avec un des utilisateurs template. On cr\u00e9er l'utilisateur et on utilise le template\r\n #Creation de l'utilisateur\r\n New-ADUser -UserPrincipalName \"$Userlogin$upnName\" -SamAccountName $Userlogin -Name \"$firstName $lastName\" -GivenName $firstName -DisplayName \"$firstName $lastName\" -Surname $lastName -Path \"$PathOUDestination\" -Description \"Password : $password\" -ChangePasswordAtLogon 0 -CannotChangePassword 0 -AccountPassword $secureString -Enabled 1\r\n #Ajout dans les groupes\r\n Get-ADUser -Identity $templateSAM -Properties memberof | Select-Object -ExpandProperty memberof | Add-ADGroupMember -Members $Userlogin\r\n\r\n}\r\n } #Fin else\r\n } #Fin foreach<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Je vous propose ce script qui permet d&#8217;ajouter des utilisateurs en masse idem que ce post http:\/\/blog.purplescreen.fr\/?p=920 Mais un peu plus complet. Il g\u00e8re les erreurs utilisateurs et propose des templates utilisateur pour les ajouter dans les groupes AD souhaitez. Il faudra mettre vos templates dans une OU s\u00e9parer et modifier les lignes correspondantes a&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[38],"tags":[39],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>AD \u2013 Script Cr\u00e9ation d\u2019Utilisateurs (Suite...) - PurpleScreen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.purplescreen.fr\/?p=941\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"ogosselin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.purplescreen.fr\/?p=941\",\"url\":\"https:\/\/blog.purplescreen.fr\/?p=941\",\"name\":\"AD \u2013 Script Cr\u00e9ation d\u2019Utilisateurs (Suite...) - PurpleScreen\",\"isPartOf\":{\"@id\":\"https:\/\/blog.purplescreen.fr\/#website\"},\"datePublished\":\"2017-02-15T18:56:15+00:00\",\"dateModified\":\"2017-02-22T12:09:41+00:00\",\"author\":{\"@id\":\"https:\/\/blog.purplescreen.fr\/#\/schema\/person\/ad63980c08d122ffe9115ade81b21fd3\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.purplescreen.fr\/?p=941#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.purplescreen.fr\/?p=941\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.purplescreen.fr\/?p=941#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blog.purplescreen.fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"AD \u2013 Script Cr\u00e9ation d\u2019Utilisateurs (Suite&#8230;)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.purplescreen.fr\/#website\",\"url\":\"https:\/\/blog.purplescreen.fr\/\",\"name\":\"PurpleScreen\",\"description\":\"by Olivier Gosselin\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.purplescreen.fr\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.purplescreen.fr\/#\/schema\/person\/ad63980c08d122ffe9115ade81b21fd3\",\"name\":\"ogosselin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.purplescreen.fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6a053a3dca3cccbeecd37d492189f38f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6a053a3dca3cccbeecd37d492189f38f?s=96&d=mm&r=g\",\"caption\":\"ogosselin\"},\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/olivier-gosselin-30090498\/\"],\"url\":\"https:\/\/blog.purplescreen.fr\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"AD \u2013 Script Cr\u00e9ation d\u2019Utilisateurs (Suite...) - PurpleScreen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.purplescreen.fr\/?p=941","twitter_misc":{"Written by":"ogosselin","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.purplescreen.fr\/?p=941","url":"https:\/\/blog.purplescreen.fr\/?p=941","name":"AD \u2013 Script Cr\u00e9ation d\u2019Utilisateurs (Suite...) - PurpleScreen","isPartOf":{"@id":"https:\/\/blog.purplescreen.fr\/#website"},"datePublished":"2017-02-15T18:56:15+00:00","dateModified":"2017-02-22T12:09:41+00:00","author":{"@id":"https:\/\/blog.purplescreen.fr\/#\/schema\/person\/ad63980c08d122ffe9115ade81b21fd3"},"breadcrumb":{"@id":"https:\/\/blog.purplescreen.fr\/?p=941#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.purplescreen.fr\/?p=941"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/blog.purplescreen.fr\/?p=941#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.purplescreen.fr\/"},{"@type":"ListItem","position":2,"name":"AD \u2013 Script Cr\u00e9ation d\u2019Utilisateurs (Suite&#8230;)"}]},{"@type":"WebSite","@id":"https:\/\/blog.purplescreen.fr\/#website","url":"https:\/\/blog.purplescreen.fr\/","name":"PurpleScreen","description":"by Olivier Gosselin","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.purplescreen.fr\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blog.purplescreen.fr\/#\/schema\/person\/ad63980c08d122ffe9115ade81b21fd3","name":"ogosselin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.purplescreen.fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/6a053a3dca3cccbeecd37d492189f38f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6a053a3dca3cccbeecd37d492189f38f?s=96&d=mm&r=g","caption":"ogosselin"},"sameAs":["https:\/\/www.linkedin.com\/in\/olivier-gosselin-30090498\/"],"url":"https:\/\/blog.purplescreen.fr\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/blog.purplescreen.fr\/index.php?rest_route=\/wp\/v2\/posts\/941"}],"collection":[{"href":"https:\/\/blog.purplescreen.fr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.purplescreen.fr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.purplescreen.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.purplescreen.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=941"}],"version-history":[{"count":5,"href":"https:\/\/blog.purplescreen.fr\/index.php?rest_route=\/wp\/v2\/posts\/941\/revisions"}],"predecessor-version":[{"id":946,"href":"https:\/\/blog.purplescreen.fr\/index.php?rest_route=\/wp\/v2\/posts\/941\/revisions\/946"}],"wp:attachment":[{"href":"https:\/\/blog.purplescreen.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=941"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.purplescreen.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=941"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.purplescreen.fr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=941"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}