Jak posílat mailem zprávy o konci platnosti hesla
Jak dostat ke všem informaci o konci platnosti hesla
Platnost vašeho hesla vyprší za X dní    

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. :-)

Poslední aktualizace - Sobota, 28. Května 2016 10:42
 
 
 
Page 1 of 1
© TNX alias Jan Kovář. Původní design stránky byl určen pro CMS Joomla! a vytvořen společností Siteground web hosting