Guest User

Untitled

a guest
Aug 14th, 2018
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. $userlist = Import-csv -Delimiter ";" "C:\users.csv" **Importerar användarnamn, lösenord och annat som kan komma behövas**
  2.  
  3. function Convert-DiacriticCharacters
  4. {
  5. param(
  6.     [string]$inputString
  7. )
  8. [string]$formD = $inputString.Normalize(
  9.         [System.text.NormalizationForm]::FormD
  10. )
  11. $stringBuilder = new-object System.Text.StringBuilder
  12. for ($i = 0; $i -lt $formD.Length; $i++){
  13.     $unicodeCategory = [System.Globalization.CharUnicodeInfo]::GetUnicodeCategory($formD[$i])
  14.     $nonSPacingMark = [System.Globalization.UnicodeCategory]::NonSpacingMark
  15.     if($unicodeCategory -ne $nonSPacingMark){
  16.         $stringBuilder.Append($formD[$i]) | out-null
  17.     }
  18.    
  19.    
  20. **Ovan ses en funktion där alla ovanliga tecken och å,ä,ö blir utbytta**
  21.  
  22.  
  23. }
  24. $stringBuilder.ToString().Normalize([System.text.NormalizationForm]::FormC)
  25. }
  26.  
  27.  
  28. # Loop to process each row of the CSV file
  29. foreach ($row in $userlist)
  30. {
  31.  
  32. $password = $row.Password
  33.  
  34. $Lastname = $row.Lastname
  35.  
  36. $Firstname = $row.Firstname
  37.  
  38. $username = $row.Firstname.substring(0,2) + $row.Lastname.substring(0,2)
  39.  
  40. $username = $username.tolower()
  41.  
  42. $role = $row.Role
  43.  
  44. $email =$row.Email
  45.  
  46. $email = Convert-DiacriticCharacters $email
  47.  
  48. $grupper = $row.Department
  49.  
  50. $userDN = " "
  51.  
  52. $group = " "
  53.  
  54. $rulegroup = " "
  55.  
  56. **Ovan deklareras variablar som kommer att användas nedan**
  57.  
  58. if ($grupper -eq "Sales")
  59. {
  60.     $testOU = "Sales"
  61.    
  62. }
  63. elseif ($grupper -eq "RND")
  64. {
  65.     $testOU = "Research and Development"
  66.    
  67.    
  68. }
  69. elseif ($grupper -eq "Finance")
  70. {
  71.     $testOU = "Administrative personnel"
  72.    
  73.    
  74.  
  75. }
  76. elseif ($grupper -eq "HR")
  77. {
  78.     $testOU = "Administrative personnel"
  79.    
  80.      
  81. }
  82. elseif ($grupper -eq "Ledning")
  83. {
  84.     $testOU = "Administrative personnel"
  85.    
  86. }    
  87.  
  88. **Ovan ses en if-sats där scriptet tittar om $grupper = "någon grupp". Om detta är sant sätts den personen i det OU som sätts med variabeln $testOU **
  89.  
  90. $testOU = New-Object system.directoryservices.directoryentry ("LDAP://OU=$testOU,OU=Accounts,DC=ford,DC=nsa,DC=his,DC=se")
  91.  
  92.  
  93. **Här sätts variabeln testOU till det som variabeln $grupper satts till**
  94.  
  95.  
  96. $searcher = New-Object system.directoryservices.directorysearcher("LDAP://OU=$testOU,OU=Accounts,DC=ford,DC=nsa,DC=his,DC=se")
  97.  
  98. $search = 1
  99.  
  100. $add = 0
  101.  
  102. $usernameold = $username
  103.  
  104. while($search -eq 1)
  105.  
  106. {
  107.  
  108. $searcher.filter = "(&(objectClass=user)(sAMAccountName=$Username))"
  109.  
  110. $result = $searcher.FindAll()
  111.     if($result.count -gt 0)
  112.         {
  113.                 $add++
  114.                 $username = $usernameold + $add
  115.         }
  116.             else
  117.             {
  118.                 $search = 0
  119.             }
  120. }
  121.  
  122.  
  123. **Ovan ses en while-loop som används i det läge då det finns två användare med samma namn. Den nyaste av dessa döps då med en etta efter namnet. Kommer det sedan en till, så blir det en tvåa.**
  124.  
  125.  
  126. # Set necessary properties
  127.  
  128. $userAccount = $testOU.psbase.get_children().add("CN=$Firstname $Lastname ($username)","User")
  129.  
  130. $userAccount.put("userPrincipalName", $username)
  131.  
  132. $userAccount.put("sAMAccountName", $username)
  133.  
  134. $userAccount.put("sn", $Lastname)
  135.  
  136. $userAccount.put("mail", $email)
  137.  
  138. $userAccount.put("givenName", $Firstname)
  139.  
  140.  
  141. $userAccount.psbase.CommitChanges()
  142.  
  143. $userAccount.SetPassword($row.Password)
  144.  
  145. $userAccount.psbase.Invoke("SetPassword", "Syp9595")
  146.  
  147.  
  148. # Enable the user account
  149.  
  150. $userAccount.psbase.InvokeSet("AccountDisabled", $false)
  151.    
  152. # Commit changes again
  153.  
  154. $userAccount.psbase.CommitChanges()
  155.  
  156. if ($grupper -eq "Sales")
  157. {
  158.    
  159.     $testOU = "Sales"
  160.    
  161.     $group = New-Object system.directoryservices.directoryentry ("LDAP://CN=Sales,OU=Role,OU=Groups,DC=ford,DC=nsa,DC=his,DC=se")
  162.    
  163.     $userDN = $userAccount.distinguishedName
  164.    
  165.     $group.psbase.invoke("Add","LDAP://"+$userDN)
  166.    
  167.     $group.psbase.CommitChanges()
  168. }
  169. elseif ($grupper -eq "RND")
  170. {
  171.    
  172.     $testOU = "Research and Development"
  173.    
  174.     $group = New-Object system.directoryservices.directoryentry ("LDAP://CN=R&D,OU=Role,OU=Groups,DC=ford,DC=nsa,DC=his,DC=se")
  175.    
  176.     $userDN = $userAccount.distinguishedName
  177.    
  178.     $group.psbase.invoke("Add","LDAP://"+$userDN)
  179.    
  180.     $group.psbase.CommitChanges()
  181.    
  182. }
  183. elseif ($grupper -eq "Finance")
  184. {
  185.     $testOU = "Administrative personnel"
  186.    
  187.     $group = New-Object system.directoryservices.directoryentry ("LDAP://CN=Finance,OU=Role,OU=Groups,DC=ford,DC=nsa,DC=his,DC=se")
  188.    
  189.     $userDN = $userAccount.distinguishedName
  190.    
  191.     $group.psbase.invoke("Add","LDAP://"+$userDN)
  192.    
  193.     $group.psbase.CommitChanges()
  194.  
  195. }
  196. elseif ($grupper -eq "HR")
  197. {
  198.     $testOU = "Administrative personnel"
  199.    
  200.     $group = New-Object system.directoryservices.directoryentry ("LDAP://CN=AP,OU=Role,OU=Groups,DC=ford,DC=nsa,DC=his,DC=se")
  201.    
  202.     $userDN = $userAccount.distinguishedName
  203.    
  204.     $group.psbase.invoke("Add","LDAP://"+$userDN)
  205.    
  206.     $group.psbase.CommitChanges()
  207.      
  208. }
  209. elseif ($grupper -eq "Ledning")
  210. {
  211.    
  212.     $testOU = "Administrative personnel"
  213.    
  214.     $group = New-Object system.directoryservices.directoryentry ("LDAP://CN=Executives,OU=Role,OU=Groups,DC=ford,DC=nsa,DC=his,DC=se")
  215.    
  216.     $userDN = $userAccount.distinguishedName
  217.    
  218.     $group.psbase.invoke("Add","LDAP://"+$userDN)
  219.    
  220.     $group.psbase.CommitChanges()
  221. }    
  222.    
  223.    
  224. **Ovan följer en liknande if-sats, fast där personen läggs i rätt säkerhetsgrupp. Ett exempel: om personen har satts i OUt "Administrative personnel" så sätts variabeln "group" till Executives.**
  225.  
  226.  
  227. #echo $username $lastname $firstname $role $password        
  228.  
  229. }
Add Comment
Please, Sign In to add comment