卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

如何讓用戶密碼在快過期時(shí)

如何讓用戶密碼在快過期時(shí),發(fā)郵件提醒用戶更改密碼 2010-12-31 11:50:46標(biāo)簽:更改密碼 用戶 OWA 郵件 通知大家都知道,在域環(huán)境中,組策略中可以設(shè)置當(dāng)用戶密碼快過期時(shí),電腦登錄

如何讓用戶密碼在快過期時(shí),發(fā)郵件提醒用戶更改密碼 2010-12-31 11:50:46

標(biāo)簽:更改密碼 用戶 OWA 郵件 通知

大家都知道,在域環(huán)境中,組策略中可以設(shè)置當(dāng)用戶密碼快過期時(shí),電腦登錄會(huì)有提示,但當(dāng)用戶出差,或是用OWA 方式訪問時(shí),并不會(huì)收到相關(guān)提示,而導(dǎo)致道密碼過期而無法收發(fā)郵件!

下面的方法,就是教大家,如何讓用戶密碼在快過期時(shí),發(fā)郵件提醒用戶更改密碼,讓用戶去OWA 中去更改自已的密碼,不至于發(fā)生密碼過期,用戶并不知道,而無法收發(fā)郵件! 以下是在AD 、Exchange 環(huán)境下,用郵件的方式通知用戶密碼到期提示的腳本,需要使用的,請(qǐng)將其路的Domainname.com 和Domain 改成你的域名,ADserver/Mailserver改為你的AD 和Exchange 的機(jī)器名,然后COPY 下面的腳本存為.vbs 格式,放在DC 中,設(shè)置Scheduled Tasks ,讓其每天在固定時(shí)間執(zhí)行!

注:此腳本文件會(huì)和組策略中的密碼策略相對(duì)應(yīng)!

此腳本為微軟工程師專為某企業(yè)而寫的,在些對(duì)其表示感謝!

'********************************************************************

'* Main Function: 從AD 中比對(duì)每一個(gè)使用者的Password LastSet,如果距離過期日剩30,15,3,2,1的使用者, 則發(fā)信通知

'*

'* Usage:

' For Example : cscript QuerryAD.vbs

,

'*

'* Copyright (C) 2004 Microsoft Corporation

'******************************************************************** 'Option Explicit

'For FileSystemObject

Const ForReading = 1

Const ForAppending = 8

Const ForWriting = 2

Const ADS_PROPERTY_DELETE = 4

dim arrWillExpiredDays

'Please modify the variable

CONST MASTERMAIL = "administrator@domainname.com" '寄信人的Email Address

'const strSMTPServer = "mailserver" '寄信ExchangeServer

'const strSendUserName = "domainname?COUNT" '有權(quán)限的使用者(寄信使用) 'const strSendPassword = "PASSWORD" '密碼

const strFullAdsiPath =

" LDAP://DCserver.domainname.com/dc=domainname,dc=com" 'LDAP路徑

arrWillExpiredDays = Array(15,7,3,2,1) '將要過期天數(shù)的陣列 'Main Function

,

'Declare variables

Dim strTestMode

strTestMode = False 'use for debuging

'Cretae log file

Set WshSHell = CreateObject("Wscript.Shell")

Set objFSO = CreateObject("Scripting.FileSystemObject")

strFileName = Replace(Datevalue(Now), "-", "_")

strFileName = Replace(strFileName, "/", "_")

Public fLog

Set oLog = objFSO.OpenTextFile(strFileName & ".txt", ForWriting, TRUE) PrintScreen Now

PrintScreen ""

sta = ListWillExpireUsers()

PrintScreen sta

PrintScreen ""

PrintScreen "The command runs successfully!"

PrintScreen Now

,

oLog.Close

'Program ending

wscript.quit

'======================================

' Function Area

'======================================

'******************************************************************** '*

'* Function: PrintScreen

'* Purpose: Show Message

'* Input: Message

'*

'* Output: None

'*

'******************************************************************** Sub PrintScreen(strMessage)

if strTestMode = True then

