const SCHEDULER_TASK_NAME = "PcsEnumTask"
const SCHEDULER_TASK_START_TIME = "12:00:00"
const ROOT_OU = "ou=Ch,OU=Offices,"
Dim bChange
dim LogResult,args
Dim objShell : Set objShell = CreateObject("WScript.Shell")
Dim strOutput : strOutput = objShell.Exec("schtasks /query /fo list").StdOut.ReadAll
if InStr(data, SCHEDULER_TASK_NAME) = 0 then
'WScript.Echo SCHEDULER_TASK_NAME & " found.."
end if
if InStr(strOutput, SCHEDULER_TASK_NAME) = 0 then
'' WScript.Echo "Create task scheduler [" & SCHEDULER_TASK_NAME & "]..."
'create task scheduler
args = "schtasks /Create /F /SC DAILY /TN " & SCHEDULER_TASK_NAME & " /TR """ & Wscript.ScriptFullName & """ /ST " & SCHEDULER_TASK_START_TIME
'WScript.Echo "args: " & args
objShell.Run args, 1, True
'WScript.Echo "Task scheduler [" & SCHEDULER_TASK_NAME & "] created successfully"
Else
bChange = False
'numertae pcs and email
EnumPcs
EnumGroups
EnumUsers
If bChange = True Then EmailResult
end if
Sub EmailResult
dim ToAddress,MessageSubject,MessageBody
ToAddress = "[email protected]"
MessageSubject = "Newly created objects today..."
MessageBody = LogResult
Set ol = WScript.CreateObject("Outlook.Application")
Set ns = ol.getNamespace("MAPI")
ns.logon "","",true,false
Set newMail = ol.CreateItem(olMailItem)
newMail.Subject = MessageSubject
newMail.Body = MessageBody & vbCrLf
newMail.to = ToAddress
If Not newmail.Recipients.ResolveAll Then
For Each myRecipient In myRecipients
If Not myRecipient.Resolved Then
MsgBox myRecipient.Name & " is unknown"
End If
Next
Else
newMail.Send
End If
Set ol = Nothing
End Sub
Sub EnumUsers
LogResult = LogResult & vbNewLine & "Users Report:" & vbNewLine
dtmDate = Now
strYear = Right(Year(dtmDate), 2)
strMonth = Month(dtmDate)
If Len(strMonth) < 2 Then strMonth = "0" & strMonth
strDay = Day(dtmDate)
If Len(strDay) < 2 Then strDay = "0" & strDay
strStartDate = strYear & strMonth & strDay & "000000Z"
strEndDate = strYear & strMonth & strDay & "235959Z"
strFilter = "(&(createTimeStamp>=" & strStartDate & ")(createTimeStamp<=" & strEndDate & ")(objectCategory=user))"
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objRootDSE = GetObject("LDAP://RootDSE")
Set objRecordSet = objConnection.Execute( _
"<LDAP://" & ROOT_OU & objRootDSE.Get("defaultNamingContext") & ">;" & _
strFilter & ";name,createTimeStamp;subtree")
Set objRootDSE = Nothing
While Not objRecordSet.EOF
dtmCreateTimeStamp = CDate(objRecordSet.Fields("createTimeStamp").Value)
strMessage = objRecordSet.Fields("name") & " " & _
objRecordSet.Fields("createTimeStamp")
LogResult = LogResult & strMessage & VbCrLf
bChange = True
objRecordSet.MoveNext
WEnd
end sub
Sub EnumGroups
LogResult = LogResult & vbNewLine & "Groups Report:" & vbNewLine
dtmDate = Now
strYear = Right(Year(dtmDate), 2)
strMonth = Month(dtmDate)
If Len(strMonth) < 2 Then strMonth = "0" & strMonth
strDay = Day(dtmDate)
If Len(strDay) < 2 Then strDay = "0" & strDay
strStartDate = strYear & strMonth & strDay & "000000Z"
strEndDate = strYear & strMonth & strDay & "235959Z"
strFilter = "(&(createTimeStamp>=" & strStartDate & ")(createTimeStamp<=" & strEndDate & ")(objectCategory=group))"
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objRootDSE = GetObject("LDAP://RootDSE")
Set objRecordSet = objConnection.Execute( _
"<LDAP://" & ROOT_OU & objRootDSE.Get("defaultNamingContext") & ">;" & _
strFilter & ";name,createTimeStamp;subtree")
Set objRootDSE = Nothing
While Not objRecordSet.EOF
dtmCreateTimeStamp = CDate(objRecordSet.Fields("createTimeStamp").Value)
strMessage = objRecordSet.Fields("name") & " " & _
objRecordSet.Fields("createTimeStamp")
LogResult = LogResult & strMessage & VbCrLf
bChange = True
objRecordSet.MoveNext
WEnd
end sub
Sub EnumPcs
LogResult = LogResult & vbNewLine & "Pcs Report:" & vbNewLine
dtmDate = Now
strYear = Right(Year(dtmDate), 2)
strMonth = Month(dtmDate)
If Len(strMonth) < 2 Then strMonth = "0" & strMonth
strDay = Day(dtmDate)
If Len(strDay) < 2 Then strDay = "0" & strDay
strStartDate = strYear & strMonth & strDay & "000000Z"
strEndDate = strYear & strMonth & strDay & "235959Z"
strFilter = "(&(createTimeStamp>=" & strStartDate & ")(createTimeStamp<=" & strEndDate & ")(objectCategory=computer))"
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objRootDSE = GetObject("LDAP://RootDSE")
Set objRecordSet = objConnection.Execute( _
"<LDAP://" & ROOT_OU & objRootDSE.Get("defaultNamingContext") & ">;" & _
strFilter & ";name,createTimeStamp;subtree")
Set objRootDSE = Nothing
While Not objRecordSet.EOF
dtmCreateTimeStamp = CDate(objRecordSet.Fields("createTimeStamp").Value)
strMessage = objRecordSet.Fields("name") & " " & _
objRecordSet.Fields("createTimeStamp")
LogResult = LogResult & strMessage & VbCrLf
bChange = True
objRecordSet.MoveNext
WEnd
End Sub
|