Původně jsem o tom psát ani nechtěl, protože je to strašně jednoduché. Ale protože jsem na to téma slyšel několik hovorů, tak to sem dám. Někomu se to může hodit.
Pokud máte všechny počítače v doméně a máte v Active Directory nastavenou plastnost hesla, tak se před vypršením hesla začne uživatelům zobrazovat po přihlášení informace,
že platnost jejich hesla končí a že si mají heslo změnit. Jenže uživatelé si toho často nevšimnou a na Windows 8.1 se to objeví jen na chvíli jako bublina. A to je ta lepší
varianta. Představte si, že máte PC někde ve skladu, PC není v doméně, ale uživatel má účet v doméně, aby mohl do mailu. Tomu se žádná hláška neobjeví. Stejně tak admini,
kteří mají v sítí OS X mašiny, říkají, že s tím mají problém. (Netuším, OS X neznám.) Takže tihle lidé by mohli dostávat informaci o konci platnosti hesla mailem.
My máme platnost hesla nastavenou na 90 dní, takže pokud máte jinou, tak si jen číslo 90 ve scriptu změňte na vaši délku platnosti hesla. Script se skládá ze dvou částí.
Jedna je samotný PowerShell script a druhá je textový soubor, kde mám uživatele, kteří chtějí dostávat informaci e-mailem a taky číslo, které říká, kolik dní před koncem
platnosti se má začít mai posílat. PowerShell script vypadá takto:
import-module ActiveDirectory
$users = import-csv c:\scripts\pwd_users.txt
foreach ($user in $users) {
$username = $user.username
$days = $user.days
$last = get-aduser $username -Properties * | select PasswordLastSet, EmailAddress
$today = get-date
$expire = ($last.passwordlastset).adddays(90)
$result = ($expire - $today).days
if ($result -le $days) {
$message = "You password will expire in $result days. Please change your password."
$subject = "You password will expire in $result days."
$from = "password@austin.cz"
$to = $last.EmailAddress
send-mailmessage -from $from -smtpserver relay.austin.cz -priority high -subject $subject -to $to -body $message
}
}
No a ten texťák vypadá nějak takto:
username,days
frantisek.koudelka,14
jan.kovar,10
alois.hujer,7
Začneme od texťáku. Z něj je vidět, že si každý uživatel může vybrat, jak dlouho před vypršením hesla, chce dostat mail. A pak ho dostávat každý den, dokud si heslo nezmění. Mám
uživatele, kterým stačí 3 dny i uživatele, kteří to chtějí 14 dnů dopředu. Oboje má svůj význam.
Ze scriptu je jasné, že se to dá spouštět jen tam, kde je nainstalovaný RSAT nebo aspoň možnost použít ActiveDirectory modul - takže jakýkoliv Exchange nebo DC, já to pouštím
na management serveru. Má to být plánovaná úloha, takže je lepší to mít na serveru než na stanici. Zbytek je jednoduchý. Script si načte seznam uživatelů z textového souboru. Pak je bere po jednom.
Vždy si pro uživatele načte e-mail adresu a datum, kdy si naposled nastavil heslo. K datumu nastavení hesla přičte 90 dní, což je u nás délka platnosti hesla. Od toho odečte dnešní
datum ve dnech. Pokud teda někdo změnil heslo dneska, tak bude rozdíl 90. A s každý uběhnutým dnem se rozdíl o jeden sníží. No a ve chvíli, kdy je stejný nebo menší než počet dnů, které
si uživatel definoval, tak se odešle zpráva.
A to je všechno. Říkal jsem, že je to jednoduché. Stačí nastavit script jako plánovanou úlohu. Pro testování použijte vlastní účet a nastavte si do textového souboru, že chcete
dostat informaci třeba 80 dnů předem. Pokud přijde správný výsledek, kolik dnů zbývá do vypršení, tak tam můžete dát nějaké rozumné číslo. A já můžu jít dělat oběd. Slíbil jsem
dětem na dnešek domácí hamburgry. :-)
|