Guest User

Untitled

a guest
Jan 24th, 2019
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.04 KB | None | 0 0
  1. Import-Module ActiveDirectory
  2. Import-Module PSGSuite
  3. <#
  4. .SYNOPSIS
  5. Skapar en ny användare i MediaGymnasiets AD och G Suite for Education.
  6. .DESCRIPTION
  7. Skapar en ny användare i MediaGymnasiets AD och G Suite for Education.
  8. Användaren kan vara en av tre användartyper:
  9. - Elev
  10. - Lärare
  11. - Personal
  12. .PARAMETER FirstName
  13. Användarens förnamn
  14. .PARAMETER LastName
  15. Användarens efternamn
  16. .PARAMETER ClearPass
  17. Användarens lösenord
  18. .PARAMETER UserType
  19. Användartyp: Giltiga alternativ är: Elev, Lärare, Personal
  20. .PARAMETER StudentYear
  21. Om användaren är en elev och hen inte har åk1 samma år som kontot skapas anges klassår här
  22. .PARAMETER Disabled
  23. Om Disabled anges skapas användaren inaktiverad i MGs AD
  24. .EXAMPLE
  25. PS C:\> New-MGUser -FirstName "Göran" -LastName "Västergren" -UserType "Lärare"
  26. Skapar användaren Göran Västergren av typen Lärare
  27. .EXAMPLE
  28. PS C:\> New-MGUser -FirstName "Göran" -LastName "Västergren" -UserType "Lärare" -Disabled
  29. Skapar den icke aktiverade användaren Göran Västergren av typen Lärare
  30. .EXAMPLE
  31. PS C:\> New-MGUser -FirstName "Göran" -LastName "Västergren" -UserType "Elev" -StudentYear "17"
  32. Skapar användaren Göran Västergren av typen Elev med skolstart 2017
  33. #>
  34. function New-MGUser {
  35. [CmdletBinding()]
  36. [OutputType([int])]
  37. param(
  38. [Parameter(Mandatory=$true)]
  39. [string]$FirstName,
  40. [Parameter(Mandatory=$true)]
  41. [string]$LastName,
  42. [Parameter(Mandatory=$true)]
  43. [string]$ClearPass,
  44. [Parameter(Mandatory=$true)]
  45. [ValidateSet('Elev','Lärare','Personal')]
  46. [string]$UserType,
  47. [Parameter(Mandatory=$false)]
  48. [string]$StudentYear = (Get-Date -Format yy),
  49. [Parameter(Mandatory=$false)]
  50. [switch]$Disabled
  51. )
  52.  
  53. $securePass = ConvertTo-SecureString $ClearPass -AsPlainText -Force
  54.  
  55. $studentOU = "OU=$StudentYear,OU=Elever," + $baseUserOU
  56. $teacherOU = "OU=Lärare,OU=Personal," + $baseUserOU
  57. $staffOU = "OU=Administrativa,OU=Personal," + $baseUserOU
  58.  
  59. $fixedFirst = (Convert-SpecialCharacters -Name $FirstName)
  60. $fixedLast = (Convert-SpecialCharacters -Name $LastName)
  61.  
  62. <#NOTE: Hitta bästa sättet att ange användarnamn själv
  63. - Om användarnamnen redan är tagna ska det finnas möjlighet att själv ange användarnamn
  64. #>
  65.  
  66. if ($UserType.ToLower() -eq 'elev') {
  67. $samAccountName = (New-MGStudentAccountName -FirstName $fixedFirst -LastName $fixedLast -StudentYear $StudentYear)
  68. <#
  69. In the New-MGStudentAccountName function it fails if student year + two initals + four initals (17altudy) and
  70. student year + three initals + three initals (17alatud)
  71. #>
  72.  
  73. $userOU = $studentOU
  74. $gsUserOU = "/Elever/" + $StudentYear
  75. }
  76. elseif ($UserType.ToLower() -eq 'lärare') {
  77. $samAccountName = $fixedFirst
  78. if ((Get-ADUser -Filter {sAMAccountName -eq $fixedFirst})) {
  79. Write-Warning -Message "$samAccountName används redan."
  80. $samAccountName = $fixedFirst + $fixedLast.Substring(0,1)
  81. <#
  82. This is where it fails for teachers if both lower case first name (alan)
  83. and lower case first name lower case initial (alant) is taken.
  84. #>
  85. }
  86. $userOU = $teacherOU
  87. }
  88. elseif ($UserType.ToLower() -eq 'personal') {
  89. $samAccountName = $fixedFirst
  90. if ((Get-ADUser -Filter {sAMAccountName -eq $fixedFirst})) {
  91. Write-Warning -Message "$samAccountName används redan."
  92. $samAccountName = $fixedFirst + $fixedLast.Substring(0,1)
  93. <#
  94. This is where it fails for Staff if both lower case first name (alan)
  95. and lower case first name lower case initial (alant) is taken.
  96. #>
  97. }
  98. $userOU = $staffOU
  99. }
  100. else {
  101. Write-Warning -Message "Ogiltig användartyp."
  102. Break
  103. }
  104.  
  105. if ($Disabled.IsPresent) {
  106. $activationStatus = $false
  107. }
  108. else {
  109. $activationStatus = $true
  110. }
  111.  
  112. $user = @{
  113. "Name" = $samAccountName
  114. "SamAccountName" = $samAccountName
  115. "GivenName" = $FirstName
  116. "SurName" = $LastName
  117. "DisplayName" = $FirstName + ' ' + $LastName
  118. "AccountPassword" = $securePass
  119. "Path" = $userOU
  120. "EmailAddress" = $samAccountName + "@mediagymnasiet.se"
  121. "HomeDirectory" = $userFolder + $samAccountName
  122. "HomeDrive" = "U:"
  123. "ProfilePath" = $profileFolder + $samAccountName
  124. "EmployeeID" = $ClearPass
  125. "Description" = $ClearPass
  126. "ChangePasswordAtLogon" = $true
  127. "Enabled" = $activationStatus
  128. }
  129.  
  130. $gsUser = @{
  131. "PrimaryEmail" = $samAccountName + "@mediagymnasiet.se"
  132. "GivenName" = $FirstName
  133. "FamilyName" = $LastName
  134. "Password" = $securePass
  135. "OrgUnitPath" = $gsUserOU
  136. "ChangePasswordAtNextLogin" = $true
  137. "IncludeInGlobalAddressList" = $true
  138. }
  139.  
  140. "-----------------------------"
  141. "Användarnamn:`t" + $user["Name"]
  142. "Namn:`t`t" + $user["DisplayName"]
  143. "Lösenord:`t" + $ClearPass
  144. if ($userType.ToLower() -eq 'elev') {
  145. "Användartyp:`t" + $UserType + " (åk " + $StudentYear + ")"
  146. }
  147. else {
  148. "Användartyp:`t" + $UserType
  149. }
  150. "-----------------------------"
  151. $createUser = Read-Host -Prompt "Är detta OK (j/N)"
  152.  
  153. if (($createUser.ToLower() -eq "j") -or ($createUser.ToLower() -eq "ja")) {
  154. New-ADUser @user
  155. # New-AccountDirectory -samAccountName $samAccountName -UserType $UserType
  156. New-GSUser @gsUser
  157. Add-UserToGroup -samAccountName $samAccountName -UserType $userType -StudentYear $StudentYear
  158. Add-GSUserToGroup -samAccountName $samAccountName -UserType $userType -StudentYear $StudentYear
  159. }
  160. else {
  161. Write-Warning -Message "Användaren skapades inte."
  162. Break
  163. }
  164.  
  165. $sendWelcomeMail = Read-Host -Prompt "Skicka välkomstmejl till användaren (J/n)"
  166.  
  167. if (($sendWelcomeMail.ToLower() -eq "j") -or ($sendWelcomeMail.ToLower() -eq "ja")) {
  168. Import-Module MGAdmin
  169. if (($UserType.ToLower() -eq "lärare") -or ($UserType.ToLower() -eq "personal")) {
  170. Send-MGWelcomeMailOnce -Recipient $samAccountName -FirstName $FirstName -LastName $LastName
  171. }
  172. elseif ($UserType.ToLower() -eq "elev") {
  173. Send-MGStudentMailOnce -Recipient $samAccountName -FirstName $FirstName -LastName $LastName
  174. }
  175. else {
  176. Write-Warning -Message "Ogiltig användartyp!"
  177. }
  178. }
  179.  
  180. } # Close New-MGUser
Add Comment
Please, Sign In to add comment