密码过期通知vbscript

时间:2016-07-07 18:14:45

标签: vbscript passwords

我从下面的链接得到了很大的帮助,我做了一些改动,但我无法让它工作,有什么想法吗?它应该做的是去获取域策略并检查密码过期信息,如果它在14天的时间范围内显示弹出窗口(如果我使用msgbox则有效)我想使用带有文本的公司徽标,这是问题所在。

PwExpChk.vbs can I add a company logo?

'==========================================
 ' Check for password expiring notification
 '==========================================
 ' First, get the domain policy.
 '==========================================
 Dim oDomain
 Dim oUser
 Dim maxPwdAge
 Dim numDays
 Dim warningDays

warningDays = 14

 Set LoginInfo = CreateObject("ADSystemInfo")  
 Set objUser = GetObject("LDAP://" & LoginInfo.UserName &)  
 strDomainDN = UCase(LoginInfo.DomainDNSName) 
 strUserDN = LoginInfo.UserName

'========================================
 ' Check if password is non-expiring.
 '========================================
 Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000
 intUserAccountControl = objUser.Get("userAccountControl")
 If intUserAccountControl And ADS_UF_DONT_EXPIRE_PASSWD Then
     'WScript.Echo "The password does not expire."
 Else

     Set oDomain = GetObject("LDAP://" & strDomainDN)
     Set maxPwdAge = oDomain.Get("maxPwdAge")

    '========================================
     ' Calculate the number of days that are
     ' held in this value.
     '========================================
     numDays = CCur((maxPwdAge.HighPart * 2 ^ 32) + _
                     maxPwdAge.LowPart) / CCur(-864000000000)
     'WScript.Echo "Maximum Password Age: " & numDays

     '========================================
     ' Determine the last time that the user
     ' changed his or her password.
     '========================================
     Set oUser = GetObject("LDAP://" & strUserDN)

    '========================================
     ' Add the number of days to the last time
     ' the password was set.
     '========================================
     whenPasswordExpires = DateAdd("d", numDays, oUser.PasswordLastChanged)
     fromDate = Date
     daysLeft = DateDiff("d",fromDate,whenPasswordExpires)

     'WScript.Echo "Password Last Changed: " & oUser.PasswordLastChanged

    if (daysLeft < warningDays) and (daysLeft > -1) then
         Sub PasswordExpirationDialog(daysLeft, whenPasswordExpires)
Dim fso, objShell,  HTAFileName, HtaFile
Const TemporaryFolder = 2
Const ForReading = 1

Sub PasswordExpirationDialog(daysLeft, whenPasswordExpires)
Dim fso, objShell,  HTAFileName, HtaFile
Const TemporaryFolder = 2
Const ForReading = 1

Set fso = CreateObject("Scripting.FileSystemObject")
Set objTempFolder = fso.GetSpecialFolder(TemporaryFolder)
HTAFileName = fso.GetSpecialFolder(TemporaryFolder).Path & "c:\windows\temp\PasswordExpirationDialog.hta"
Set HtaFile = fso.CreateTextFile(HTAFileName, True)
With HtaFile
    .writeline("<html><head>")
    .writeline("<title>PASSWORD EXPIRATION WARNING!</title>")
    .writeline("<HTA:APPLICATION ID='PaswordDialog'/></head><script language='VBScript'>")

    .writeline("Sub Window_OnLoad")
    .writeline("window.resizeto 700,400")
    .writeline("End Sub")

    .writeline("</script><body bgcolor='white'>")
    .writeline("<image src='\\domain\netlogon\PwExpChk\Logo2.jpg' width='448' height='170' /><br>")
    .writeline("<h2>")
    .writeline("Password Expires in " & daysLeft & " day(s)" & " at " & whenPasswordExpires)
    .writeline("<br><br>Once logged in, press CTRL-ALT-DEL and")
    .writeline("<br>select the 'Change a password' option<br><br>")

    .writeline("<center><button onclick='Self.Close'>Click_To_Close</button></center>")
    .writeline("</h2></body></html>")
    .Close
End With
Set HtaFile = Nothing

Set objShell = CreateObject("WScript.Shell")
objShell.Run "%windir%\System32\mshta.exe " & Chr(34) & HTAFileName & Chr(34)

WScript.Sleep 500
fso.DeleteFile HTAFileName, True
Set objShell = Nothing

End Sub
     End if

End if

'========================================
 ' Clean up.
 '========================================
 Set oUser = Nothing
 Set maxPwdAge = Nothing
 Set oDomain = Nothing

0 个答案:

没有答案