Få oplysninger om nulstilling af adgangskode til brugere med Windows PowerShell-script

Jeg må indrømme, jeg har været ret fascineret af PowerShell for nylig, og selvom jeg på ingen måde er ekstremt god til det, har jeg formået at sammensætte nogle nyttige scripting. Mens jeg lærte PowerShell, fandt jeg et par problemer at løse, et hvoraf man bestemmer, hvornår en bruger sidst ændrede sin adgangskode og antallet af dage, indtil adgangskoden skal ændres igen. Du kan muligvis ikke synes, at dette særlige script er nyttigt, men det illustrerer den slags tilpasning, du kan gøre med PowerShell for at udføre opgaver, du selv vælger.

Bemærk: Brug af denne funktion antager, at der er konti, hvis adgangskoder udløber, selvom det rapporterer konti, der er fundet, der også har ikke-udløbende adgangskoder. Krav: Du bliver nødt til at importere Active Directory-modulet til din PowerShell-session ved at køre importmodulets aktiverede instruktion for at denne funktion kan fungere korrekt.

Kom godt i gang

Problemet, jeg var startet, da en medarbejder spurgte, hvornår en adgangskode til en brugerkonto blev nulstillet. Active Directory lægger ikke nøjagtigt disse oplysninger derude, som du kan se, hvilket typisk er en god ting. Dette var en god mulighed for at se, om PowerShell kunne hjælpe.

Funktion, script eller interaktiv kommandolinje

Mens alle disse metoder fungerer og endda bruger den samme kode, regnede jeg med, at dette muligvis var noget, jeg ville genbruge, så jeg valgte at oprette en funktion til at opføre sig mere som en cmdlet, som også kan indlæses i et profilscript (men det del er et andet indlæg).

 Funktion get-pwdset { 
 Param (parameter (Obligatorisk = $ true) string $ bruger) 

I koden ovenfor defineres funktionen get-pwdset med den krævede parameter $ bruger defineret som en streng.

Det næste afsnit af funktionen definerer en variabel til at indeholde et Active Directory-brugerobjekt med specificerede egenskaber til passwordnever expires og passwordlastset .

 $ use = get-aduser $ user-ejendomme passwordlastset, adgangskodeudtømmes 

I det næste afsnit besluttede jeg at tjekke for konti, der har ikke-udløbende adgangskoder. Dette var for at forhindre fejl ved håndtering af konti, der ikke udløber.

 Hvis ($ use.passwordnever expires -ekv $ true) 
 { 
 skrive-vært $ bruger "satte sidst deres adgangskode sidst på" $ use.passwordlastset "denne konto har en ikke-udløbende adgangskode" -forgrundsfarve gul 
 } 

Hvis kontoen, der er videregivet til funktionen, har en ikke-udløbende adgangskode, vises den sidste dato for indstilling af adgangskode, og der vises en meddelelse om, at kontoen har et ikke-udløbende adgangskode i gult.

 Andet 
 { 
 $ til = ((datetime :: FromFileTime ((get-aduser $ user-egenskaber "msDS-UserPasswordExpiryTimeComputed"). "msDS-UserPasswordExpiryTimeComputed")) - (get-date)). dage 
 if ($ til -lt "5") 
 { 
 skrive-vært $ bruger "satte sidst deres adgangskode sidst på" $ use.passwordlastset "det udløber igen om" $ til "dage" -grundsfarve rød 
 } 
 andet 
 { 
 skriv-vært $ bruger "satte sidst deres adgangskode sidst på" $ use.passwordlastset ", det udløber igen om" $ til "dage" -grundsfarvegrøn 
 } 

Denne funktion giver dig mulighed for at indtaste den følgende get-pwdset-juser for at få Powershell til at tjekke Active Directory for at bestemme, hvornår juser- objektet sidst har indstillet sin adgangskode, og hvor mange dage der er, indtil adgangskoden udløber. Et eksempel er vist nedenfor i figur A.

Figur A

Get-pwdset-funktionen, der kører til brugertest (klik for at forstørre)

Forhåbentlig kommer denne lille funktion til nytte for dig, hvis det at finde en adgangskodeudløb er et problem, du har brug for at løse.

© Copyright 2020 | mobilegn.com