| Function ResetPassword{[CmdletBinding(DefaultParameterSetName=”UPN”)]
 Param (
 [Parameter(ParameterSetName=”UPN”,Position=0)]
 [string]$UPN,
 [string]$NextLogon
 ) #end Param
 if (!$UPN) {
 Write-Host “”
 Write-Host “* Please provide the UPN: ” -NoNewline
 $UPN = Read-Host
 } #end if
 if (!$NextLogon) {
 Write-Host “”
 Write-Host “* Change @ next logon Ja/Yes / Nee/No : ” -NoNewline
 $NextLogon = Read-Host
 } #end if
 Import-Module posh-ssh # Import module posh-SSH voor de ssh connectie naar de Pi #Clear-Variable -Name mobile # Clear Variable MobileClear-Variable -Name Mob* # Clear Variable Mob*
 Clear-Variable -Name Sam* # Clear Variable SamAccountname
 Clear-Variable -Name Ident* # Clear Variable Identity
 ### SSH verbinding maken met Pi
 $Samaccountname = get-aduser -Filter {UserPrincipalName -eq $Upn} -Properties * # UserPrincipalName omzetten naar SamAccounNAme
 $Indentity = $Samaccountname.Samaccountname
 $mobile = $Samaccountname.mobile # mobiel nummer uit AD halen
 ## E-mail settings$sendingmailAdminAccount = (((Get-ADUser -Identity $Env:USERNAME).Surname).Split(“-“)[0]).Trim()
 $sendingmailUserAccount = Get-ADUser -SearchBase “DC=contoso,DC=local” -Filter {surname -like $sendingmailAdminAccount} -Properties Mail
 $sendingmailUserAccount1 = $sendingmailUserAccount.Mail
 $sendingmailSMTPServer = “”
 $sendingmailSMTPUser = “”
 $sendingmailSMTPPass = “”| Convertto-SecureString -AsPlainText -Force
 $sendingmailVincentvanUne = “usermail”
 $sendingmailcredentials = New-Object System.Management.Automation.Pscredential -Argumentlist $sendingmailSMTPUser,$sendingmailSMTPPass
 $sendingmailfiles = get-childitem $logdir | where name -like “*error*.txt”
 $sendingmailbody = @()
 $sendingmailattachments = @()
 function Get-RandomCharacters($length, $characters) {
 $random = 1..$length | ForEach-Object { Get-Random -Maximum $characters.length }
 $private:ofs=””
 return [String]$characters[$random]
 }
 
 function Scramble-String([string]$inputString){
 $characterArray = $inputString.ToCharArray()
 $scrambledStringArray = $characterArray | Get-Random -Count $characterArray.Length
 $outputString = -join $scrambledStringArray
 return $outputString
 }
 $pwdcharacter += Get-RandomCharacters -length 1 -characters ‘!@#$%&*()’ $words = “Wachtwoordvergeten”, “Nieuwwachtwoord”, “Wachtwoordreset”, “Complexwachtwoord” ,”Wachtwoordverzoek”, “Companyciviel”$string = (Get-Random -InputObject $words) + “$pwdcharacter”+ (Get-Random -Maximum 99 )
 $password = (get-culture).TextInfo.ToTitleCase($string)
 $pwd = convertto-securestring $password -asplaintext -force$newPassword = $pwd
 if($samaccountname.CanonicalName -like “contoso.local/CVNL/EXTERN/*”){Set-ADAccountPassword -Identity $Indentity -NewPassword $newPassword -Reset -PassThru | Set-ADuser -ChangePasswordAtLogon $False # AD aanpassing nieuwe wachtwoord waarbij het wachtwoord bij volgende login opnieuw ingevuld moet worden
 } # controle of user in Externe ou zit zodat het wachtwoord next login niet uitgevoerd word
 if(($NextLogon -eq “yes” )-or ($NextLogon -eq “ja”)-or ($NextLogon -eq “Ja”)-or ($NextLogon -eq “Yes”)){
 Set-ADAccountPassword -Identity $Indentity -NewPassword $newPassword -Reset -PassThru | Set-ADuser -ChangePasswordAtLogon $True # AD aanpassing nieuwe wachtwoord waarbij het wachtwoord bij volgende login niet opnieuw ingevuld moet worden
 }
 if(($NextLogon -eq “nee” )-or ($NextLogon -eq “no”) -or ($NextLogon -eq “Nee” )-or ($NextLogon -eq “No”)){
 Set-ADAccountPassword -Identity $Indentity -NewPassword $newPassword -Reset -PassThru | Set-ADuser -ChangePasswordAtLogon $False
 }
 else
 {write-host -ForegroundColor Red “Change @ next Logon is niet ingevuld”
 
 Write-Host “* Change @ next logon Ja/Yes / Nee/No : ” -NoNewline
 $NextLogon = Read-Host}
 if($mobile -ne $null){
 $mobile2 = $mobile.replace(‘ ‘,”) # uitfilteren van spaties
 Write-Host “” 
function pi-login{ $username = “pi”                                                                                                                            # Username Pi $pipwd = “raspberry”                                                                                                                        # Password Pi $secstr = New-Object -TypeName System.Security.SecureString                                                                                 # Convert pipwd to string $pipwd.ToCharArray() | ForEach-Object {$secstr.AppendChar($_)}                                                                     $cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $secstr                                     # Samenvoegen Credentials $RaspberryPi = “192.168.1.68”                                                                                                                # Server Adres Pi New-SSHSession -ComputerName $RaspberryPi -Credential $cred -AcceptKey                                                                      # Connectie naar Raspberry Pi } ## Versturen via SMS
 pi-login
 Invoke-SshCommand -index 0 -Command “echo ‘Uw tijdelijke nieuwe wachtwoord = $password’ Bij het aanmelden zal u uw wachtwoord moeten wijzigen | sudo gammu sendsms TEXT ‘$mobile2′”; # ssh command uitvoeren om Nieuwe password te versturen Get-SSHSession | Remove-SshSession; # Disconnect sessionscls
 Write-Host “”
 Write-Host -ForegroundColor Yellow “Password is reset SMS word verstuurd naar $mobile2”
 Write-Host “”
 # Sending E-mail$sendingmailbody += ” Beste $sendingmailUserAccount2<br/> <br/>van de onderstaande account is het nieuwe wachtwoord per SMS verzonden <br/> <br/> <b>UserPrincipalName = $Upn </b><br/> <br/> <b> SamAccountName = $Indentity <br/> </b><br/>Dit is verzonden naar het volgende mobiele nummer <br/><br/>– > <b>$mobile</B> <—<br/><br/> deze stond ingevuld in ActiveDirectory <br/>”
 $sendingmailbody = $sendingmailbody | Out-String
 Send-MailMessage -to $sendingmailUserAccount.Mail -From $sendingmailSMTPUser -Credential $sendingmailcredentials -SmtpServer $sendingmailSMTPServer -Subject “Wachtwoord Reset is uitgevoerd” -BodyAsHtml $sendingmailbody
 }
 else {
 Write-Host “”Write-Host -ForegroundColor Red “Password is niet gereset omdat er geen mobiel nummer ingevuld is in AD”
 Write-Host “”
 # Sending E-mail$sendingmailbody += ” Beste $sendingmailUserAccount2<br/><br/> van de onderstaande account kon de wachtwoord SMS niet verzonden worden <br/> <br/> <b>UserPrincipalName = $Upn </b><br/> <br/> <b> SamAccountName = $Indentity <br/> </b><br/>Dit is omdat hoogstwaarschijnlijk het mobiele nummer <br/><br/>– > <b>$mobile</B> <—<br/><br/> niet goed is ingevuld in Active Directory<br/><br/> Om de wachtwoord reset te kunnen uitvoeren zal dit in Active Directory gecorrigeerd moeten worden”
 $sendingmailbody = $sendingmailbody | Out-String
 Send-MailMessage -to $sendingmailUserAccount.Mail -From $sendingmailSMTPUser -Credential $sendingmailcredentials -SmtpServer $sendingmailSMTPServer -Subject “Wachtwoord Reset is niet uitgevoerd” -BodyAsHtml $sendingmailbody
 }
 }
 |