Kérjen jelszó-visszaállítási információkat a felhasználók számára a Windows PowerShell parancsfájl segítségével
Be kell vallanom, hogy az utóbbi időben nagyon lenyűgöztem a PowerShell-t, és bár semmiképpen sem vagyok rendkívül jó, sikerült összeállítanom néhány hasznos szkriptet. A PowerShell tanulása közben találtam néhány megoldandó problémát, egyet. amiben meghatározható, hogy a felhasználó mikor változtatta meg utoljára a jelszavát, és hány napig telt el a jelszó újbóli megváltoztatása. Lehet, hogy nem találja hasznosnak ezt a szkriptet, de szemlélteti azt a testreszabási módot, amelyet a PowerShell segítségével elvégezhet a saját által választott feladatok elvégzéséhez.
Megjegyzés: Ennek a függvénynek a használata feltételezi, hogy vannak olyan fiókok, amelyek jelszavai lejárnak, bár a kimutatott fiókoknak is vannak érvénytelen jelszavai. Követelmény: Az Active Directory modult importálnia kell a PowerShell-munkamenetbe az import-modul aktív könyvtárának futtatásával, hogy ez a funkció megfelelően működjön.Elkezdeni
A probléma akkor kezdődött, amikor egy munkatársunk megkérdezte, hogy mikor állítják vissza a felhasználói fiók jelszavát. Az Active Directory nem adja meg pontosan ezeket az információkat, hogy láthassa, ami általában jó dolog. Ez jó alkalom volt arra, hogy kiderüljön, segíthet-e a PowerShell.
Funkció, szkript vagy interaktív parancssor
Bár ezek a módszerek működni fognak, és akár ugyanazt a kódot használják, gondoltam, hogy ez olyasvalami lehet, amelyet újra felhasználnék, ezért úgy döntöttem, hogy olyan függvényt hozunk létre, amely inkább egy cmdlet-hez hasonlóan viselkedik, amelyet profilszkriptbe is be lehet tölteni (de ez a rész egy újabb üzenet).
Get-pwdset függvény {
Param (paraméter (kötelező = $ true) string $ user)
A fenti kódban a get-pwdset függvényt a szükséges $ user paraméterrel definiáljuk, mint karakterláncot.
A függvény következő szakasza egy változót határoz meg, amely egy Active Directory felhasználói objektumot tárol, a megadott tulajdonságokkal a passwordneverexpires és a passwordlastset számára .
$ use = get-aduser $ user -properties passwordlastset, passwordneverexpires
A következő szakaszban úgy döntöttem, hogy ellenőrizze azokat a fiókokat, amelyek nem érvénytelen jelszavakkal rendelkeznek. Ennek célja az volt, hogy elkerülje a hibákat, ha olyan fiókokkal foglalkozik, amelyek még nem járnak le.
If ($ use.passwordneverexpires -eq $ true)
{
write-host $ user "utoljára állította be jelszavát a" $ use.passwordlastset "oldalon, ennek a fióknak egy érvénytelen jelszava van.
}
Ha a funkcióhoz átadott fióknak nincs lejárati jelszava, akkor az utolsó jelszó beállított dátum jelenik meg, és egy üzenet jelenik meg arról, hogy a fiók sárga jelzéssel rendelkezik a lejáró jelszóval.
Más
{
$ til = ((datetime :: FromFileTime ((get-aduser $ user -properties "msDS-UserPasswordExpiryTimeComputed"). "msDS-UserPasswordExpiryTimeComputed")) - (get-date)). days
if ($ til-tól "5" -ig)
{
write-host $ user "utoljára beállította a jelszavát a" $ use.passwordlastset "-re, ez ismét" $ til "napokban hatályát veszti - előtér szín piros
}
más
{
write-host $ user "utoljára beállította a jelszavát a" $ use.passwordlastset "-re, ez ismét" $ til "napokban hatályát veszti - előtér szín zöld
}
Ez a funkció lehetővé teszi a következő get-pwdset igazolvány megadását, hogy a Powershell ellenőrizze az Active Directory-t, hogy meghatározza, hogy az juser objektum mikor állította be utoljára a jelszavát, és hány nap van a jelszó lejártáig. Az alábbiakban látható egy példa az A. ábrán.
A ábra
A felhasználói teszthez futó get-pwdset funkció (kattintson a nagyításhoz)
Remélhetőleg ez a kis funkció hasznos lesz az Ön számára, ha a jelszó lejártának megtalálása olyan probléma, amelyet meg kell oldani.