इस लेख में हम दिखाएंगे कि कैसे पता लगाया जाए कि किसी सक्रिय निर्देशिका उपयोगकर्ता खाते का पासवर्ड पावरशेल का उपयोग करके कब समाप्त होता है, कैसे पासवर्ड को कभी समाप्त न होने के लिए सेट करें (PasswordNeverExpires = True
), और उपयोगकर्ताओं को अपना पासवर्ड बदलने के लिए अग्रिम रूप से सूचित करें।
यदि किसी डोमेन में उपयोगकर्ता पासवर्ड की समय सीमा समाप्त हो गई है, तो खाता लॉक नहीं है, लेकिन इसका उपयोग डोमेन संसाधनों तक पहुंचने के लिए नहीं किया जा सकता है जब तक कि उपयोगकर्ता समाप्त हो चुके पासवर्ड को नए में बदल नहीं देता। सबसे अधिक बार, दूरस्थ उपयोगकर्ता समाप्त पासवर्ड के साथ समस्याओं का सामना करते हैं, क्योंकि वे मानक टूल का उपयोग करके अपना पासवर्ड नहीं बदल सकते हैं।
एक डोमेन में एक उपयोगकर्ता पासवर्ड समाप्ति समय सीमा, इसे कितनी बार बदला जाना चाहिए (अधिकतम पासवर्ड आयु) और जटिलता आवश्यकताओं को एडी डोमेन पासवर्ड नीति में सेट किया गया है। ये पैरामीटर डिफ़ॉल्ट डोमेन नीति या बढ़िया पासवर्ड नीति में सेट किए गए हैं।
आप इस पावरशेल कमांड का उपयोग करके डोमेन में वर्तमान पासवर्ड समाप्ति नीति सेटिंग प्राप्त कर सकते हैं:
Get-ADDefaultDomainPasswordPolicy|select MaxPasswordAge
हमारे उदाहरण में, डोमेन में अधिकतम उपयोगकर्ता पासवर्ड आयु 60 दिन है।
सक्रिय निर्देशिका में उपयोगकर्ता पासवर्ड समाप्ति तिथि कैसे प्राप्त करें?
आप नेट उपयोगकर्ता का उपयोग करके कमांड प्रॉम्प्ट में पासवर्ड की आयु और पिछली बार इसे कब बदला गया था, यह देख सकते हैं आदेश:
net user jsmith /domain
आपको आवश्यक जानकारी इन पंक्तियों में मिल सकती है:
- पासवर्ड अंतिम सेट — 9/9/2020 9:23:59 पूर्वाह्न
- पासवर्ड समाप्त हो जाता है — 1/7/2021 9:23:59 पूर्वाह्न
- पासवर्ड बदलने योग्य — 9/10/2020 सुबह 9:23:59 बजे
AD खातों की सेटिंग देखने के लिए, हम सक्रिय निर्देशिका मॉड्यूल के लिए एक विशेष PowerShell का उपयोग करेंगे जो आपको विभिन्न AD ऑब्जेक्ट विशेषताओं के मान प्राप्त करने की अनुमति देता है (Windows 10 और Windows Server 2012 R2/2016 में AD PowerShell मॉड्यूल को स्थापित और आयात करने का तरीका देखें) )
Get-ADUser cmdlet का उपयोग करके, आप उस तिथि को देख सकते हैं जब उपयोगकर्ता का पासवर्ड पिछली बार बदला गया था और जांच सकते हैं कि क्या PasswordNeverExpires विकल्प सेट है:
get-aduser jsmith -properties PasswordLastSet, PasswordNeverExpires, PasswordExpired |ft Name, PasswordLastSet, PasswordNeverExpires,PasswordExpired
<मजबूत>
- पासवर्ड लास्टसेट अंतिम पासवर्ड परिवर्तन की तिथि और समय है;
- पासवर्ड कभी खत्म नहीं होता रिटर्न सच यदि उपयोगकर्ता पासवर्ड कभी समाप्त नहीं होता है;
- पासवर्ड की समय सीमा समाप्त - यदि उपयोगकर्ता पासवर्ड की समय सीमा समाप्त हो गई है, तो यह सत्य लौटाता है , यदि पासवर्ड की समय सीमा समाप्त नहीं हुई है, तो यह गलत लौटाता है ।
dsa.msc
) में अंतिम पासवर्ड परिवर्तन के समय की जांच कर सकते हैं। ) ऐसा करने के लिए, उपयोगकर्ता गुण खोलें, विशेषता संपादक टैब पर जाएं और pwdLastSet का मान जांचें विशेषता। लेकिन जैसा कि आप देख सकते हैं, एमएमसी स्नैप-इन केवल उस समय को दिखाता है जब पासवर्ड बदला गया था। यह स्पष्ट नहीं है कि पासवर्ड कब समाप्त होता है।
पासवर्ड को अंतिम बार बदलने के समय के बजाय समाप्ति तिथि प्राप्त करने के लिए, एक विशेष निर्मित AD विशेषता का उपयोग करें:msDS-UserPasswordExpiryTimeComputed . msDS-UserPasswordExpiryTimeComputed मान की गणना स्वचालित रूप से अंतिम पासवर्ड परिवर्तन की तिथि और डोमेन पासवर्ड नीति के आधार पर की जाती है।
UserPasswordExpiryTimeComputed पैरामीटर टाइमस्टैम्प प्रारूप में तारीख लौटाता है, इसलिए मैं FromFileTime
. का उपयोग करता हूं इसे मानव पठनीय मूल्य में बदलने के लिए कार्य करता है:
Get-ADUser -Identity jsmith -Properties msDS-UserPasswordExpiryTimeComputed | select-object @{Name="ExpirationDate";Expression= {[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed") }}
इस प्रकार, हमें एक उपयोगकर्ता पासवर्ड की समाप्ति तिथि मिली।
यदि msDS-UserPasswordExpiryTimeComputed का मान 0 है, तो इसका अर्थ है कि pwdLastSet खाली (शून्य) है या 0 के बराबर है (पासवर्ड कभी नहीं बदला गया है)।
AD में विशिष्ट कंटेनर (OU) से सभी उपयोगकर्ताओं के लिए पासवर्ड समाप्ति तिथि प्राप्त करने के लिए, आप निम्न PowerShell स्क्रिप्ट का उपयोग कर सकते हैं:
$Users = Get-ADUser -SearchBase 'OU=Users,OU=NewYork,DC=woshub,DC=com' -filter {Enabled -eq $True -and PasswordNeverExpires -eq $False} -Properties msDS-UserPasswordExpiryTimeComputed, PasswordLastSet, CannotChangePassword
$Users | select Name, @{Name="ExpirationDate";Expression= {[datetime]::FromFileTime ($_."msDS-UserPasswordExpiryTimeComputed")}}, PasswordLastSet
यह सक्रिय उपयोगकर्ताओं की सूची, अंतिम पासवर्ड परिवर्तन की समाप्ति तिथि और समय के साथ एक तालिका में परिणत होता है।
आप केवल समाप्त हो चुके पासवर्ड वाले उपयोगकर्ताओं की सूची प्रदर्शित कर सकते हैं:
$Users = Get-ADUser -SearchBase 'OU=Users,OU=NewYork,DC=woshub,DC=com' -filter {Enabled -eq $True -and PasswordNeverExpires -eq $False} -Properties msDS-UserPasswordExpiryTimeComputed, PasswordLastSet, CannotChangePassword
foreach($user in $Users){
if( [datetime]::FromFileTime($user."msDS-UserPasswordExpiryTimeComputed") -lt (Get-Date)) {
$user.Name
}
}
विज्ञापन उपयोगकर्ता पासवर्ड को कभी समाप्त न होने पर कैसे सेट करें?
यदि आप किसी खाते के लिए स्थायी पासवर्ड सेट करना चाहते हैं, तो पासवर्ड कभी समाप्त नहीं होता . की जांच करें AD में उपयोगकर्ता गुणों में विकल्प (यह UserAccoutControl विशेषता के बिट मानों में से एक है)।
या आप उपयोगकर्ता विशेषता सेट करके PowerShell के साथ इस विकल्प को सक्षम कर सकते हैं:
Get-ADUser jsmith | Set-ADUser -PasswordNeverExpires:$True
आप एक टेक्स्ट फ़ाइल में एक सूची से एकाधिक उपयोगकर्ताओं के लिए पासवर्ड नेवर एक्सपायर विकल्प को एक साथ सेट कर सकते हैं:
$users=Get-Content "C:\PS\users_password_never_expire.txt"
Foreach ($user in $users) {
Set-ADUser $user -PasswordNeverExpires:$True
}
आप अक्षम नियमित पासवर्ड परिवर्तन विकल्प वाले सभी उपयोगकर्ताओं की सूची प्रदर्शित कर सकते हैं:
Get-ADUser -filter * -properties Name, PasswordNeverExpires | where {$_.passwordNeverExpires -eq "true" } | Select-Object DistinguishedName,Name,Enabled |ft
सक्रिय निर्देशिका पासवर्ड समाप्ति अधिसूचना नीति
विंडोज़ में एक विशेष समूह नीति पैरामीटर है जो उपयोगकर्ताओं को यह सूचित करने की अनुमति देता है कि उन्हें अपना पासवर्ड बदलना होगा।
नीति को इंटरएक्टिव लॉगऑन कहा जाता है:समाप्ति से पहले उपयोगकर्ता को पासवर्ड बदलने का संकेत दें और GPO अनुभाग के अंतर्गत स्थित है:कंप्यूटर कॉन्फ़िगरेशन -> नीतियां -> विंडोज सेटिंग्स -> सुरक्षा सेटिंग्स -> स्थानीय नीतियां -> सुरक्षा विकल्प।
डिफ़ॉल्ट रूप से, नीति स्थानीय विंडोज सेटिंग्स पर सक्षम होती है, और पासवर्ड समाप्त होने से 5 दिन पहले सूचनाएं दिखाई देने लगती हैं। आप उन दिनों की संख्या बदल सकते हैं जब उपयोगकर्ता पासवर्ड परिवर्तन सूचना देखेंगे।
इस नीति को सक्षम करने के बाद, यदि उपयोगकर्ता का पासवर्ड समाप्त हो जाता है, तो उपयोगकर्ता द्वारा हर बार लॉग ऑन करने पर पासवर्ड बदलने की सूचना ट्रे में दिखाई देगी।
Consider changing your password Your password will expire in xx days.
आप एक साधारण पावरशेल स्क्रिप्ट का भी उपयोग कर सकते हैं जो 5 दिनों से कम समय में समाप्त होने पर पासवर्ड बदलने के संकेत के साथ स्वचालित रूप से एक संवाद विंडो दिखाती है:
Add-Type -AssemblyName PresentationFramework
$curruser= Get-ADUser -Identity $env:username -Properties 'msDS-UserPasswordExpiryTimeComputed','PasswordNeverExpires'
if ( -not $curruser.'PasswordNeverExpires') {
$timediff=(new-timespan -start (get-date) -end ([datetime]::FromFileTime($curruser."msDS-UserPasswordExpiryTimeComputed"))).Days
if ($timediff -lt 5) {
$msgBoxInput = [System.Windows.MessageBox]::Show("Your password expires in "+ $timediff + " days!`nDo you want to change it now?","Important!","YesNo","Warning")
switch ($msgBoxInput) {
'Yes' {
cmd /c "explorer shell:::{2559a1f2-21d7-11d4-bdaf-00c04f60b9f0}"
}
'No' { }
}
}
}
यदि कोई उपयोगकर्ता हाँ क्लिक करता है, तो एक Windows सुरक्षा विंडो दिखाई देती है जो आपको Ctrl+Alt+Del
दबाने के बाद दिखाई देती है या Ctrl+Alt+End
(आरडीपी/आरडीएस कनेक्शन के मामले में)।
स्क्रिप्ट का तात्पर्य है कि AD मॉड्यूल के लिए PowerShell उपयोगकर्ताओं के कंप्यूटरों पर स्थापित है। आरएसएटी स्थापित न होने पर भी इसका उपयोग किया जा सकता है। लेख "आरएसएटी स्थापित किए बिना एडी मॉड्यूल का उपयोग करना" देखें।
PS स्क्रिप्ट के लिए स्वचालित स्टार्टअप सक्षम करें या इसे GPO लॉगऑन स्क्रिप्ट के रूप में चलाएं।
पावरशेल के माध्यम से पासवर्ड समाप्ति ईमेल अधिसूचना
यदि आप उपयोगकर्ताओं को उनके पासवर्ड की समाप्ति के बारे में ईमेल द्वारा सूचित करना चाहते हैं, तो आप इस पावरशेल स्क्रिप्ट का उपयोग कर सकते हैं:
$Sender = "[email protected]"
$Subject = 'Important! Your password expires soon!'
$BodyTxt1 = 'Your password for'
$BodyTxt2 = 'expires in '
$BodyTxt3 = 'days. Remember to change your password in advance. If you have other questions, contact the HelpDesk.'
$smtpserver ="smtp.woshub.com"
$warnDays = (get-date).adddays(7)
$2Day = get-date
$Users = Get-ADUser -SearchBase 'OU=Users,OU=NewYork,DC=woshub,DC=com' -filter {Enabled -eq $True -and PasswordNeverExpires -eq $False} -Properties msDS-UserPasswordExpiryTimeComputed, EmailAddress, Name | select Name, @{Name ="ExpirationDate";Expression= {[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}}, EmailAddress
foreach ($user in $users) {
if (($user.ExpirationDate -lt $warnDays) -and ($2Day -lt $user.ExpirationDate) ) {
$lastdays = ( $user.ExpirationDate -$2Day).days
$EmailBody = $BodyTxt1, $user.name, $BodyTxt2, $lastdays, $BodyTxt3 -join ' '
Send-MailMessage -To $user.EmailAddress -From $Sender -SmtpServer $smtpserver -Subject $Subject -Body $EmailBody
}
}
स्क्रिप्ट उन सभी सक्रिय डोमेन उपयोगकर्ताओं की जांच करती है जिनके पासवर्ड समाप्त होने वाले हैं। पासवर्ड समाप्त होने के 7 दिनों में, उपयोगकर्ता को एडी में निर्दिष्ट पते पर ईमेल भेजे जाने लगते हैं। ईमेल तब तक भेजे जाते हैं जब तक कि पासवर्ड बदल न जाए या समाप्त न हो जाए।
एक व्यवस्थापक सेट-ADAccountPassword cmdlet का उपयोग करके उपयोगकर्ता पासवर्ड बदलने के लिए बाध्य कर सकता है।इस पॉवरशेल स्क्रिप्ट को अपने डोमेन के किसी भी कंप्यूटर/सर्वर पर नियमित रूप से चलाएँ (टास्क शेड्यूलर के साथ इसे करना आसान है)। बेशक, आपको उस होस्ट का आईपी पता जोड़ना होगा जो आपके एसएमटीपी सर्वर पर अनुमति प्राप्त प्रेषकों की सूची में ईमेल भेज रहा है (प्रमाणीकरण के बिना ईमेल भेज सकता है)।