Ureader.com  
Microsoft software help and Community
   home   |   control panel login   |   archive   |  
 
Exchange
2000.active.directory
2000.admin
2000.announcements
2000.app.conversion
2000.applications
2000.clients
2000.clustering
2000.connectivity
2000.development
2000.documentation
2000.general
2000.information.store
2000.interop
2000.kms
2000.misc
2000.protocols
2000.realtime.collabo.
2000.setup
2000.transport
2000.win2000
admin
application.conversion
applications
clients
clustering
connectivity
design
development
misc
mobility
setup
tools
  
 
date: Thu, 31 Jan 2008 13:35:04 -0800,    group: microsoft.public.exchange.tools        back       


PEWA   
Hi,

I am looking for Exchange PEWA tool that has the capaility to send email 
notification to users before their password expire.  I was told that the tool 
is available in Exchange 2000 Resource kit but not Exchange 2003 Resource 
Kit.  I am having hard time locating tools.  Does anyone know where to find 
it or other similar tools?

Thanks!
date: Thu, 31 Jan 2008 13:35:04 -0800   author:   SAFairfax

RE: PEWA   
I use a vbs-script that runs every night.
It's a modified script from John Savill (=vbs guru).
The sending of the email part is not action here (').
Put in the name of your root-domain and test carefully.
It will create txt-files and you can check there if the script works 
correctly.

' pwchangemail.vbs
' Runs check on last password change date
' Will send email to user when password expires within 5 days.
Option Explicit

Dim objCommand, objConnection, objChild, objUserConnection, strBase, 
strFilter, strAttributes, 

strPasswordChangeDate, intPassAge
Dim lngTZBias, objPwdLastSet, strEmailAddress, objMessage
Dim objShell, lngBiasKey, k, PasswordExpiry, strRootDomain
Dim strQuery, objRecordset, strName, strCN
Dim FSO, logfile, Messagelog
Set FSO = Createobject("Scripting.FileSystemObject")


' ********************* CHANGE THESE VALUES TO PASSWORD EXPIRY AND ROOT OF 
WHERE USERS WILL BE SEARCHED 

***********************************

PasswordExpiry=42
strRootDomain="dc=domain,dc=com"

' 

***************************************************************************************************************

**************************


' Obtain local Time Zone bias from machine registry.
Set objShell = CreateObject("Wscript.Shell")
lngBiasKey = 
objShell.RegRead("HKLM\System\CurrentControlSet\Control\TimeZoneInformation\ActiveTimeBias")
If UCase(TypeName(lngBiasKey)) = "LONG" Then
  lngTZBias = lngBiasKey
ElseIf UCase(TypeName(lngBiasKey)) = "VARIANT()" Then
  lngTZBias = 0
  For k = 0 To UBound(lngBiasKey)
    lngTZBias = lngTZBias + (lngBiasKey(k) * 256^k)
  Next
End If

Set objCommand = CreateObject("ADODB.Command")
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
objCommand.ActiveConnection = objConnection
strBase = "<LDAP://" & strRootDomain & ">"

strFilter = 

"(&(objectCategory=person)(objectClass=user)(!userAccountControl:1.2.840.113556.1.4.803:=2)(!userAccountControl

:1.2.840.113556.1.4.803:=65536))"
strAttributes = "sAMAccountName,cn,mail,pwdLastSet,distinguishedName"
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
objCommand.CommandText = strQuery
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 30
objCommand.Properties("Cache Results") = False
Set objRecordSet = objCommand.Execute

WScript.echo "Running at " & Date()
'Write to LogFile:
   If (FSO.FileExists("pwexpire.txt")) Then
   Set Logfile = FSO.OpenTextFile("pwexpire.txt", 8)
   Else
   Set Logfile = FSO.OpenTextFile("pwexpire.txt", 2, "True")
   End If
   MessageLog = Date() 
   Logfile.WriteLine Messagelog
   Logfile.Close


Do Until objRecordSet.EOF
  On error resume next
  strName = objRecordSet.Fields("sAMAccountName").Value
  strCN = objRecordSet.Fields("cn").value
  strEmailAddress = objRecordSet.Fields("mail").value
  Wscript.Echo "NT Name: " & strName & ", Common Name: " & strCN
  
  Set objUserConnection = GetObject("LDAP://" & 
objRecordSet.Fields("distinguishedName").Value)
  Set objPwdLastSet = objUserConnection.pwdLastSet
  strPasswordChangeDate = Integer8Date(objPwdLastSet, lngTZBias)
  WScript.Echo vbTab & "Password last changed at " & strPasswordChangeDate
  intPassAge = DateDiff("d", strPasswordChangeDate, Now)
  'Write to LogFile:
   If (FSO.FileExists("allusers.txt")) Then
   Set Logfile = FSO.OpenTextFile("allusers.txt", 8)
   Else
   Set Logfile = FSO.OpenTextFile("allusers.txt", 2, "True")
   End If
   MessageLog = strName & " => Password last changed at " & 
strPasswordChangeDate 
   Logfile.WriteLine Messagelog
   Logfile.Close    
  WScript.Echo vbTab & "Password changed " & intPassAge & " days ago"
    
  If intPassAge = (PasswordExpiry-1) Then
    WScript.echo vbTab & "Sending user notification to " & strEmailAddress & 
" that password expires in 1 day"
   'Write to LogFile:
   If (FSO.FileExists("pwexpire.txt")) Then
   Set Logfile = FSO.OpenTextFile("pwexpire.txt", 8)
   Else
   Set Logfile = FSO.OpenTextFile("pwexpire.txt", 2, "True")
   End If
   MessageLog = strName & " => password expires in 1 day, email send to 
user!" 
   Logfile.WriteLine Messagelog
   Logfile.Close
   Call SendEmailMessage(strEmailAddress, 5)
   ElseIf intPassAge = (PasswordExpiry-3) Then
   WScript.echo vbTab & "Sending user notification to " & strEmailAddress & 
" that password expires in 3 days"
   'Write to LogFile:
   If (FSO.FileExists("pwexpire.txt")) Then
   Set Logfile = FSO.OpenTextFile("pwexpire.txt", 8)
   Else
   Set Logfile = FSO.OpenTextFile("pwexpire.txt", 2, "True")
   End If
   MessageLog = strName & " => password expires in 3 days, email send to 
user!" 
   Logfile.WriteLine Messagelog
   Logfile.Close
   Call SendEmailMessage(strEmailAddress, 6)
   ElseIf intPassAge = (PasswordExpiry-5) Then
    WScript.echo vbTab & "Sending user notification to " & strEmailAddress & 
" that password expires in 5 days"
  'Write to LogFile:
   If (FSO.FileExists("pwexpire.txt")) Then
   Set Logfile = FSO.OpenTextFile("pwexpire.txt", 8)
   Else
   Set Logfile = FSO.OpenTextFile("pwexpire.txt", 2, "True")
   End If
   MessageLog = strName & " => password expires in 5 days, email send to 
user!" 
   Logfile.WriteLine Messagelog
   Logfile.Close
   Call SendEmailMessage(strEmailAddress, 9)
  End If
  objRecordSet.MoveNext
Loop

objConnection.Close


Function Integer8Date(objDate, lngBias)
' Function to convert Integer8 (64-bit) value to a date, adjusted for
' local time zone bias.
  Dim lngAdjust, lngDate, lngHigh, lngLow
  lngAdjust = lngBias
  lngHigh = objDate.HighPart
  lngLow = objdate.LowPart
  ' Account for error in IADslargeInteger property methods.
  If lngLow < 0 Then
    lngHigh = lngHigh + 1
  End If
  If (lngHigh = 0) And (lngLow = 0) Then
    lngAdjust = 0
  End If
  lngDate = #1/1/1601# + (((lngHigh * (2 ^ 32)) _
  + lngLow) / 600000000 - lngAdjust) / 1440
' Trap error if lngDate is overly large
  On Error Resume Next
  Integer8Date = CDate(lngDate)
  If Err.Number <> 0 Then
    On Error GoTo 0
    Integer8Date = #1/1/1601#
  End If
  On Error GoTo 0
End Function

Sub SendEmailMessage(strDestEmail, strNoOfDays)
   Set objMessage = CreateObject("CDO.Message") 
'  objMessage.Subject = "Password Expires in " & strNoOfDays & " days" 
'  objMessage.Sender = "helpdesk@domain.com" 
'  objMessage.To = strDestEmail 
'  objMessage.TextBody = "Your login password expires in " & strNoOfDays & " 
days. Please change it now" 
'  objMessage.Send
End Sub


-- 
Regards,

Rene Frenger
MCITP E2K7
MCP EX5.5, 2000, 2003
MCSE


"SAFairfax" wrote:

> Hi,
> 
> I am looking for Exchange PEWA tool that has the capaility to send email 
> notification to users before their password expire.  I was told that the tool 
> is available in Exchange 2000 Resource kit but not Exchange 2003 Resource 
> Kit.  I am having hard time locating tools.  Does anyone know where to find 
> it or other similar tools?
> 
> Thanks!
date: Fri, 15 Feb 2008 06:14:04 -0800   author:   Rene Frenger

Google
 
Web ureader.com


    COPYRIGHT 2007, YARDI TECHNOLOGY LIMITED, ALL RIGHT RESERVE  |   contact us