Also see: Generate Random Passwords.
Change Password for users with specific UPN-suffix:
$upnSuffix = "@domain.com"
# Importeer de Active Directory-module
Import-Module ActiveDirectory
# Functie om random wachtwoorden te genereren die voldoen aan de vereisten
function Generate-RandomPassword {
$consonants = "bcdfghjklmnpqrstvwxyz"
$vowels = "aeiou"
$numbers = 0..9 | ForEach-Object { "$_" }
$specialChar = "!"
# Eerste karakter is een hoofdletter medeklinker
$password = (Get-Random -InputObject $consonants.ToCharArray() -Count 1).ToString().ToUpper()
# Vervolgkarakters zijn afwisselend kleine medeklinkers en klinkers
for ($i = 0; $i -lt 3; $i++) {
$password += (Get-Random -InputObject $vowels.ToCharArray() -Count 1)
$password += (Get-Random -InputObject $consonants.ToCharArray() -Count 1)
}
# Voeg 6 willekeurige cijfers toe
$password += (Get-Random -InputObject $numbers -Count 6) -join ''
# Voeg het speciale teken toe
$password += $specialChar
return $password
}
# Haal alle gebruikers op
$users = Get-ADUser -Filter * -Properties UserPrincipalName
# Filter de gebruikers die eindigen op het specifieke UPN-suffix
$filteredUsers = $users | Where-Object { $_.UserPrincipalName -like "*$upnSuffix" }
# Lijst om gegenereerde wachtwoorden op te slaan
$generatedPasswords = @()
# Loop door elk gebruikersaccount en reset het wachtwoord
foreach ($user in $filteredUsers) {
# Genereer een nieuw wachtwoord met de Generate-RandomPassword functie
$generatedPassword = Generate-RandomPassword
# Stel het wachtwoord in voor het huidige gebruikersaccount
Set-ADAccountPassword -Identity $user -Reset -NewPassword (ConvertTo-SecureString -AsPlainText $generatedPassword -Force)
# Voeg het gebruikersaccount en het gegenereerde wachtwoord toe aan de lijst
$generatedPasswords += [PSCustomObject]@{
User = $user.UserPrincipalName
Password = $generatedPassword
}
}
# Exporteer de gebruikersaccounts en gegenereerde wachtwoorden naar een CSV-bestand
$DateFolder = (Get-Date).ToString("yyyyMMdd")
$generatedPasswords | Export-Csv -Path "C:\Wachtwoorden-$DateFolder.csv" -NoTypeInformation
Write-Output "Wachtwoorden zijn gereset en geƫxporteerd naar C:\Wachtwoorden-$DateFolder.csv."
Change Password for specified users:
$upnList = @(
"User@domain.tld",
"User2@domain.tld"
)
# Importeer de Active Directory-module
Import-Module ActiveDirectory
# Functie om random wachtwoorden te genereren die voldoen aan de vereisten
function Generate-RandomPassword {
$consonants = "bcdfghjklmnpqrstvwxyz"
$vowels = "aeiou"
$numbers = 0..9 | ForEach-Object { "$_" }
$specialChar = "!"
# Eerste karakter is een hoofdletter medeklinker
$password = (Get-Random -InputObject $consonants.ToCharArray() -Count 1).ToString().ToUpper()
# Vervolgkarakters zijn afwisselend kleine medeklinkers en klinkers
for ($i = 0; $i -lt 3; $i++) {
$password += (Get-Random -InputObject $vowels.ToCharArray() -Count 1)
$password += (Get-Random -InputObject $consonants.ToCharArray() -Count 1)
}
# Voeg 6 willekeurige cijfers toe
$password += (Get-Random -InputObject $numbers -Count 6) -join ''
# Voeg het speciale teken toe
$password += $specialChar
return $password
}
# Lijst om gegenereerde wachtwoorden op te slaan
$generatedPasswords = @()
# Loop door elke UPN en reset het wachtwoord
foreach ($upn in $upnList) {
try {
# Zoek de gebruiker op basis van UPN
$user = Get-ADUser -Filter "UserPrincipalName -eq '$upn'" -Properties UserPrincipalName
if ($user) {
# Genereer een nieuw wachtwoord met de Generate-RandomPassword functie
$generatedPassword = Generate-RandomPassword
# Stel het wachtwoord in voor het huidige gebruikersaccount
Set-ADAccountPassword -Identity $user -Reset -NewPassword (ConvertTo-SecureString -AsPlainText $generatedPassword -Force)
# Voeg het gebruikersaccount en het gegenereerde wachtwoord toe aan de lijst
$generatedPasswords += [PSCustomObject]@{
User = $user.UserPrincipalName
Password = $generatedPassword
}
Write-Output "Wachtwoord gereset voor: $upn"
} else {
Write-Warning "Gebruiker niet gevonden: $upn"
}
} catch {
Write-Error "Fout bij het resetten van wachtwoord voor $upn : $_"
}
}
# Exporteer de gebruikersaccounts en gegenereerde wachtwoorden naar een CSV-bestand
$DateFolder = (Get-Date).ToString("yyyyMMdd")
$generatedPasswords | Export-Csv -Path "C:\Wachtwoorden-$DateFolder.csv" -NoTypeInformation -Encoding UTF8
Write-Output "Wachtwoorden zijn gereset en geƫxporteerd naar C:\Wachtwoorden-$DateFolder.csv."