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 Mobile Clear-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 sessions cls 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 } }
|