Brian,
Works great..
quote:
UserName: ServiceSql
UserPasswordExpires: 7/9/2002 6:18:13 AM
Number of Days till password expires: 35
Password will not expire for more than 2 Days, no action is needed
UserName: cbcwindu
UserPasswordExpires: 8/28/2002 10:29:29 AM
Number of Days till password expires: 85
Password will not expire for more than 2 Days, no action is needed
UserName: servicemmc
UserPasswordExpires: 7/17/2002 7:26:16 AM
Number of Days till password expires: 43
Password will not expire for more than 2 Days, no action is needed
Added in your fix..
code:
BREAK ON
CLS
; -- Author - Kent Dyer
; -- Original Date - 30 May 2002
; -- Change Date - 4 June 2002
; -- Initially used Date Routine - http://kixtart.org/board/Forum2/HTML/000133.html
; -- Date Routine built/changes by BrianTX
; -- Optionally, you could use DateMath, SerialDate from
; -- http://scriptlogic.com/Kixtart/ViewFunction.asp?FN=SerialDate
; -- http://scriptlogic.com/Kixtart/ViewFunction.asp?FN=DateMath
; -- Added a simple array (using split) from Kix 4.x 6/4/02
; -- pieces taken from
; -- http://cwashington.netreach.net/depo/view.asp?Index=198&ScriptType=vbscript
; -- http://cwashington.netreach.net/depo/view.asp?Index=323&ScriptType=vbscript
; -- http://kixtart.org/board/ultimatebb.php?ubb=get_topic;f=2;t=003347
IF Left(@kix,1) < 4
?"This script requires Kixtart 4.x"
SLEEP 2
EXIT
ELSE
$ldomain = @domain
;$lstrusername = "servicesql" ; -- uncomment out if you don't want to use split
$lstrusername = Split("servicesql~~cbcwindu~~servicemmc", "~~") ; -- comment out if you don't want to use split
$mailhost = "smtphost.domain.com" ; -- fill in with your smtp server
$adminrecpt = "user@@domain.com" ; -- add in your e-mail address
FOR EACH $element IN $lstrusername ; -- comment out if you don't want to use split
;$userobj = GetObject("LDAP://PDC.DOMAIN.com,ou=Accounts,ou=Users,ou=Service Account Users,ou=SQL Service Accounts,cn=ServiceSql")
;$userobj = GetObject("WinNT://$LDomain/$lstrUserName") ; -- uncomment out if you don't want to use split
$userobj = GetObject("WinNT://$LDomain/$Element") ; -- comment out if you don't want to use split
$pwexpire = $userobj.passwordexpirationdate
?"UserName: " + $userobj.name
?"UserPasswordExpires: " + $pwexpire
$tt = SPLIT($pwexpire," ")
$mdy = SPLIT($tt[0],"/")
$expiredatearray = $mdy[2],$mdy[0],$mdy[1]
$currentdatearray = "@YEAR","@MONTHNO","@MDAYNO"
FUNCTION CalcDayofYear($ymdarray) ; Only works on non-millenium years after 2000.
$calendar = 31,28,31,30,31,30,31,31,30,31,30,31
IF VAL($ymdarray[0]) & 1 $ly = 0 ; leap year calculations
ELSE
IF (Val($ymdarray[0])/2) & 1 $ly = 0
ELSE
$ly = 1
ENDIF
ENDIF
$calendar[1] = $calendar[1] + $ly
$mdays = 0
FOR $m = 0 TO (Val($ymdarray[1]) -2)
$mdays = $mdays + $calendar[$m]
NEXT
$calcdayofyear = $mdays + $ymdarray[2]
ENDFUNCTION
$diffyears = VAL($expiredatearray[0]) - VAL($currentdatearray[0])
IF $diffyears > 0
$yearstodays = 0
FOR $countyear = VAL($currentdatearray[0]) TO (VAL($expiredatearray[0])-1)
$acountyear = $countyear,"12","31"
$yearstodays = $yearstodays + CalcDayofYear($acountyear)
NEXT
ENDIF
$daystoexpire = CalcDayofYear($expiredatearray) - CalcDayofYear($currentdatearray) + $yearstodays
?"Number of Days till password expires: " + $daystoexpire
IF $daystoexpire <= 2
? "Password Change required within 2 days, please change"
;SHELL 'postie.exe -host:$MailHost -to:$AdminRecpt -from:"ServiceAccountChg" -s:"Password Change" -msg:"The service account: $lstrUserName needs to be changed."'
SHELL 'postie.exe -host:$MailHost -to:$AdminRecpt -from:"ServiceAccountChg" -s:"Password Change" -msg:"The service account: $element needs to be changed."'
ELSE
? "Password will not expire for more than 2 Days, no action is needed"
ENDIF
NEXT ; -- comment out if you don't want to use split
ENDIF
Added in a small piece to tell you visually how many days it will be when the password expires..
Thanks!
- Kent