Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Import-Module ActiveDirectory
- Import-Module PSGSuite
- <#
- .SYNOPSIS
- Skapar en ny användare i MediaGymnasiets AD och G Suite for Education.
- .DESCRIPTION
- Skapar en ny användare i MediaGymnasiets AD och G Suite for Education.
- Användaren kan vara en av tre användartyper:
- - Elev
- - Lärare
- - Personal
- .PARAMETER FirstName
- Användarens förnamn
- .PARAMETER LastName
- Användarens efternamn
- .PARAMETER ClearPass
- Användarens lösenord
- .PARAMETER UserType
- Användartyp: Giltiga alternativ är: Elev, Lärare, Personal
- .PARAMETER StudentYear
- Om användaren är en elev och hen inte har åk1 samma år som kontot skapas anges klassår här
- .PARAMETER Disabled
- Om Disabled anges skapas användaren inaktiverad i MGs AD
- .EXAMPLE
- PS C:\> New-MGUser -FirstName "Göran" -LastName "Västergren" -UserType "Lärare"
- Skapar användaren Göran Västergren av typen Lärare
- .EXAMPLE
- PS C:\> New-MGUser -FirstName "Göran" -LastName "Västergren" -UserType "Lärare" -Disabled
- Skapar den icke aktiverade användaren Göran Västergren av typen Lärare
- .EXAMPLE
- PS C:\> New-MGUser -FirstName "Göran" -LastName "Västergren" -UserType "Elev" -StudentYear "17"
- Skapar användaren Göran Västergren av typen Elev med skolstart 2017
- #>
- function New-MGUser {
- [CmdletBinding()]
- [OutputType([int])]
- param(
- [Parameter(Mandatory=$true)]
- [string]$FirstName,
- [Parameter(Mandatory=$true)]
- [string]$LastName,
- [Parameter(Mandatory=$true)]
- [string]$ClearPass,
- [Parameter(Mandatory=$true)]
- [ValidateSet('Elev','Lärare','Personal')]
- [string]$UserType,
- [Parameter(Mandatory=$false)]
- [string]$StudentYear = (Get-Date -Format yy),
- [Parameter(Mandatory=$false)]
- [switch]$Disabled
- )
- $securePass = ConvertTo-SecureString $ClearPass -AsPlainText -Force
- $studentOU = "OU=$StudentYear,OU=Elever," + $baseUserOU
- $teacherOU = "OU=Lärare,OU=Personal," + $baseUserOU
- $staffOU = "OU=Administrativa,OU=Personal," + $baseUserOU
- $fixedFirst = (Convert-SpecialCharacters -Name $FirstName)
- $fixedLast = (Convert-SpecialCharacters -Name $LastName)
- <#NOTE: Hitta bästa sättet att ange användarnamn själv
- - Om användarnamnen redan är tagna ska det finnas möjlighet att själv ange användarnamn
- #>
- if ($UserType.ToLower() -eq 'elev') {
- $samAccountName = (New-MGStudentAccountName -FirstName $fixedFirst -LastName $fixedLast -StudentYear $StudentYear)
- <#
- In the New-MGStudentAccountName function it fails if student year + two initals + four initals (17altudy) and
- student year + three initals + three initals (17alatud)
- #>
- $userOU = $studentOU
- $gsUserOU = "/Elever/" + $StudentYear
- }
- elseif ($UserType.ToLower() -eq 'lärare') {
- $samAccountName = $fixedFirst
- if ((Get-ADUser -Filter {sAMAccountName -eq $fixedFirst})) {
- Write-Warning -Message "$samAccountName används redan."
- $samAccountName = $fixedFirst + $fixedLast.Substring(0,1)
- <#
- This is where it fails for teachers if both lower case first name (alan)
- and lower case first name lower case initial (alant) is taken.
- #>
- }
- $userOU = $teacherOU
- }
- elseif ($UserType.ToLower() -eq 'personal') {
- $samAccountName = $fixedFirst
- if ((Get-ADUser -Filter {sAMAccountName -eq $fixedFirst})) {
- Write-Warning -Message "$samAccountName används redan."
- $samAccountName = $fixedFirst + $fixedLast.Substring(0,1)
- <#
- This is where it fails for Staff if both lower case first name (alan)
- and lower case first name lower case initial (alant) is taken.
- #>
- }
- $userOU = $staffOU
- }
- else {
- Write-Warning -Message "Ogiltig användartyp."
- Break
- }
- if ($Disabled.IsPresent) {
- $activationStatus = $false
- }
- else {
- $activationStatus = $true
- }
- $user = @{
- "Name" = $samAccountName
- "SamAccountName" = $samAccountName
- "GivenName" = $FirstName
- "SurName" = $LastName
- "DisplayName" = $FirstName + ' ' + $LastName
- "AccountPassword" = $securePass
- "Path" = $userOU
- "EmailAddress" = $samAccountName + "@mediagymnasiet.se"
- "HomeDirectory" = $userFolder + $samAccountName
- "HomeDrive" = "U:"
- "ProfilePath" = $profileFolder + $samAccountName
- "EmployeeID" = $ClearPass
- "Description" = $ClearPass
- "ChangePasswordAtLogon" = $true
- "Enabled" = $activationStatus
- }
- $gsUser = @{
- "PrimaryEmail" = $samAccountName + "@mediagymnasiet.se"
- "GivenName" = $FirstName
- "FamilyName" = $LastName
- "Password" = $securePass
- "OrgUnitPath" = $gsUserOU
- "ChangePasswordAtNextLogin" = $true
- "IncludeInGlobalAddressList" = $true
- }
- "-----------------------------"
- "Användarnamn:`t" + $user["Name"]
- "Namn:`t`t" + $user["DisplayName"]
- "Lösenord:`t" + $ClearPass
- if ($userType.ToLower() -eq 'elev') {
- "Användartyp:`t" + $UserType + " (åk " + $StudentYear + ")"
- }
- else {
- "Användartyp:`t" + $UserType
- }
- "-----------------------------"
- $createUser = Read-Host -Prompt "Är detta OK (j/N)"
- if (($createUser.ToLower() -eq "j") -or ($createUser.ToLower() -eq "ja")) {
- New-ADUser @user
- # New-AccountDirectory -samAccountName $samAccountName -UserType $UserType
- New-GSUser @gsUser
- Add-UserToGroup -samAccountName $samAccountName -UserType $userType -StudentYear $StudentYear
- Add-GSUserToGroup -samAccountName $samAccountName -UserType $userType -StudentYear $StudentYear
- }
- else {
- Write-Warning -Message "Användaren skapades inte."
- Break
- }
- $sendWelcomeMail = Read-Host -Prompt "Skicka välkomstmejl till användaren (J/n)"
- if (($sendWelcomeMail.ToLower() -eq "j") -or ($sendWelcomeMail.ToLower() -eq "ja")) {
- Import-Module MGAdmin
- if (($UserType.ToLower() -eq "lärare") -or ($UserType.ToLower() -eq "personal")) {
- Send-MGWelcomeMailOnce -Recipient $samAccountName -FirstName $FirstName -LastName $LastName
- }
- elseif ($UserType.ToLower() -eq "elev") {
- Send-MGStudentMailOnce -Recipient $samAccountName -FirstName $FirstName -LastName $LastName
- }
- else {
- Write-Warning -Message "Ogiltig användartyp!"
- }
- }
- } # Close New-MGUser
Add Comment
Please, Sign In to add comment