Wscript.Echo strMessage

end if

,

oLog.WriteLine strMessage

End Sub

'******************************************************************** '*Function ListWillExpireUsers(nDays)

'* List all user objects whose password will be expired or is expired '* nDays: how many days the password will be expired

'*

'*

'*

'*-------------------------------------------------------------------

Function ListWillExpireUsers()

Dim strMailAddress

' Create User Object

Set objConnection = CreateObject("ADODB.Connection")

Set objCommand = CreateObject("ADODB.Command")

objConnection.Provider = "ADsDSOObject"

objConnection.Open "Active Directory Provider"

Set objCommand.ActiveConnection = objConnection

,

objCommand.CommandText = "<" & strFullAdsiPath &

">;(&(objectCategory=person)(objectclass=user));AdsPath,cn;subTree"

objCommand.Properties("Page Size") = 99 'specifies the maximum number of objects to return in a results set.

PrintScreen objCommand.CommandText

PrintScreen " "

Set objRecordSet = objCommand.Execute

If objRecordSet.RecordCount = 0 Then

PrintScreen "Error: Cannot found the user object in domain " & BaseDN & "." Else

Dim intTotalAccount '計(jì)算找到幾位使用者

intTotalAccount = 0

objRecordSet.MoveFirst

Do Until objRecordSet.EOF

intTotalAccount = intTotalAccount 1

'Retrive user information

,

Dim oUser

Set oUser = GetObject(objRecordSet.Fields("ADsPath").Value)

For Each oUserProperty in oUser

PrintScreen oUserProperty.Name

Next

If (oUser.AccountDisabled = FALSE) Then

PrintScreen vbTab & "User Name : " & oUser.Name

sStatus = UserPwdExpire(oUser)

Select Case sStatus

Case 999999

PrintScreen vbTab & " The user " & oUser.samaccountname & " Password never expires."

Case Else

if sStatus >= 0 then

strMSG = "Your password is already expired in " & sStatus & " days!"

PrintScreen vbTab & " The user " & oUser.samAccountName & " password is expired

,

after " & sStatus & " days!"

elseif sStatus < 0 then

strMSG = "Your mail account password will be expired in " & 0-sStatus & " days!" & vbcrlf & "Please change your password as soon as!"

PrintScreen vbTab & " The user " & oUser.samAccountName & " password will be expired in " & 0-sStatus & " days!"

end if

For each checkDays in arrWillExpiredDays

if checkDays = (0-sStatus) then

call fnCheck_SendMail(oUser,strMSG)

end if

next

End Select

else

PrintScreen vbTab & "User Name : " & oUser.Name

PrintScreen vbTab & " The user " & oUser.samaccountname & " Account Disabled." end if

objRecordSet.MoveNext

,

PrintScreen " "

Loop

End If

PrintScreen "Total Accounts is " & intTotalAccount

ListWillExpireUsers = "OK"

End Function

'******************************************************************** '* Function UserPwdExpire(objUser, nMaxPwdAge)

'* Check if user object password is or will be expired

'* objUser: the user object

'*

'* nMaxPwdAge: maximum password age of domain

'*

'*------------------------------------------------------------------- Function UserPwdExpire(objUser)

,

On Error Resume Next

Const ADS_UF_DONT_EXPIRE_PASSWD = &H10000

Const SEC_IN_DAY = 86400

intCurrentValue = objUser.Get("userAccountControl")

If intCurrentValue and ADS_UF_DONT_EXPIRE_PASSWD Then

'The password does not expire.

UserPwdExpire = 999999 '永遠(yuǎn)不過期

Else

dtmValue = objUser.PasswordLastChanged

if err.number <> 0 then

dtmValue = 0

err.Clear

end if

PrintScreen vbTab & " The password was last changed on " & DateValue(dtmValue) & " at " & TimeValue(dtmValue)

'PrintScreen vbTab & "The password was last changed on " & _

'DateValue(dtmValue) & " at " & TimeValue(dtmValue) & VbCrLf & _

標(biāo)簽: