Oké, tenzij je onder een steen leeft, is het je waarschijnlijk wel opgevallen dat, hoewel Microsoft sommige wachtwoordregels heeft versoepeld, de meeste on-premise Active Directory-omgevingen nog steeds een wachtwoordvervaldatum hanteren. En het komt regelmatig voor dat gebruikers vergeten hun wachtwoorden op tijd bij te werken, wat leidt tot die vervelende telefoontjes naar de IT-afdeling – iets waar niemand op zit te wachten. In dit artikel leggen we uit hoe je kunt controleren wanneer een wachtwoord van een gebruiker verloopt en hoe je die gebruiker daar van tevoren aan kunt herinneren.
Sommige dingen zijn vrij eenvoudig, maar Windows kan soms wat sluw zijn met de manier waarop het vervaldatummeldingen afhandelt. Dus als je die chaos van “wachtwoord gisteren verlopen” wilt voorkomen, kan het handig zijn om te weten hoe je vervaldatums kunt achterhalen en waarschuwingen kunt instellen. Je leert hoe je met PowerShell informatie over wachtwoordvervaldatums kunt bekijken, ingebouwde meldingen kunt inschakelen en zelfs aangepaste pop-ups of e-mailwaarschuwingen kunt maken. Want eerlijk gezegd, een waarschuwing vooraf is altijd beter dan een blokkering.
Hoe los ik meldingen over verlopen wachtwoorden voor Active Directory-gebruikers op?
Hoe krijg ik de vervaldatum van een gebruikerswachtwoord in Active Directory?
Ten eerste moet je weten wanneer wachtwoorden daadwerkelijk verlopen, anders zijn alle meldingen slechts giswerk. Het belangrijkste voordeel hiervan is dat je een duidelijke deadline hebt om gebruikers van tevoren te waarschuwen, bijvoorbeeld een paar dagen van tevoren, zodat ze de kans krijgen om hun wachtwoord zonder gedoe te wijzigen. Soms zijn de ingebouwde meldingen niet voldoende; ze verschijnen als kleine pop-upberichten en de meeste mensen negeren ze – totdat het te laat is. Door de exacte vervaldatum te zien, kun je betere herinneringen opstellen.
Om dat te doen, voert u de volgende PowerShell-opdracht uit (u moet de Active Directory-module geïnstalleerd hebben):
Get-ADUser -Identity jsmith -Properties msDS-UserPasswordExpiryTimeComputed, PasswordLastSet, PasswordNeverExpires, PasswordExpired | Select-Object -Property Name, PasswordLastSet, PasswordNeverExpires, PasswordExpired, @{Name="ExpiryDate"; Expression={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}}
Dit geeft gegevens weer zoals wanneer ze voor het laatst hun wachtwoord hebben gewijzigd en de berekende vervaldatum. Als je alle gebruikers in een bepaalde OU wilt weergeven waarvan het wachtwoord binnenkort verloopt, kun je zoiets doen als:
$Users = Get-ADUser -SearchBase "OU=Users, OU=NewYork, DC=woshub, DC=com" -Filter {Enabled -eq $true -and PasswordNeverExpires -eq $false} -Properties msDS-UserPasswordExpiryTimeComputed $Users | Where-Object { ([datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")) -lt (Get-Date).AddDays(7) } | Select-Object Name, @{Name="ExpirationDate"; Expression={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}}
Opmerking: Als msDS-UserPasswordExpiryTimeComputed 0 retourneert, betekent dit meestal dat het wachtwoord nooit verloopt of dat het niet is ingesteld. Dit is handig om te weten als het gebruikersaccount vast lijkt te zitten.
Meldingen over verlopen wachtwoorden inschakelen via groepsbeleid
Als gebruikers de kleine pop-up die Windows standaard weergeeft blijven negeren (wat vaak gebeurt), kunt u het beleid ‘Interactieve aanmelding: Gebruiker vragen om wachtwoord te wijzigen vóór de vervaldatum’ inschakelen. U vindt dit in:
Computerconfiguratie > Beleid > Windows-instellingen > Beveiligingsinstellingen > Lokaal beleid > Beveiligingsopties.
Deze functie is meestal standaard ingeschakeld, met een waarschuwing van ongeveer 5 dagen. Maar vaak verschijnt het bericht zo kort dat niemand het opmerkt. Je kunt de waarschuwingsperiode verlengen – bijvoorbeeld naar 14 dagen – om gebruikers meer tijd te geven om zich voor te bereiden.
Aangepaste pop-ups weergeven met PowerShell
Hier wordt het wat praktischer. Je kunt een PowerShell-script maken dat een melding weergeeft als een wachtwoord binnen bijvoorbeeld 5 dagen verloopt. Het is een beetje vreemd, maar dit kleine script controleert of je wachtwoord binnenkort verloopt en vraagt vervolgens of je het nu wilt wijzigen.
$DaysLeft = 5 try { Add-Type -AssemblyName PresentationCore, PresentationFramework, WindowsBase, System. Windows. Forms } catch { Throw "Failed to load necessary assemblies." } $curruser = Get-ADUser -Identity $env:USERNAME -Properties 'msDS-UserPasswordExpiryTimeComputed', 'PasswordNeverExpires' if (-not $curruser. PasswordNeverExpires) { $expiry = [datetime]::FromFileTime($curruser."msDS-UserPasswordExpiryTimeComputed") $timediff = ($expiry - (Get-Date)).Days if ($timediff -lt $DaysLeft) { $result = [System. Windows. MessageBox]::Show($"Your password expires in { $timediff } days.`nChange now?", "Password Expiry Alert", "YesNo", "Warning") if ($result -eq "Yes") { # This part tries to open the standard Windows change password UI Start-Process "C:\Windows\System32\CredUIPackagesNotSupported.dll" # Placeholder for actual password change trigger } } }
Dit script vereist de Active Directory-module. Plan het in om te worden uitgevoerd bij het aanmelden of als onderdeel van het aanmeldingsscript van een gebruiker via Taakplanner of Groepsbeleid. Op sommige machines werkt het mogelijk niet direct en is een herstart of handmatige uitvoering nodig. Een beetje vreemd, maar handig als u proactieve waarschuwingen wilt ontvangen.
Houd er rekening mee dat dit alleen werkt op computers die lid zijn van uw Active Directory-domein. Als gebruikers op afstand verbinding maken via VPN of webtoegang (zoals Outlook Web Access), worden ze waarschijnlijk overgeslagen. In dat geval is het wellicht beter om gebruikers vooraf een e-mail te sturen.
Automatiseer het verzenden van vervaldatum-e-mails met PowerShell.
Als je liever e-mailherinneringen ontvangt, kun je de vervaldatum van je wachtwoord opvragen en gebruikers een herinnering sturen voordat hun wachtwoord verloopt. Het idee is simpel: voer een script uit dat controleert wie minder dan een week de tijd heeft en stuur ze een vriendelijke e-mail hierover.
$Sender = "[email protected]" $Subject = "Important! Your password is about to expire!" $BodyTxt1 = "Your password for " $BodyTxt2 = " expires in " $BodyTxt3 = " days. Please change it before it gets locked." $smtpServer = "smtp.woshub.com" $warnDays = (Get-Date).AddDays(7) $users = Get-ADUser -SearchBase "OU=Users, OU=NewYork, DC=woshub, DC=com" -Filter {Enabled -eq $true -and PasswordNeverExpires -eq $false} -Properties msDS-UserPasswordExpiryTimeComputed, EmailAddress | ForEach-Object { [PSCustomObject]@{ Name = $_. Name ExpirationDate = [datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed") Email = $_. EmailAddress } } foreach ($user in $users) { if ($user. ExpirationDate -lt $warnDays) { $daysLeft = ($user. ExpirationDate - (Get-Date)).Days $body = "$($BodyTxt1)$($user. Name)$($BodyTxt2)$daysLeft$($BodyTxt3)" Send-MailMessage -To $user. Email -From $Sender -SmtpServer $smtpServer -Subject $Subject -Body $body } }
Je moet dit script zo instellen dat het periodiek wordt uitgevoerd — waarschijnlijk als een geplande taak die dagelijks of zo wordt uitgevoerd. Voeg ook je SMTP-servergegevens toe. Er is niets bijzonders nodig, maar onthoud dat als je SMTP-server authenticatie vereist, je de parameter `-Credential` moet toevoegen. Het script kan zelfs worden aangepast om berichten via Teams of Slack te verzenden als je dat wilt. Je hoeft alleen maar de manier waarop die meldingen worden verzonden aan te passen.
Deze methoden maken wachtwoorden in ieder geval niet magisch, maar ze geven wel voldoende waarschuwing zodat gebruikers niet met een verlopen account komen te zitten. Hopelijk bespaart dit iemand een paar uur aan telefoontjes met de vraag: “Wie is vergeten Bob te vertellen dat zijn wachtwoord is verlopen?”
Samenvatting
- Gebruik PowerShell met `Get-ADUser` om de vervaldatum van wachtwoorden te controleren.
- Schakel de Windows-beveiligingsinstelling in voor meldingen vóór het verlopen van een wachtwoord – als gebruikers er tenminste daadwerkelijk aandacht aan besteden.
- Maak aangepaste pop-ups met een klein script dat de vervaldatum controleert en vraagt om deze te wijzigen.
- Automatiseer e-mailherinneringen voor gebruikers die bijna geen tijd meer hebben.
Samenvatting
Ik heb een manier gevonden om gebruikers te herinneren aan de vervaldatum van hun wachtwoorden zonder ze constant in de gaten te hoeven houden. Het is niet waterdicht, maar het is voldoende om een aantal van die meldingen als “wachtwoord gisteren verlopen” te voorkomen. Op één computer werkte het pop-upscript in het begin een paar pogingen goed, maar na wat aanpassingen is het betrouwbaar geworden. Je moet er alleen aan denken om het in te plannen en de scripts up-to-date te houden. Ik hoop dat dit iemand helpt om wachtwoordchaos op het laatste moment te voorkomen!