如何让用户密码在快过期时.docx
- 文档编号:11757860
- 上传时间:2023-03-31
- 格式:DOCX
- 页数:11
- 大小:18.83KB
如何让用户密码在快过期时.docx
《如何让用户密码在快过期时.docx》由会员分享,可在线阅读,更多相关《如何让用户密码在快过期时.docx(11页珍藏版)》请在冰豆网上搜索。
如何让用户密码在快过期时
如何让用户密码在快过期时,发邮件提醒用户更改密码
2010-12-3111:
50:
46
标签:
更改密码用户OWA邮件通知
大家都知道,在域环境中,组策略中可以设置当用户密码快过期时,电脑登录会有提示,但当用户出差,或是用OWA方式访问时,并不会收到相关提示,而导致道密码过期而无法收发邮件!
下面的方法,就是教大家,如何让用户密码在快过期时,发邮件提醒用户更改密码,让用户去OWA中去更改自已的密码,不至于发生密码过期,用户并不知道,而无法收发邮件!
以下是在AD、Exchange环境下,用邮件的方式通知用户密码到期提示的脚本,需要使用的,请将其路的D和Domain改成你的域名,ADserver/Mailserver改为你的AD和Exchange的机器名,然后COPY下面的脚本存为.vbs格式,放在DC中,设置ScheduledTasks,让其每天在固定时间执行!
注:
此脚本文件会和组策略中的密码策略相对应!
此脚本为微软工程师专为某企业而写的,在些对其表示感谢!
'********************************************************************
'*MainFunction:
從AD中比對每一個使用者的PasswordLastSet,如果距離過期日剩30,15,3,2,1的使用者,則發信通知
'*
'*Usage:
' ForExample:
cscriptQuerryAD.vbs
'*
'*Copyright(C)2004MicrosoftCorporation
'********************************************************************
'OptionExplicit
'ForFileSystemObject
ConstForReading=1
ConstForAppending=8
ConstForWriting=2
ConstADS_PROPERTY_DELETE=4
dimarrWillExpiredDays
'Pleasemodifythevariable
CONSTMASTERMAIL="administrator@" '寄信人的EmailAddress
'conststrSMTPServer="mailserver" '寄信ExchangeServer
'conststrSendUserName="domainname\ACCOUNT" '有權限的使用者(寄信使用)
'conststrSendPassword ="PASSWORD" '密碼
conststrFullAdsiPath="LDAP:
//DC 'LDAP路徑
arrWillExpiredDays=Array(15,7,3,2,1) '將要過期天數的陣列
'MainFunction
'Declarevariables
DimstrTestMode
strTestMode=False 'usefordebuging
'Cretaelogfile
SetWshSHell=CreateObject("Wscript.Shell")
SetobjFSO=CreateObject("Scripting.FileSystemObject")
strFileName=Replace(Datevalue(Now),"-","_")
strFileName=Replace(strFileName,"/","_")
PublicfLog
SetoLog=objFSO.OpenTextFile(strFileName&".txt",ForWriting,TRUE)
PrintScreenNow
PrintScreen""
sta=ListWillExpireUsers()
PrintScreensta
PrintScreen""
PrintScreen"Thecommandrunssuccessfully!
"
PrintScreenNow
oLog.Close
'Programending
wscript.quit
'======================================
'FunctionArea
'======================================
'********************************************************************
'*
'*Function:
PrintScreen
'*Purpose:
ShowMessage
'*Input:
Message
'*
'*Output:
None
'*
'********************************************************************
SubPrintScreen(strMessage)
ifstrTestMode=Truethen
Wscript.EchostrMessage
endif
oLog.WriteLinestrMessage
EndSub
'********************************************************************
'*FunctionListWillExpireUsers(nDays)
'*Listalluserobjectswhosepasswordwillbeexpiredorisexpired
'*nDays:
howmanydaysthepasswordwillbeexpired
'*
'*
'*
'*-------------------------------------------------------------------
FunctionListWillExpireUsers()
DimstrMailAddress
'CreateUserObject
SetobjConnection=CreateObject("ADODB.Connection")
SetobjCommand=CreateObject("ADODB.Command")
objConnection.Provider="ADsDSOObject"
objConnection.Open"ActiveDirectoryProvider"
SetobjCommand.ActiveConnection=objConnection
objCommand.CommandText="<"&strFullAdsiPath&">;(&(objectCategory=person)(objectclass=user));AdsPath,cn;subTree"
objCommand.Properties("PageSize")=99 'specifiesthemaximumnumberofobjectstoreturninaresultsset.
PrintScreenobjCommand.CommandText
PrintScreen" "
SetobjRecordSet=objCommand.Execute
IfobjRecordSet.RecordCount=0Then
PrintScreen"Error:
Cannotfoundtheuserobjectindomain"&BaseDN&"."
Else
DimintTotalAccount '計算找到幾位使用者
intTotalAccount=0
objRecordSet.MoveFirst
DoUntilobjRecordSet.EOF
intTotalAccount=intTotalAccount+1
'Retriveuserinformation
DimoUser
SetoUser=GetObject(objRecordSet.Fields("ADsPath").Value)
ForEachoUserPropertyinoUser
PrintScreenoUserProperty.Name
Next
If(oUser.AccountDisabled=FALSE)Then
PrintScreenvbTab&"UserName:
"&oUser.Name
sStatus=UserPwdExpire(oUser)
SelectCasesStatus
Case999999
PrintScreenvbTab&"Theuser"&oUser.samaccountname&"Passwordneverexpires."
CaseElse
ifsStatus>=0then
strMSG="Yourpasswordisalreadyexpiredin"&sStatus&"days!
"
PrintScreenvbTab&"Theuser"&oUser.samAccountName&"passwordisexpiredafter"&sStatus&"days!
"
elseifsStatus<0then
strMSG="Yourmailaccountpasswordwillbeexpiredin"&0-sStatus&"days!
"&vbcrlf&"Pleasechangeyourpasswordassoonas!
"
PrintScreenvbTab&"Theuser"&oUser.samAccountName&"passwordwillbeexpiredin"&0-sStatus&"days!
"
endif
ForeachcheckDaysinarrWillExpiredDays
ifcheckDays=(0-sStatus)then
callfnCheck_SendMail(oUser,strMSG)
endif
next
EndSelect
else
PrintScreenvbTab&"UserName:
"&oUser.Name
PrintScreenvbTab&"Theuser"&oUser.samaccountname&"AccountDisabled."
endif
objRecordSet.MoveNext
PrintScreen" "
Loop
EndIf
PrintScreen"TotalAccountsis"&intTotalAccount
ListWillExpireUsers="OK"
EndFunction
'********************************************************************
'*FunctionUserPwdExpire(objUser,nMaxPwdAge)
'*Checkifuserobjectpasswordisorwillbeexpired
'*objUser:
theuserobject
'*
'* nMaxPwdAge:
maximumpasswordageofdomain
'*
'*-------------------------------------------------------------------
FunctionUserPwdExpire(objUser)
OnErrorResumeNext
ConstADS_UF_DONT_EXPIRE_PASSWD =&H10000
ConstSEC_IN_DAY=86400
intCurrentValue=objUser.Get("userAccountControl")
IfintCurrentValueandADS_UF_DONT_EXPIRE_PASSWDThen
'Thepassworddoesnotexpire.
UserPwdExpire=999999'永遠不過期
Else
dtmValue=objUser.PasswordLastChanged
iferr.number<>0then
dtmValue=0
err.Clear
endif
PrintScreenvbTab&"Thepasswordwaslastchangedon"&DateValue(dtmValue)&"at"&TimeValue(dtmValue)
'PrintScreenvbTab&"Thepasswordwaslastchangedon"&_
'DateValue(dtmValue)&"at"&TimeValue(dtmValue)&VbCrLf&_
' "Thedifferencebetweenwhenthepasswordwaslastset"&VbCrLf&_
' "andtodayis"&int(now-dtmValue)&"days"
intTimeInterval=int(now-dtmValue)
SetobjSysInfo=CreateObject("ADSystemInfo")
strDomain=objSysInfo.DomainShortName
SetobjSysInfo=Nothing
SetobjDomainNT=GetObject("WinNT:
//"&strDomain)
intMaxPwdAge=objDomainNT.Get("MaxPasswordAge")
IfintMaxPwdAge<0Then
'WScript.Echo"TheMaximumPasswordAgeissetto0inthe"&_
'"domain.Therefore,thepassworddoesnotexpire."
Else
intMaxPwdAge=(intMaxPwdAge/SEC_IN_DAY)
'Wscript.echo"Themaximumpasswordageis"&intMaxPwdAge&"days"
IfintTimeInterval>=intMaxPwdAgeThen
'PrintScreenvbTab& "Thepasswordhasexpired."
UserPwdExpire=int(intTimeInterval-intMaxPwdAge)
Else
'PrintScreenvbTab& "Thepasswordwillexpireon"&_
' DateValue(dtmValue+intMaxPwdAge)&"("&_
' int((dtmValue+intMaxPwdAge)-now)&"daysfromtoday"&")."
UserPwdExpire=int(now-(dtmValue+intMaxPwdAge))
EndIf
EndIf
EndIf
EndFunction
'******************************
'MailMessage
'Reference:
CreatingandSendingaMessage
'
'
'******************************
SubSendMail(strFrom,strTo,strSubject,strBodyText)
DimiMsg
SetiMsg=CreateObject("CDO.Message")
DimiConf
SetiConf=CreateObject("CDO.Configuration")
DimFlds
SetFlds=iConf.Fields
WithFlds
'assumeconstantsaredefinedwithinscriptfile
.Item("cdoSendUsingMethod")=2 'cdoSendUsingPickup:
1:
Local,cdoSendUsingPort:
2:
Network
.Item("cdoSendUsingPort") =25 'cdoSendUsingPort
.Item("cdoSMTPServer") =strSMTPServer
.Item("cdoSMTPConnectionTimeout")=10 'quicktimeout
.Item("cdoSMTPAuthenticate")=cdoBasic
.Item("cdoSendUserName") =strSendUserName
.Item("cdoSendPassword") =strSendPassword
'.Item("cdoURLProxyServer") ="tpeproxy:
80"
.Item("cdoURLProxyBypass") ="
.Item("cdoURLGetLatestVersion") =True
.Update
EndWith
WithiMsg
Set.Configuration=iConf
.To =strTo
.From =strFrom
.Subject =strSubject
'.CreateMHTMLBody"Thisfolder["&strFolderPath&"]Createdin"&intDayNum&"Days"
.TextBody= strBodyText
'.AddAttachment"C:
\files\mybook.doc"
.Send
EndWith
EndSub
'********************************************************************
'*
'*Function:
fnCheck_SendMail
'*Purpose:
檢查是否有符合寄信標準的使用者(以arrWillExpiredDays為準)
'*Input:
objUser,MailMessage
'*
'*Output:
None
'*
'********************************************************************
FunctionfnCheck_SendMail(objUser,strMSG)
'Sendemail
OnErrorResumeNext
Err.Clear
'某些User在此行發生Error
DimPropArray
'PropArray=Array("proxyAddresses")
'oUser.GetInfoExArray("proxyAddresses"),0
aProxyAddress=objUser.GetEx("proxyAddresses")
IfErr<>0Then
PrintScreenvbTab&Time&"Theuserdoesn'thaveemailaddress."
Err.Clear
Else
ForEachsaProxyAddressinaProxyAddress
'NeedastringvariabletotransferthesaProxyAddress
strMailAddress=saProxyAddress
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 如何 用户密码 过期