bsharath
asked on
Rejoinder code need some additions.
Hi,
Rejoinder code need some additions.
1. You gave me a code that can add users to Distribution and security groups. Can that code be added to the below. Code. So i can do both in one.
2. A way to get all computers in the domain. To be shown. In a box. Search the whole Domain (Local only)
3. To show all Users in an OU in a box. I have all users in my Domain in one box so i can see all of them in the Box. (Local Only)
4. To show all contacts in an OU in a box. (Local only)
All the above to have the total count and member of how many groups count shown.
I know all this will take a very long time to process. See if this can be saved after the first query some where in the local HDD and check slowly in the background after opening the app later.
So once opened it gets the data fast and starts processing in the background. And let me start quering any other data.
5. When the users are shown it has to show me how many groups it's a member of evern quering the root Domain.
6. Any way to have an option to reset the local password of the machine i want i am quering.
Regards
Sharath
Rejoinder code need some additions.
1. You gave me a code that can add users to Distribution and security groups. Can that code be added to the below. Code. So i can do both in one.
2. A way to get all computers in the domain. To be shown. In a box. Search the whole Domain (Local only)
3. To show all Users in an OU in a box. I have all users in my Domain in one box so i can see all of them in the Box. (Local Only)
4. To show all contacts in an OU in a box. (Local only)
All the above to have the total count and member of how many groups count shown.
I know all this will take a very long time to process. See if this can be saved after the first query some where in the local HDD and check slowly in the background after opening the app later.
So once opened it gets the data fast and starts processing in the background. And let me start quering any other data.
5. When the users are shown it has to show me how many groups it's a member of evern quering the root Domain.
6. Any way to have an option to reset the local password of the machine i want i am quering.
Regards
Sharath
<head>
<title>User Information</title>
<HTA:APPLICATION
APPLICATIONNAME="User Information"
BORDER="thin"
SCROLL="yes"
SINGLEINSTANCE="yes"
WINDOWSTATE="MAXIMIZE"
ID="oHTA"
>
<APPLICATION:HTA>
</head>
<script language="VBScript">
Const adVarChar = 200
Const VarCharMaxCharacters = 255
Const adFldIsNullable = 32
'http://www.experts-exchange.com/Programming/Languages/Visual_Basic/VB_Script/Q__23804616.html
Dim strEmailBCC
Dim strEmailServer
Dim arrSubjectText
Dim arrDomainNames
strEmailBCC = "" 'Enter the BCC field as "Your Name <youremail@yourdomain.com>"
strEmailServer = "MAILSERVER" 'Exchange server name
arrSubjectText = array("This is subject text #1","This is subject text #2","This is subject text #3","This is subject text #4","This is subject text #5","This is subject text #6","This is subject text #7","This is subject text #8")
arrToSpecial = array("","","","","","","","") 'Fill in the names (to email) so as to match with the subject lines above. Seperate names with a ; eg. "john Doe;Jane Doe"
arrCCSpecial = array("","","","","","","","") 'Fill in the names (to email) so as to match with the subject lines above. Seperate names with a ; eg. "john Doe;Jane Doe"
strEmailFrom = "" 'Leave Blank if the HTA should determine email address automatically
'Uncomment the next line to input your own domain names
'arrDomainNames = array("DOMAIN","DC=subdomain1,DC=domain,DC=com")
boolAllowPing = False 'Set to true to allow the interface to ping computers.
boolLookupLastLogin = False 'Set to true to allow the interface to query last logons
boolTableReports = False 'Set to true to allow the interface to use table format reports
Dim arrRows
Dim strEmailFrom
Dim strEmailTo
Dim strEmailCC
Dim DataList
Dim globalstrSearchField
Dim globalstrSearchBtnPush
Dim FileName
Dim fModif
Dim LastChildMenu
Dim LastMenu
Dim globalstrQueryBuilder
if NOT IsArray(arrDomainNames) then
GetDomainNames
End If
If strEmailFrom = "" Then
strEmailFrom = mid(GetEmailAddresses(GetUsersEmailAddress),1,len(GetEmailAddresses(GetUsersEmailAddress))-1)
strEmailFrom = GetUsersEmailAddress & " <" & strEmailFrom & ">" 'Getting email address from logged on user
End if
strEmailTo = GetUsersEmailAddress 'Get user name of logged on user so there is a default value when launched
strEmailCC = ""
DisplayTitle
Set LastChildMenu = Nothing
Set LastMenu = Nothing
Set oShell = CreateObject("WScript.Shell")
fTemp = oShell.ExpandEnvironmentStrings("%TEMP%")
fAppData = oShell.ExpandEnvironmentStrings("%APPDATA%")
Set MailboxList = CreateObject("ADOR.Recordset")
MailboxList.Fields.Append "legacyExchangeDN", adVarChar, VarCharMaxCharacters
MailboxList.Fields.Append "mailboxsize", adVarChar, VarCharMaxCharacters
MailboxList.Open
Set GroupMembershipDB = CreateObject("ADOR.Recordset")
GroupMembershipDB.Fields.Append "SAMAccountName", adVarChar, VarCharMaxCharacters, adFldIsNullable
GroupMembershipDB.Fields.Append "PrimaryGroupToken", adVarChar, VarCharMaxCharacters, adFldIsNullable
GroupMembershipDB.Fields.Append "DistinguishedName", adVarChar, VarCharMaxCharacters, adFldIsNullable
GroupMembershipDB.Fields.Append "SAMAccountType", adVarChar, VarCharMaxCharacters, adFldIsNullable
GroupMembershipDB.Fields.Append "MemberDistinguishedName", adVarChar, VarCharMaxCharacters, adFldIsNullable
GroupMembershipDB.Open
set dicGroupNumbers = CreateObject("Scripting.Dictionary")
Sub GetDomainNames
set objRootDSE = GetObject("LDAP://RootDSE")
strBase = "<LDAP://cn=Partitions," & objRootDSE.Get("ConfigurationNamingContext") & ">;"
strFilter = "(&(objectcategory=crossRef)(systemFlags=3));"
strAttrs = "name,trustParent,nCName,dnsRoot,distinguishedName;"
strScope = "onelevel"
set objConn = CreateObject("ADODB.Connection")
objConn.Provider = "ADsDSOObject"
objConn.Open "Active Directory Provider"
set objRS = objConn.Execute(strBase & strFilter & strAttrs & strScope)
objRS.MoveFirst
set arrDomainNames = CreateObject("Scripting.Dictionary")
set dicDomainHierarchy = CreateObject("Scripting.Dictionary")
set dicDomainRoot = CreateObject("Scripting.Dictionary")
while not objRS.EOF
dicDomainRoot.Add objRS.Fields("name").Value, objRS.Fields("nCName").Value
if objRS.Fields("trustParent").Value <> "" then
arrDomainNames.Add objRS.Fields("name").Value, 0
set objDomainParent = GetObject("LDAP://" & objRS.Fields("trustParent").Value)
dicDomainHierarchy.Add objRS.Fields("name").Value,objDomainParent.Get("name")
else
arrDomainNames.Add objRS.Fields("name").Value, 1
end if
objRS.MoveNext
wend
for each strDomain in arrDomainNames
'msgbox strDomain
next
End Sub
Sub Window_OnLoad
'Uncomment the following lines to hide them from the GUI
'tr_seatno.classname="HideFromGUI"
'tr_replacementseatno.classname="HideFromGUI"
'tr_building.classname="HideFromGUI"
'tr_extensionno.classname="HideFromGUI"
'tr_empid.classname="HideFromGUI"
'tr_department.classname="HideFromGUI"
'tr_designation.classname="HideFromGUI"
'tr_name.classname="HideFromGUI"
'tr_loginname.classname="HideFromGUI"
'tr_email.classname="HideFromGUI"
'tr_mailboxsize.classname="HideFromGUI"
'tr_mailboxstore.classname="HideFromGUI"
'tr_mobileno.classname="HideFromGUI"
'tr_company.classname="HideFromGUI"
'tr_address.classname="HideFromGUI"
'tr_city.classname="HideFromGUI"
'tr_state.classname="HideFromGUI"
'tr_zipcode.classname="HideFromGUI"
'tr_country.classname="HideFromGUI"
'tr_homephone.classname="HideFromGUI"
'tr_manager.classname="HideFromGUI"
'tr_whencreated.classname="HideFromGUI"
'tr_oupathuser.classname="HideFromGUI"
'tr_lastlogintimestamp.classname="HideFromGui"
'tr_notes.classname="HideFromGUI"
'tr_computerserialno.classname="HideFromGUI"
'tr_replacedmachine.classname="HideFromGUI"
'tr_replacedcomputerserialno.classname="HideFromGUI"
'tr_oupathcomputer.classname="HideFromGUI"
'tr_computeros.classname="HideFromGUI"
'tr_computerdescription.classname="HideFromGUI"
'tr_computercreated.classname="HideFromGUI"
'tr_groupmembership.classname="HideFromGUI"
'tr_dgmembership.classname="HideFromGUI"
'tr_managerlist.classname="HideFromGUI"
'tr_subordinates.classname="HideFromGUI"
TestToSeeWhatLinesAreHidden
btnFirstEvent.Disabled = True
btnPreviousEvent.Disabled = True
btnNextEvent.Disabled = True
btnLastEvent.Disabled = True
btnEmailThisRecord.Disabled = True
btnEMailAllRecords.Disabled = True
btnEmailAsAttachment.Disabled = True
txt_EmailTo.Value = strEmailTo
btnFirstEvent.Style.Visibility = "Hidden"
btnPreviousEvent.Style.Visibility = "Hidden"
btnNextEvent.Style.Visibility = "Hidden"
btnLastEvent.Style.Visibility = "Hidden"
btnEmailThisRecord.Style.Visibility = "Hidden"
btnEMailAllRecords.Style.Visibility = "Hidden"
btnEmailAsAttachment.Style.Visibility = "Hidden"
For Each objOption in lst_subordinates.Options
objOption.RemoveNode
Next
FillGroupList
FillManagerList
FillSubjectList
GetChkProfiles
GetMailboxDetails
chk_TableReports.Checked = boolTableReports
chk_LookupLastLogin.Checked = boolLookupLastLogin
chk_AllowPings.Checked = boolAllowPing
txt_EmailSubject_OnChange
End Sub
Sub TestToSeeWhatLinesAreHidden
'Test to see what lines are hidden and uncheck the boxes
if tr_seatno.classname="HideFromGUI" then chk_seatno.Checked = False
if tr_replacementseatno.classname="HideFromGUI" then chk_replacementseatno.Checked = False
if tr_building.classname="HideFromGUI" then chk_building.Checked = False
if tr_extensionno.classname="HideFromGUI" then chk_extensionno.Checked = False
if tr_empid.classname="HideFromGUI" then chk_empid.Checked = False
if tr_department.classname="HideFromGUI" then chk_department.Checked = False
if tr_designation.classname="HideFromGUI" then chk_designation.Checked = False
if tr_name.classname="HideFromGUI" then chk_name.Checked = False
if tr_loginname.classname="HideFromGUI" then chk_loginname.Checked = False
if tr_email.classname="HideFromGUI" then chk_email.Checked = False
if tr_mailboxsize.classname="HideFromGUI" then chk_mailboxsize.Checked = False
if tr_mailboxstore.classname="HideFromGUI" then chk_mailboxstore.Checked = False
if tr_mobileno.classname="HideFromGUI" then chk_mobileno.Checked = False
if tr_company.classname="HideFromGUI" then chk_company.Checked = False
if tr_address.classname="HideFromGUI" then chk_address.Checked = False
if tr_city.classname="HideFromGUI" then chk_city.Checked = False
if tr_state.classname="HideFromGUI" then chk_state.Checked = False
if tr_zipcode.classname="HideFromGUI" then chk_zipcode.Checked = False
if tr_country.classname="HideFromGUI" then chk_country.Checked = False
if tr_homephone.classname="HideFromGUI" then chk_homephone.Checked = False
if tr_manager.classname="HideFromGUI" then chk_manager.Checked = False
if tr_whencreated.classname="HideFromGUI" then chk_whencreated.Checked = False
if tr_oupathuser.classname="HideFromGUI" then chk_oupathuser.Checked = False
if tr_lastlogintimestamp.classname="HideFromGUI" then chk_lastlogintimestamp.Checked = False
if tr_notes.classname="HideFromGUI" then chk_notes.Checked = False
if tr_computerserialno.classname="HideFromGUI" then chk_computerserialno.Checked = False
if tr_replacedmachine.classname="HideFromGUI" then chk_replacedmachine.Checked = False
if tr_replacedcomputerserialno.classname="HideFromGUI" then chk_replacedcomputerserialno.Checked = False
if tr_oupathcomputer.classname="HideFromGUI" then chk_oupathcomputer.Checked = False
if tr_computeros.classname="HideFromGUI" then chk_computeros.Checked = False
if tr_computerdescription.classname="HideFromGUI" then chk_computerdescription.Checked = False
if tr_computercreated.classname="HideFromGUI" then chk_computercreated.Checked = False
if tr_groupmembership.classname="HideFromGUI" then chk_groupmembership.Checked = False
if tr_dgmembership.classname="HideFromGUI" then chk_dgmembership.Checked = False
if tr_managerlist.classname="HideFromGUI" then chk_managerlist.Checked = False
if tr_subordinates.classname="HideFromGUI" then chk_subordinates.Checked = False
End sub
Sub Clear_Form(resetGroupLists)
txt_seatno.Value = ""
txt_seatno.style.backgroundColor="#FFFFFF"
txt_seatno.Disabled = False
txt_replacementseatno.Value = ""
txt_replacementseatno.style.backgroundColor="#FFFFFF"
txt_replacementseatno.Disabled = False
txt_building.Value = ""
txt_building.style.backgroundColor="#FFFFFF"
txt_building.Disabled = False
txt_extensionno.Value = ""
txt_extensionno.style.backgroundColor="#FFFFFF"
txt_extensionno.Disabled = False
txt_empid.Value = ""
txt_empid.style.backgroundColor="#FFFFFF"
txt_empid.Disabled = False
txt_department.Value = ""
txt_department.style.backgroundColor="#FFFFFF"
txt_department.Disabled = False
txt_designation.Value = ""
txt_designation.style.backgroundColor="#FFFFFF"
txt_designation.Disabled = False
txt_name.Value = ""
txt_name.style.backgroundColor="#FFFFFF"
txt_name.Disabled = False
txt_loginname.Value = ""
txt_loginname.style.backgroundColor="#FFFFFF"
txt_loginname.Disabled = False
txt_email.Value = ""
txt_email.style.backgroundColor="#FFFFFF"
txt_email.Disabled = False
txt_mailboxsize.Value = ""
txt_mailboxsize.style.backgroundColor="#FFFFFF"
txt_mailboxsize.Disabled = False
txt_mailboxstore.Value = ""
txt_mailboxstore.style.backgroundColor="#FFFFFF"
txt_mailboxstore.Disabled = False
txt_notes.Value = ""
txt_notes.style.backgroundColor="#FFFFFF"
txt_notes.Disabled = False
txt_computerserialno.Value = ""
txt_computerserialno.style.backgroundColor="#FFFFFF"
txt_computerserialno.Disabled = False
txt_replacedmachine.Value = ""
txt_replacedmachine.Disabled = False
txt_replacedmachine.style.backgroundcolor="#FFFFFF"
txt_replacedcomputerserialno.value = ""
txt_replacedcomputerserialno.Disabled = False
txt_replacedcomputerserialno.Style.backgroundcolor="#FFFFFF"
txt_oupathcomputer.Value = ""
txt_oupathcomputer.style.backgroundColor="#FFFFFF"
txt_oupathcomputer.Disabled = False
txt_computeros.Value = ""
txt_computeros.Style.backgroundColor="#FFFFFF"
txt_computeros.Disabled = False
txt_computerservicepack.Value = ""
txt_computerservicepack.Style.backgroundColor="#FFFFFF"
txt_computerservicepack.Disabled = False
txt_computercreated.Value = ""
txt_computercreated.Style.backgroundColor="#FFFFFF"
txt_computercreated.Disabled = False
txt_computerdescription.Value = ""
txt_computerdescription.Style.backgroundColor="#FFFFFF"
txt_computerdescription.Disabled = False
txt_mobileno.Value = ""
txt_mobileno.style.backgroundColor="#FFFFFF"
txt_mobileno.Disabled = False
txt_company.Value = ""
txt_company.style.backgroundColor="#FFFFFF"
txt_company.Disabled = False
txt_address.Value = ""
txt_address.style.backgroundColor="#FFFFFF"
txt_address.Disabled = False
txt_city.Value = ""
txt_city.style.backgroundColor="#FFFFFF"
txt_city.Disabled = False
txt_state.Value = ""
txt_state.style.backgroundColor="#FFFFFF"
txt_state.Disabled = False
txt_zipcode.Value = ""
txt_zipcode.style.backgroundColor="#FFFFFF"
txt_zipcode.Disabled = False
txt_country.Value = ""
txt_country.style.backgroundColor="#FFFFFF"
txt_country.Disabled = False
txt_homephone.Value = ""
txt_homephone.style.backgroundColor="#FFFFFF"
txt_homephone.Disabled = False
txt_manager.Value = ""
txt_manager.style.backgroundColor="#FFFFFF"
txt_manager.Disabled = False
txt_managerseen.Value = ""
txt_managerseen.style.backgroundColor="#FFFFFF"
txt_managerseen.Disabled = False
txt_whencreated.Value = ""
txt_whencreated.style.backgroundColor="#FFFFFF"
txt_whencreated.Disabled = False
txt_oupathuser.Value = ""
txt_oupathuser.style.backgroundColor="#FFFFFF"
txt_oupathuser.Disabled = False
txt_lastlogintimestamp.Value = ""
txt_lastlogintimestamp.style.backgroundcolor="#FFFFFF"
txt_lastlogintimestamp.Disabled = False
btnFirstEvent.Style.Visibility = "Hidden"
btnPreviousEvent.Style.Visibility = "Hidden"
btnNextEvent.Style.Visibility = "Hidden"
btnLastEvent.Style.Visibility = "Hidden"
btnEmailThisRecord.Style.Visibility = "Hidden"
btnEMailAllRecords.Style.Visibility = "Hidden"
btnEmailAsAttachment.Style.Visibility = "Hidden"
span_currentrecord.InnerHTML = "0"
span_totalrecords.InnerHTML = "0"
span_computerip.InnerHTML = ""
span_computerOnline.InnerHTML = ""
span_enabled.InnerHTML = ""
span_userorcontact.InnerHTML = ""
if lcase(resetGroupLists) = lcase("resetGroupLists") then
GroupMembershipDB.Filter = ""
GroupMembershipDB.MoveFirst
Do While Not GroupMembershipDB.EOF
GroupMembershipDB.Delete
GroupMembershipDB.MoveNext
Loop
FillGroupList
end if
For Each objOption in lst_subordinates.Options
objOption.RemoveNode
Next
FillManagerList
End Sub
Sub Submit_Form(btnPush)
arrFields = Array(_
"txt_seatno", _
"txt_building", _
"txt_extensionno", _
"txt_empid", _
"txt_department", _
"txt_designation", _
"txt_name", _
"txt_loginname", _
"txt_email", _
"txt_notes", _
"txt_mobileno", _
"txt_company", _
"txt_address", _
"txt_city", _
"txt_state", _
"txt_zipcode", _
"txt_country", _
"txt_homephone", _
"txt_managerseen", _
"txt_oupathuser", _
"txt_computerserialno", _
"txt_whencreated", _
"txt_oupathcomputer", _
"txt_computeros", _
"txt_computercreated" _
)
boolValid = False
For Each strField In arrFields
If Eval(strField & ".Disabled") = True Then
boolValid = True
End If
If Eval(strField & ".Disabled") = False Then
strCurrentField = strField
End If
Next
If boolValid = False Then strCurrentField = "INVALID"
Select Case strCurrentField
Case "txt_seatno"
If txt_seatno.Value = "" Then
strSearchField = "(info=*)"
Else
strSearchField = "(info=*" & txt_seatno.Value & "*)"
End If
Case "txt_building"
If txt_building.Value = "" Then
strSearchField = "(physicalDeliveryOfficeName=*)"
Else
strSearchField = "(physicalDeliveryOfficeName=*" & txt_building.Value & "*)"
End If
Case "txt_extensionno"
If txt_extensionno.Value = "" Then
strSearchField = "(telephoneNumber=*)"
Else
strSearchField = "(telephoneNumber=*" & txt_extensionno.Value & "*)"
End If
Case "txt_empid"
If txt_empid.Value = "" Then
strSearchField = "(description=*)"
Else
strSearchField = "(description=*" & txt_empid.Value & "*)"
End If
Case "txt_department"
If txt_department.Value = "" Then
strSearchField = "(department=*)"
Else
strSearchField = "(department=*" & txt_department.Value & "*)"
End If
Case "txt_designation"
If txt_designation.Value = "" Then
strSearchField = "(title=*)"
Else
strSearchField = "(title=*" & txt_designation.Value & "*)"
End If
Case "txt_name"
If txt_name.Value = "" Then
strSearchField = "(cn=*)"
Else
strSearchField = "(cn=*" & txt_name.Value & "*)"
End If
Case "txt_loginname"
If txt_loginname.Value = "" Then
strSearchField = "(samAccountName=*)"
Else
strSearchField = "(samAccountName=*" & txt_loginname.Value & "*)"
End If
Case "txt_email"
If txt_email.Value = "" Then
strSearchField = "(mail=*)"
Else
strSearchField = "(mail=*" & txt_email.Value & "*)"
End If
Case "txt_notes"
If txt_notes.Value = "" Then
strSearchField = "(info=*)"
Else
strSearchField = "(info=*" & txt_notes.Value & "*)"
End If
Case "txt_mobileno"
If txt_mobileno.Value = "" Then
strSearchField = "(mobile=*)"
Else
strSearchField = "(mobile=*" & txt_mobileno.Value & "*)"
End If
Case "txt_company"
If txt_company.Value = "" Then
strSearchField = "(company=*)"
Else
strSearchField = "(company=*" & txt_company.Value & "*)"
End If
Case "txt_address"
If txt_address.Value = "" Then
strSearchField = "(streetAddress=*)"
Else
strSearchField = "(streetAddress=*" & txt_address.Value & "*)"
End If
Case "txt_city"
If txt_city.Value = "" Then
strSearchField = "(l=*)"
Else
strSearchField = "(l=*" & txt_city.Value & "*)"
End If
Case "txt_state"
If txt_state.Value = "" Then
strSearchField = "(st=*)"
Else
strSearchField = "(st=*" & txt_state.Value & "*)"
End If
Case "txt_zipcode"
If txt_zipcode.Value = "" Then
strSearchField = "(postalCode=*)"
Else
strSearchField = "(postalCode=*" & txt_zipcode.Value & "*)"
End If
Case "txt_country"
If txt_country.Value = "" Then
strSearchField = "(c=*)"
Else
strSearchField = "(c=*" & txt_country.Value & "*)"
End If
Case "txt_homephone"
If txt_homephone.Value = "" Then
strSearchField = "(homePhone=*)"
Else
strSearchField = "(homePhone=*" & txt_homephone.Value & "*)"
End If
Case "txt_managerseen"
If txt_managerseen.Value = "" Then
strSearchField = "(manager=*)"
Else
strSearchField = GetManagerDN(txt_managerseen.Value)
End If
Case "txt_oupathuser"
If txt_oupathuser.Value <> "" Then
strSearchField = GetOUMembers(txt_oupathuser.Value)
End If
Case "txt_whencreated"
If txt_whencreated.Value = "" Then
strSearchField = "(whenCreated=*)"
Else
if NOT IsDate(txt_whencreated.Value) then
msgbox "Invalid date - enter as dd/mm/yyyy"
strSearchField = "INVALID"
else
strWhenCreated = Year(txt_whencreated.Value) & Right("0" & Month(txt_whencreated.Value), 2) & Right("0" & Day(txt_whencreated.Value), 2)
strSearchField = "(whenCreated>=" & strWhenCreated & "000000.0Z)(whenCreated<=" & strWhenCreated & "235959.0Z)"
end if
End If
Case "txt_computerserialno"
If txt_notes.Value = "" Then
strSearchField = "(info=*)"
Else
strSearchField = "(info=*" & txt_computerserialno.Value & "*)"
End If
Case "txt_oupathcomputer"
If txt_oupathcomputer.Value = "" then
strSearchField = "INVALID"
else
strSearchField = GetComputersBasedOnOU(txt_oupathcomputer.Value)
end if
Case "txt_computeros"
If txt_computeros.Value = "" Then
strSearchField = "INVALID"
else
strSearchField = GetComputersForOSQuery(txt_computeros.Value)
End If
Case "txt_computercreated"
If txt_computercreated.Value = "" Then
strSearchField = "INVALID"
else
if NOT IsDate(txt_computercreated.Value) then
msgbox "Invalid date - enter as dd/mm/yyyy"
strSearchField = "INVALID"
else
strSearchField = GetComputersForDateCreatedQuery(txt_computercreated.Value)
End If
End If
Case Else
strSearchField = "INVALID"
End Select
if btnPush = "Disabled" then
strSearchField = "(userAccountControl:1.2.840.113556.1.4.803:=2)"
end if
if btnPush = "Group" then
For i = 0 to (lst_groupnames.Options.Length - 1)
If (lst_groupnames.Options(i).Selected) Then
arrGroupNames = split(lst_groupnames.Options(i).Value,";")
sprimaryGroupID = arrGroupNames(0)
sMemberOf = arrGroupNames(1)
End If
Next
if sprimaryGroupID = 513 then
strSearchField = "(primaryGroupID=" & sprimaryGroupID & ")"
else
strSearchField = "(memberOf=" & sMemberOf & ")"
end if
end if
if btnPush = "DistributionGroup" then
For i = 0 to (lst_dgnames.Options.Length - 1)
If (lst_dgnames.Options(i).Selected) Then
arrGroupNames = split(lst_dgnames.Options(i).Value,";")
sprimaryGroupID = arrGroupNames(0)
sMemberOf = arrGroupNames(1)
End If
Next
if sprimaryGroupID = 513 then
strSearchField = "(primaryGroupID=" & sprimaryGroupID & ")"
else
strSearchField = "(memberOf=" & sMemberOf & ")"
end if
end if
if btnPush = "ManagerList" then
For i = 0 to (lst_ManagerList.Options.Length - 1)
If (lst_ManagerList.Options(i).Selected) Then
strSearchField = "(distinguishedname=" & lst_ManagerList.Options(i).Value & ")"
End If
Next
end if
if btnPush = "Subordinate" then
For i = 0 to (lst_subordinates.Options.Length - 1)
If (lst_subordinates.Options(i).Selected) Then
arrSubordinateNames = split(lst_subordinates.Options(i).Value,";")
strSearchField = "(samAccountName=*" & arrSubordinateNames(0) & "*)"
End If
Next
end if
if btnPush = "DisabledToday" then
strWhenChanged = Year(txt_whencreated.Value) & Right("0" & Month(txt_whencreated.Value), 2) & Right("0" & Day(txt_whencreated.Value), 2)
strSearchField = "(userAccountControl:1.2.840.113556.1.4.803:=2)(whenChanged>=" & strWhenChanged & "000000.0Z)(whenChanged<=" & strWhenChanged & "235959.0Z)"
end if
if btnPush = "FileOpen" then
strSearchField = globalStrSearchField
btnPush = globalStrSearchBtnPush
End if
boolLogonSearch = False
dmtDateToCompare = Date()
if InStr(btnPush,"Logon:") > 0 then
strSearchField = "(samAccountName=*)"
boolLogonSearch = True
intNumberOfDays = right(btnPush,Len(btnPush)-InStr(btnPush,":"))
dmtDateToCompare = Date() - intNumberOfDays
if NOT chk_LookupLastLogin.Checked then
chk_LookupLastLogin.Checked = True
boolLookupLastLogin = True
end if
end if
boolMailboxSizeSearch = False
if InStr(btnPush,"MailboxSize:") > 0 then
strSearchField = "(samAccountName=*)"
boolMailboxSizeSearch = True
intMailboxSizeToCompare = right(btnPush,Len(btnPush)-InStr(btnPush,":"))
end if
Clear_Form ""
If strSearchField <> "INVALID" Then
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
boolFoundRecords = False
for each strDomain in arrDomainNames
' Search entire Active Directory domain.
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(&(objectCategory=user)(objectCategory=contact)" & strSearchField & ")"
' Comma delimited list of attribute values to retrieve.
if boolLookupLastLogin then
strAttributes = "physicalDeliveryOfficeName,TelephoneNumber,description,Department,Title,cn,samAccountName,mail,Info,Mobile,company,streetAddress,l,st,postalCode,c,homePhone,manager,whenCreated,distinguishedName,userAccountControl,legacyExchangeDN,homeMDB,primaryGroupID,lastLogon"
else
strAttributes = "physicalDeliveryOfficeName,TelephoneNumber,description,Department,Title,cn,samAccountName,mail,Info,Mobile,company,streetAddress,l,st,postalCode,c,homePhone,manager,whenCreated,distinguishedName,userAccountControl,legacyExchangeDN,homeMDB,primaryGroupID"
end if
' Construct the LDAP syntax query.
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 100
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False
adoCommand.Properties("Sort On") = "cn"
' Run the query.
Set adoRecordset = adoCommand.Execute
' Enumerate the resulting recordset.
strDetails = ""
If Not adoRecordset.EOF Then
boolFoundRecords = True
Do Until adoRecordset.EOF
mailboxlist.filter = "legacyExchangeDN = '" & adoRecordset.Fields("legacyExchangeDN").Value & "'"
if NOT mailboxlist.EOF then
intMailboxSize = mailboxlist.fields.Item("mailboxsize")
else
intMailboxSize = "0"
End if
if boolLookupLastLogin then
if NOT IsNull(adoRecordset.Fields("lastLogon").Value) then
Set objLastLogon = adoRecordset.Fields("lastLogon").Value
intLastLogonTime = objLastLogon.HighPart * (2^32) + objLastLogon.LowPart
intLastLogonTime = intLastLogonTime / (60 * 10000000)
intLastLogonTime = intLastLogonTime / 1440
intLastLogonTime = intLastLogonTime + #1/1/1601#
if intLastLogonTime = #1/1/1601# then
intLastLogonTime = ""
end if
else
intLastLogonTime = ""
end if
else
intLastLogonTime = ""
end if
if NOT IsDate(intLastLogonTime) then
dmtDateToCompareTo = dmtDateToCompare
else
dmtDateToCompareTo = intLastLogonTime
end if
if (CDate(dmtDateToCompareTo) >= CDate(dmtDateToCompare)) AND boolLogonSearch then
'Do nothing
else
if (CInt(intMailboxSize) < CInt(intMailboxSizeToCompare)) AND boolMailboxSizeSearch then
'Do nothing
else
If strDetails <> "" Then strDetails = strDetails & "|TR|"
if adoRecordset.Fields("userAccountControl").Value AND 2 then
strEnabled = "Disabled"
else
strEnabled = "Enabled"
End If
strMachineName = ""
strBuilding = ""
strSerialNumber = ""
If IsNull(adoRecordset.Fields("Info").Value) = False Then
arrNotesField = Split(adoRecordset.Fields("Info").Value,vbCRLF)
for each strLine in arrNotesField
if InStr(UCase(strLine),"MACHINE NAME : ") then
strMachineName = trim(mid(strLine,15))
End if
if InStr(UCase(strLine),"LOCATION : ") then
strBuilding = trim(mid(strLine,11))
End if
if InStr(UCase(strLine),"SERIAL NO : ") then
strSerialNumber = trim(mid(strLine,12))
End if
next
strDetails = strDetails & replace(strBuilding,vbCRLF,"")
End If
strDetails = strDetails & "|TD|" & adoRecordset.Fields("physicalDeliveryOfficeName").Value &_
"|TD|" & adoRecordset.Fields("TelephoneNumber").Value
If IsNull(adoRecordset.Fields("Description").Value) = False Then
strDetails = strDetails & "|TD|" & Join(adoRecordset.Fields("description").Value)
Else
strDetails = strDetails & "|TD|"
End If
strDetails = strDetails & "|TD|" & adoRecordset.Fields("Department").Value &_
"|TD|" & adoRecordset.Fields("Title").Value &_
"|TD|" & Replace(adoRecordset.Fields("cn").Value, "CN=", "") &_
"|TD|" & adoRecordset.Fields("samAccountName").Value &_
"|TD|" & adoRecordset.Fields("mail").Value &_
"|TD|" & strMachineName &_
"|TD|" & adoRecordset.Fields("Mobile").Value &_
"|TD|" & adoRecordset.Fields("company").Value &_
"|TD|" & adoRecordset.Fields("streetAddress").Value &_
"|TD|" & adoRecordset.Fields("l").Value &_
"|TD|" & adoRecordset.Fields("st").Value &_
"|TD|" & adoRecordset.Fields("postalCode").Value &_
"|TD|" & adoRecordset.Fields("c").Value &_
"|TD|" & adoRecordset.Fields("homePhone").Value &_
"|TD|" & adoRecordset.Fields("manager").Value &_
"|TD|" & adoRecordset.Fields("whenCreated").Value &_
"|TD|" & adoRecordset.Fields("samAccountName").Value &_
"|TD|" & adoRecordset.Fields("distinguishedName").Value &_
"|TD|" & intLastLogonTime &_
"|TD|" & strSerialNumber &_
"|TD|" & UCASE(strEnabled) &_
"|TD|" & intMailboxSize &_
"|TD|" & adoRecordset.Fields("homeMDB").Value &_
"|TD|" & adoRecordset.Fields("primaryGroupID").Value
strDetails = replace(strDetails,vbCRLF,"")
end if
end if
adoRecordset.MoveNext
Loop
End If
next
if NOT boolFoundRecords then
MsgBox "No records were found"
End if
' Clean up.
adoRecordset.Close
Set adoRecordset = Nothing
adoConnection.Close
If strDetails <> "" Then
arrRows = ""
arrRows = Split(strDetails, "|TR|")
If UBound(arrRows) < 0 Then
span_currentrecord.InnerHTML = 0
span_totalrecords.InnerHTML = 0
Else
span_currentrecord.InnerHTML = 1
Get_Event
span_totalrecords.InnerHTML = UBound(arrRows)+1
End If
Else
span_currentrecord.InnerHTML = 0
span_totalrecords.InnerHTML = 0
End If
If strDetails = "" Then
btnFirstEvent.Disabled = True
btnPreviousEvent.Disabled = True
btnNextEvent.Disabled = True
btnLastEvent.Disabled = True
btnEmailThisRecord.Disabled = True
btnEMailAllRecords.Disabled = True
btnEmailAsAttachment.Disabled = True
btnFirstEvent.Style.Visibility = "Hidden"
btnPreviousEvent.Style.Visibility = "Hidden"
btnNextEvent.Style.Visibility = "Hidden"
btnLastEvent.Style.Visibility = "Hidden"
btnEmailThisRecord.Style.Visibility = "Hidden"
btnEMailAllRecords.Style.Visibility = "Hidden"
btnEmailAsAttachment.Style.Visibility = "Hidden"
ElseIf UBound(arrRows) = 0 Then
btnFirstEvent.Disabled = True
btnPreviousEvent.Disabled = True
btnNextEvent.Disabled = True
btnLastEvent.Disabled = True
btnEmailThisRecord.Disabled = False
btnEMailAllRecords.Disabled = False
btnEmailAsAttachment.Disabled = False
btnFirstEvent.Style.Visibility = "Hidden"
btnPreviousEvent.Style.Visibility = "Hidden"
btnNextEvent.Style.Visibility = "Hidden"
btnLastEvent.Style.Visibility = "Hidden"
btnEmailThisRecord.Style.Visibility = "Visible"
btnEMailAllRecords.Style.Visibility = "Visible"
btnEmailAsAttachment.Style.Visibility = "Visible"
Else
btnFirstEvent.Disabled = False
btnPreviousEvent.Disabled = False
btnNextEvent.Disabled = False
btnLastEvent.Disabled = False
btnEmailThisRecord.Disabled = False
btnEMailAllRecords.Disabled = False
btnEmailAsAttachment.Disabled = False
btnFirstEvent.Style.Visibility = "Visible"
btnPreviousEvent.Style.Visibility = "Visible"
btnNextEvent.Style.Visibility = "Visible"
btnLastEvent.Style.Visibility = "Visible"
btnEmailThisRecord.Style.Visibility = "Visible"
btnEMailAllRecords.Style.Visibility = "Visible"
btnEmailAsAttachment.Style.Visibility = "Visible"
End If
globalStrSearchBtnPush = BtnPush
globalstrSearchField = strSearchField
if chk_qbrecorder.Checked then
AddToQueryBuilder
end if
Else
MsgBox "Please type a search request into one of the fields, then click Submit."
End If
if InStr(Join(arrFields),strCurrentField) then
if strSearchField <> "INVALID" then
execute(strCurrentField & ".focus")
execute(strCurrentField & ".select()")
end if
end if
End Sub
Sub Get_Event
arrData = Split(arrRows(span_currentrecord.InnerHTML - 1), "|TD|")
txt_seatno.Value = arrData(0)
txt_building.Value = arrData(1)
txt_extensionno.Value = arrData(2)
txt_empid.Value = arrData(3)
txt_department.Value = arrData(4)
txt_designation.Value = arrData(5)
txt_name.Value = arrData(6)
txt_loginname.Value = arrData(7)
txt_email.Value = arrData(8)
txt_mailboxsize.Value = arrData(25)
txt_mailboxstore.Value = arrData(26)
txt_notes.Value = arrData(9)
if boolAllowPing then PingComputer arrData(9)
txt_computerserialno.Value = arrData(23)
arrTemp = GetComputerInfo(arrData(9))
if IsArray(arrTemp) then
txt_oupathcomputer.value = GetOUPath(replace(arrTemp(0),"""",""))
txt_computeros.value = replace(arrTemp(1),"""","")
txt_computerservicepack.value = replace(arrTemp(2),"""","")
txt_computerdescription.value = replace(arrTemp(4),"""","")
txt_computercreated.value = replace(arrTemp(3),"""","")
else
txt_oupathcomputer.value = ""
txt_computeros.value = ""
txt_computerservicepack.value = ""
txt_computerdescription.value = ""
txt_computercreated.value = ""
End if
txt_mobileno.Value = arrData(10)
txt_company.Value = arrData(11)
txt_address.Value = arrData(12)
txt_city.Value = arrData(13)
txt_state.Value = arrData(14)
txt_zipcode.Value = arrData(15)
txt_country.Value = arrData(16)
txt_homephone.Value = arrData(17)
txt_manager.Value = arrData(18)
For Each objOption in lst_managerlist.Options
objOption.RemoveNode
Next
span_managerlist.InnerHTML = "(0)"
if txt_manager.Value <> "" then
txt_managerseen.Value = mid(txt_manager.Value,4,instr(txt_manager.Value,",")-4)
set newOption = document.createElement("OPTION")
newOption.Text = txt_managerseen.Value & " (" & GetSubordinateNumbers(txt_manager.Value) & ")"
newOption.Value = txt_manager.Value
lst_managerlist.Add newOption
span_managerlist.InnerHTML = "(1)"
else
txt_managerseen.Value = txt_manager.Value
end if
txt_whencreated.Value = arrData(19)
txt_oupathuser.value = GetOUPath(arrData(21))
txt_lastlogintimestamp.value = arrData(22)
span_enabled.InnerHTML = arrData(24)
if txt_loginname.Value <> "" then
span_userorcontact.InnerHTML = "USER"
else
span_userorcontact.InnerHTML = "CONTACT"
end if
FillGroupMembershipList arrData(21), arrData(27)
End Sub
Sub First_Event
If IsArray(arrRows) = False Then
MsgBox "There are no records to display."
Else
If span_totalrecords.InnerHTML < 1 Then
MsgBox "There are no records to display"
ElseIf span_currentrecord.InnerHTML = 1 Then
MsgBox "You are already viewing the first record."
Else
span_currentrecord.InnerHTML = 1
Get_Event
End If
End If
End Sub
Sub Previous_Event
If IsArray(arrRows) = False Then
MsgBox "There are no records to display."
Else
If span_currentrecord.InnerHTML > 1 Then
span_currentrecord.InnerHTML = span_currentrecord.InnerHTML - 1
Get_Event
ElseIf span_currentrecord.InnerHTML = 1 Then
MsgBox "You are already viewing the first record."
Else
MsgBox "There are no records to display"
End If
End If
End Sub
Sub Next_Event
If IsArray(arrRows) = False Then
MsgBox "There are no records to display."
Else
If span_totalrecords.InnerHTML = 0 Then
MsgBox "There are no records for to display"
ElseIf span_currentrecord.InnerHTML = span_totalrecords.InnerHTML Then
MsgBox "You are already viewing the last record."
Else
span_currentrecord.InnerHTML = span_currentrecord.InnerHTML + 1
Get_Event
End If
End If
End Sub
Sub Last_Event
If IsArray(arrRows) = False Then
MsgBox "There are no records to display."
Else
If span_totalrecords.InnerHTML = 0 Then
MsgBox "There are no records to display"
ElseIf span_currentrecord.InnerHTML = span_totalrecords.InnerHTML Then
MsgBox "You are already viewing the last record."
Else
span_currentrecord.InnerHTML = span_totalrecords.InnerHTML
Get_Event
End If
End If
End Sub
Sub Detect_Search_Field(strCurrentField)
arrFields = Array(_
"txt_seatno", _
"txt_replacementseatno", _
"txt_building", _
"txt_extensionno", _
"txt_empid", _
"txt_department", _
"txt_designation", _
"txt_name", _
"txt_loginname", _
"txt_email", _
"txt_mailboxsize", _
"txt_mailboxstore", _
"txt_notes", _
"txt_computerserialno", _
"txt_replacedmachine", _
"txt_replacedcomputerserialno", _
"txt_oupathcomputer", _
"txt_computeros", _
"txt_computerservicepack", _
"txt_computerdescription", _
"txt_computercreated", _
"txt_mobileno", _
"txt_company", _
"txt_address", _
"txt_city", _
"txt_state", _
"txt_zipcode", _
"txt_country", _
"txt_homephone", _
"txt_managerseen", _
"txt_whencreated", _
"txt_oupathuser", _
"txt_lastlogintimestamp" _
)
For Each strField In arrFields
If LCase(strField) <> LCase(strCurrentField) Then
Execute strField & ".style.backgroundColor=""#D3D3D3"""
Execute strField & ".Disabled = True"
End If
Next
End Sub
Function CreateHeaderRow(CSVorTABLE)
Dim arrHeader()
x = 0
if chk_seatno.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Seat No"""
x = x + 1
end if
if chk_building.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Building"""
x = x + 1
end if
if chk_extensionno.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Extension"""
x = x + 1
end if
if chk_empid.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Emp ID"""
x = x + 1
end if
if chk_department.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Department"""
x = x + 1
end if
if chk_designation.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Designation"""
x = x + 1
end if
if chk_name.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """User Name"""
x = x + 1
end if
if chk_loginname.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Login Name"""
x = x + 1
end if
if chk_email.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Email Address"""
x = x + 1
end if
if chk_mailboxsize.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Mailbox Size (MB)"""
x = x + 1
end if
if chk_mailboxstore.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Mailbox Store"""
x = x + 1
end if
if chk_notes.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Computer"""
x = x + 1
end if
if chk_computerserialno.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Serial No"""
x = x + 1
end if
if chk_oupathcomputer.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """OU Path - Computer"""
x = x + 1
end if
if chk_computeros.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Computer OS"""
x = x + 1
end if
if chk_computeros.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Service Pack"""
x = x + 1
end if
if chk_computerdescription.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Computer Description"""
x = x + 1
end if
if chk_computercreated.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Computer Account Created"""
x = x + 1
end if
if chk_mobileno.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Mobile"""
x = x + 1
end if
if chk_company.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Company"""
x = x + 1
end if
if chk_address.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Address"""
x = x + 1
end if
if chk_city.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """City"""
x = x + 1
end if
if chk_state.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """State"""
x = x + 1
end if
if chk_zipcode.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Zip Code"""
x = x + 1
end if
if chk_country.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Country"""
x = x + 1
end if
if chk_homephone.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Home Phone"""
x = x + 1
end if
if chk_manager.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Manager"""
x = x + 1
end if
if chk_subordinates.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Subordinates"""
x = x + 1
end if
if chk_whencreated.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Date Created"""
x = x + 1
end if
if chk_oupathuser.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """OU Path - User"""
x = x + 1
end if
if chk_lastlogintimestamp.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Last Logon"""
x = x + 1
end if
if chk_groupmembership.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Group Membership"""
x = x + 1
end if
if CSVorTABLE <> "" then
strHeader = strHeader & "<tr>"
for n = 0 to UBound(arrHeader)-1
strHeader = strHeader & "<td valign=""top"" align=""left""><b>" & replace(arrHeader(n),"""","") & "</b></td>"
next
strHeader = strHeader & "</tr>" & vbCRLF
else
strHeader = Join(arrHeader,",")
end if
CreateHeaderRow = strHeader
End Function
Function PopulateTableForCSV(CSVorTABLE)
For intRow = LBound(arrRows) To UBound(arrRows)
arrData = Split(arrRows(intRow), "|TD|")
x = 0
if chk_seatno.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(0) & """"
x = x + 1
end if
if chk_building.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(1) & """"
x = x + 1
end if
if chk_extensionno.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(2) & """"
x = x + 1
end if
if chk_empid.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(3) & """"
x = x + 1
end if
if chk_department.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(4) & """"
x = x + 1
end if
if chk_designation.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(5) & """"
x = x + 1
end if
if chk_name.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(6) & """"
x = x + 1
end if
if chk_loginname.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(7) & """"
x = x + 1
end if
if chk_email.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(8) & """"
x = x + 1
end if
if chk_mailboxsize.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(25) & """"
x = x + 1
end if
if chk_mailboxstore.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(26) & """"
x = x + 1
end if
if chk_notes.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(9) & """"
x = x + 1
end if
if chk_computerserialno.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(23) & """"
x = x + 1
end if
arrTemp = GetComputerInfo(arrData(9))
if IsArray(arrTemp) then
if chk_oupathcomputer.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & GetOUPath(replace(arrTemp(0),"""","")) & """"
x = x + 1
end if
if chk_computeros.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & replace(arrTemp(1),"""","") & """"
x = x + 1
end if
if chk_computeros.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & replace(arrTemp(2),"""","") & """"
x = x + 1
end if
if chk_computerdescription.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & replace(arrTemp(4),"""","") & """"
x = x + 1
end if
if chk_computercreated.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & replace(arrTemp(3),"""","") & """"
x = x + 1
end if
else
if chk_oupathcomputer.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & """"
x = x + 1
end if
if chk_computeros.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & """"
x = x + 1
end if
if chk_computeros.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & """"
x = x + 1
end if
if chk_computerdescription.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & """"
x = x + 1
end if
if chk_computercreated.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & """"
x = x + 1
end if
end if
if chk_mobileno.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(10) & """"
x = x + 1
end if
if chk_company.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(11) & """"
x = x + 1
end if
if chk_address.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(12) & """"
x = x + 1
end if
if chk_city.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(13) & """"
x = x + 1
end if
if chk_state.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(14) & """"
x = x + 1
end if
if chk_zipcode.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(15) & """"
x = x + 1
end if
if chk_country.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(16) & """"
x = x + 1
end if
if chk_homephone.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(17) & """"
x = x + 1
end if
if chk_manager.Checked then
ReDim Preserve arrFileData(x)
if arrData(18) <> "" then
arrFileData(x) = """" & mid(arrData(18),4,instr(arrData(18),",")-4) & """"
else
arrFileData(x) = """" & """"
end if
x = x + 1
end if
if chk_subordinates.Checked then
for each strDomain in arrDomainNames
strSearchField = "(manager=" & arrData(21) & ")"
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(&(objectCategory=person)(objectClass=user)" & strSearchField & ")"
' Comma delimited list of attribute values to retrieve.
strAttributes = "cn,samAccountName,whenCreated,distinguishedName,userAccountControl"
Set adoConnection = CreateObject("ADODB.Connection")
Set adoCommand = CreateObject("ADODB.Command")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
Set adoCommand.ActiveConnection = adoConnection
' Construct the LDAP syntax query.
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 100
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False
' Run the query.
Set adoRecordset = adoCommand.Execute
boolFoundFirst = False
str_subordinates = ""
Do Until adoRecordset.EOF
strField = adoRecordset.Fields("cn").Value
if boolFoundFirst then
str_subordinates = str_subordinates & ", " & strField
else
boolFoundFirst = True
str_subordinates = str_subordinates & strField
end if
adoRecordset.MoveNext
Loop
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & str_subordinates & """"
x = x + 1
next
end if
if chk_whencreated.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(19) & """"
x = x + 1
end if
if chk_oupathuser.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & GetOUPath(arrData(21)) & """"
x = x + 1
end if
if chk_lastlogintimestamp.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(22) & """"
x = x + 1
end if
if chk_groupmembership.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & ReportGroupMemberShipList(arrData(21), arrData(27)) & """"
x = x + 1
end if
if CSVorTABLE <> "" then
strFileData = strFileData & "<tr>"
for n = 0 to UBound(arrFileData)-1
strEntry = replace(arrFileData(n),"""","")
if strEntry = "" then strEntry = " "
strFileData = strFileData & "<td valign=""top"" align=""left"">" & strEntry & "</td>"
next
strFileData = strFileData & "</tr>" & vbCRLF
else
strFileData = strFileData & Join(arrFileData,",") & vbCRLF
end if
Next
PopulateTableForCSV = strFileData
End Function
Sub RunScript
on error resume next
Dim oDLG
Set oDLG=CreateObject("MSComDlg.CommonDialog")
if err.number > 0 then
err.clear
oDLG = window.prompt("Please enter the path and file name to save.", "D:\HTA-Result-Set.csv")
if oDLG <> "" then
strAnswer = oDLG
End If
else
With oDLG
.DialogTitle = "Save As"
.Filter="CSV File|*.csv"
.MaxFileSize = 255
.ShowSave
If .FileName <> "" Then
strAnswer = .FileName
End If
End With
end if
Set oDLG=Nothing
If IsNull(strAnswer) or strAnswer = "" Then
'Do nothing
Else
if globalstrSearchBtnPush <> "" then
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(strAnswer) = True Then
objFSO.DeleteFile strAnswer, True
end if
Set objFile = objFSO.CreateTextFile(strAnswer, True)
objFile.Write CreateHeaderRow("") & vbCRLF
objFile.Write PopulateTableForCSV("")
objFile.Close
MsgBox "Saved."
else
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(strAnswer) = True Then
objFSO.DeleteFile strAnswer, True
Else
' do nothing
end if
Set objFile = objFSO.CreateTextFile(strAnswer, True)
objFile.Write """Security Groups""" & VbCrLf
For Each objOption in lst_groupnames.Options
objFile.Write """" & objOption.Text & """" & VbCrLf
Next
objFile.Write """Distribution Groups""" & VbCrLf
For Each objOption in lst_dgnames.Options
objFile.Write """" & objOption.Text & """" & VbCrLf
Next
objFile.Close
MsgBox "Saved."
End if
End If
End Sub
Sub Email_This_Record
ShowDialogTo
ShowDialogCC
ConvertNamesToEmailAddresses
arrData = Split(arrRows(span_currentrecord.InnerHTML - 1), "|TD|")
if chk_seatno.Checked then
str_seatno = "<b>Seat No: </b>" & txt_seatno.value & "<br>" & vbCRLF
else
str_seatno = ""
end if
if chk_replacementseatno.Checked then
str_replacementseatno = "<b>These are the replacement details</b><br><b>Seat No: </b>" & txt_replacementseatno.value & "<br>" & vbCRLF
else
str_replacementseatno = ""
end if
if chk_building.Checked then
str_building = "<b>Building: </b>" & txt_building.value & "<br>" & vbCRLF
else
str_building = ""
end if
if chk_extensionno.Checked then
str_extensionno = "<b>Extension No: </b>" & txt_extensionno.value & "<br>" & vbCRLF
else
str_extensionno = ""
end if
if chk_empid.Checked then
str_empid = "<b>Emp ID: </b>" & txt_empid.value & "<br>" & vbCRLF
else
str_empid = ""
end if
if chk_department.Checked then
str_department = "<b>Department: </b>" & txt_department.value & "<br>" & vbCRLF
else
str_department = ""
end if
if chk_designation.Checked then
str_designation = "<b>Designation: </b>" & txt_designation.value & "<br>" & vbCRLF
else
str_designation = ""
end if
if chk_name.Checked then
str_name = "<b>User Name: </b>" & txt_name.value & "<br>" & vbCRLF
else
str_name = ""
end if
if chk_loginname.Checked then
str_loginname = "<b>Login Name: </b>" & txt_loginname.value & "<br>" & vbCRLF
else
str_loginname = ""
end if
if chk_email.Checked then
str_email = "<b>Email Address: </b>" & txt_email.value & "<br>" & vbCRLF
else
str_email = ""
end if
if chk_mailboxsize.Checked then
str_mailboxsize = "<b>Mailbox Size (MB): </b>" & txt_mailboxsize.value & "<br>" & vbCRLF
else
str_mailboxsize = ""
end if
if chk_mailboxstore.Checked then
str_mailboxstore = "<b>Mailbox Store: </b>" & txt_mailboxstore.value & "<br>" & vbCRLF
else
str_mailboxstore = ""
end if
if chk_notes.Checked then
str_notes = "<b>Machine Name: </b>" & txt_notes.value & "<br>" & vbCRLF
else
str_notes = ""
end if
if chk_computerserialno.Checked then
str_computerserialno = "<b>Serial No: </b>" & txt_computerserialno.value & "<br>" & vbCRLF
else
str_computerserialno = ""
end if
if chk_replacedmachine.Checked then
str_replacedmachine = "<b>These are the replacement details</b><br><b>Machine Name: </b>" & txt_replacedmachine.value & "<br>" & vbCRLF
else
str_replacedmachine = ""
end if
if chk_replacedcomputerserialno.Checked then
str_replacedcomputerserialno = "<b>Replaced Serial No: </b>" & txt_replacedcomputerserialno.value & "<br>" & vbCRLF
else
str_replacedcomputerserialno = ""
end if
arrTemp = GetComputerInfo(arrData(9))
if IsArray(arrTemp) then
if chk_oupathcomputer.Checked then
str_oupathcomputer = "<b>OU Path - Computer: </b>" & txt_oupathcomputer.value & "<br>" & vbCRLF
else
str_oupathcomputer = ""
end if
if chk_computeros.Checked then
str_computeros = "<b>Computer OS: </b>" & txt_computeros.value & "<br>" & vbCRLF
else
str_computeros = ""
end if
if chk_computeros.Checked then
str_computerservicepack = "<b>Service Pack: </b>" & txt_computerservicepack.value & "<br>" & vbCRLF
else
str_computerservicepack = ""
end if
if chk_computerdescription.Checked then
str_computerdescription = "<b>Computer Description: </b>" & txt_computerdescription.value & "<br>" & vbCRLF
else
str_computerdescription = ""
end if
if chk_computercreated.Checked then
str_computercreated = "<b>Computer Account Created: </b>" & txt_computercreated.value & "<br>" & vbCRLF
else
str_computercreated = ""
end if
else
if chk_oupathcomputer.Checked then
str_oupathcomputer = "<b>OU Path - Computer: </b>" & "<br>" & vbCRLF
else
str_oupathcomputer = ""
end if
if chk_computeros.Checked then
str_computeros = "<b>Computer OS: </b>" & "<br>" & vbCRLF
else
str_computeros = ""
end if
if chk_computeros.Checked then
str_computerservicepack = "<b>Service Pack: </b>" & "<br>" & vbCRLF
else
str_computerservicepack = ""
end if
if chk_computerdescription.Checked then
str_computerdescription = "<b>Computer Description: </b>" & "<br>" & vbCRLF
else
str_computerdescription = ""
end if
if chk_computercreated.Checked then
str_computercreated = "<b>Computer Account Created: </b>" & "<br>" & vbCRLF
else
str_computercreated = ""
end if
end if
if chk_mobileno.Checked then
str_mobileno = "<b>Mobile Number: </b>" & txt_mobileno.value & "<br>" & vbCRLF
else
str_mobileno = ""
end if
if chk_company.Checked then
str_company = "<b>Company: </b>" & txt_company.value & "<br>" & vbCRLF
else
str_company = ""
end if
if chk_address.Checked then
str_address = "<b>Address: </b>" & txt_address.value & "<br>" & vbCRLF
else
str_address = ""
end if
if chk_city.Checked then
str_city = "<b>City: </b>" & txt_city.value & "<br>" & vbCRLF
else
str_city = ""
end if
if chk_state.Checked then
str_state = "<b>State: </b>" & txt_state.value & "<br>" & vbCRLF
else
str_state = ""
end if
if chk_zipcode.Checked then
str_zipcode = "<b>Zip Code: </b>" & txt_zipcode.value & "<br>" & vbCRLF
else
str_zipcode = ""
end if
if chk_country.Checked then
str_country = "<b>Country: </b>" & txt_country.value & "<br>" & vbCRLF
else
str_country = ""
end if
if chk_homephone.Checked then
str_homephone = "<b>Home Phone: </b>" & txt_homephone.value & "<br>" & vbCRLF
else
str_homephone = ""
end if
if chk_manager.Checked then
if arrData(18) <> "" then
str_manager = "<b>Manager: </b>" & mid(arrData(18),4,instr(arrData(18),",")-4) & "<br>" & vbCRLF
else
str_manager = ""
end if
else
str_manager = ""
end if
if chk_subordinates.Checked then
str_subordinates = "<b>Subordinates: </b>"
boolFoundFirst = False
str_subordinates = ""
For Each objOption in lst_subordinates.Options
if boolFoundFirst then
str_subordinates = str_subordinates & ", " & objOption.Text
else
boolFoundFirst = True
str_subordinates = str_subordinates & objOption.Text
end if
Next
str_subordinates = str_subordinates & "<br>" & vbCRLF
else
str_subordinates = ""
end if
if chk_whencreated.Checked then
str_whencreated = "<b>Date Created: </b>" & txt_whencreated.value & "<br>" & vbCRLF
else
str_whencreated = ""
end if
if chk_oupathuser.Checked then
str_oupathuser = "<b>OU Path - User: </b>" & txt_oupathuser.value & "<br>" & vbCRLF
else
str_oupathuser = ""
end if
if chk_lastlogintimestamp.Checked then
str_lastlogintimestamp = "<b>Last Logon: </b>" & txt_lastlogintimestamp.value & "<br>" & vbCRLF
else
str_lastlogintimestamp = ""
end if
if chk_groupmembership.Checked then
str_groupmembership = "<b>Group Membership: </b>" & ReportGroupMemberShipList(arrData(21), arrData(27)) & "<br>" & vbCRLF
else
str_groupmembership = ""
end if
str_message = str_seatno & _
str_replacementseatno & _
str_building & _
str_extensionno & _
str_empid & _
str_department & _
str_designation & _
str_name & _
str_loginname & _
str_email & _
str_mailboxsize & _
str_mailboxstore & _
str_notes & _
str_computerserialno & _
str_replacedmachine & _
str_replacedcomputerserialno & _
str_oupathcomputer & _
str_computeros & _
str_computerservicepack & _
str_computerdescription & _
str_computercreated & _
str_mobileno & _
str_company & _
str_address & _
str_city & _
str_state & _
str_zipcode & _
str_country & _
str_homephone & _
str_manager & _
str_subordinates & _
str_whencreated & _
str_oupathuser & _
str_lastlogintimestamp & _
str_groupmembership
if trim(txt_EmailSubject.value) = "" then
strEmailSubject = "Active Directory Detail Report"
else
strEmailSubject = trim(txt_EmailSubject.value)
end if
Set objMessage = CreateObject("CDO.Message")
objMessage.From = strEmailFrom
objMessage.To = strEmailTo
objMessage.CC = strEmailCC
objMessage.BCC = strEmailBCC
objMessage.Subject = strEmailSubject
objMessage.HTMLBody = trim(txt_EmailBody.value) & "<br><br>" & vbCRLF & vbCRLF & str_message
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strEmailServer
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objMessage.Configuration.Fields.Update
objMessage.Send
MsgBox "An email has been sent"
End Sub
Sub Email_All_Records
ShowDialogTo
ShowDialogCC
ConvertNamesToEmailAddresses
str_message = ""
if boolTableReports then
str_message = str_message & "<table width=""100%"" border=""1"">" & vbCRLF
str_message = str_message & CreateHeaderRow("Table") & vbCRLF
str_message = str_message & PopulateTableForCSV("Table") & vbCRLF
str_message = str_message & "</table>" & vbCRLF
else
for n = 0 to UBound(arrRows)
arrData = Split(arrRows(n), "|TD|")
if chk_seatno.Checked then
str_seatno = "<b>Seat No: </b>" & arrData(0) & "<br>" & vbCRLF
else
str_seatno = ""
end if
if chk_building.Checked then
str_building = "<b>Building: </b>" & arrData(1) & "<br>" & vbCRLF
else
str_building = ""
end if
if chk_extensionno.Checked then
str_extensionno = "<b>Extension No: </b>" & arrData(2) & "<br>" & vbCRLF
else
str_extensionno = ""
end if
if chk_empid.Checked then
str_empid = "<b>Emp ID: </b>" & arrData(3) & "<br>" & vbCRLF
else
str_empid = ""
end if
if chk_department.Checked then
str_department = "<b>Department: </b>" & arrData(4) & "<br>" & vbCRLF
else
str_department = ""
end if
if chk_designation.Checked then
str_designation = "<b>Designation: </b>" & arrData(5) & "<br>" & vbCRLF
else
str_designation = ""
end if
if chk_name.Checked then
str_name = "<b>User Name: </b>" & arrData(6) & "<br>" & vbCRLF
else
str_name = ""
end if
if chk_loginname.Checked then
str_loginname = "<b>Login Name: </b>" & arrData(7) & "<br>" & vbCRLF
else
str_loginname = ""
end if
if chk_email.Checked then
str_email = "<b>Email Address: </b>" & arrData(8) & "<br>" & vbCRLF
else
str_email = ""
end if
if chk_mailboxsize.Checked then
str_mailboxsize = "<b>Mailbox Size (MB): </b>" & arrData(25) & "<br>" & vbCRLF
else
str_mailboxsize = ""
end if
if chk_mailboxstore.Checked then
str_mailboxstore = "<b>Mailbox Store: </b>" & arrData(26) & "<br>" & vbCRLF
else
str_mailboxstore = ""
end if
if chk_notes.Checked then
str_notes = "<b>Machine Name: </b>" & arrData(9) & "<br>" & vbCRLF
else
str_notes = ""
end if
if chk_computerserialno.Checked then
str_computerserialno = "<b>Serial No: </b>" & arrData(23) & "<br>" & vbCRLF
else
str_computerserialno = ""
end if
arrTemp = GetComputerInfo(arrData(9))
if IsArray(arrTemp) then
if chk_oupathcomputer.Checked then
str_oupathcomputer = "<b>OU Path - Computer: </b>" & GetOUPath(replace(arrTemp(0),"""","")) & "<br>" & vbCRLF
else
str_oupathcomputer = ""
end if
if chk_computeros.Checked then
str_computeros = "<b>Computer OS: </b>" & replace(arrTemp(1),"""","") & "<br>" & vbCRLF
else
str_computeros = ""
end if
if chk_computeros.Checked then
str_computerservicepack = "<b>Service Pack: </b>" & replace(arrTemp(2),"""","") & "<br>" & vbCRLF
else
str_computerservicepack = ""
end if
if chk_computerdescription.Checked then
str_computerdescription = "<b>Computer Description: </b>" & replace(arrTemp(4),"""","") & "<br>" & vbCRLF
else
str_computerdescription = ""
end if
if chk_computercreated.Checked then
str_computercreated = "<b>Computer Account Created: </b>" & replace(arrTemp(3),"""","") & "<br>" & vbCRLF
else
str_computercreated = ""
end if
else
if chk_oupathcomputer.Checked then
str_oupathcomputer = "<b>OU Path - Computer: </b>" & "<br>" & vbCRLF
else
str_oupathcomputer = ""
end if
if chk_computeros.Checked then
str_computeros = "<b>Computer OS: </b>" & "<br>" & vbCRLF
else
str_computeros = ""
end if
if chk_computeros.Checked then
str_computerservicepack = "<b>Service Pack: </b>" & "<br>" & vbCRLF
else
str_computerservicepack = ""
end if
if chk_computerdescription.Checked then
str_computerdescription = "<b>Computer Description: </b>" & "<br>" & vbCRLF
else
str_computerdescription = ""
end if
if chk_computercreated.Checked then
str_computercreated = "<b>Computer Account Created: </b>" & "<br>" & vbCRLF
else
str_computercreated = ""
end if
end if
if chk_mobileno.Checked then
str_mobileno = "<b>Mobile Number: </b>" & arrData(10) & "<br>" & vbCRLF
else
str_mobileno = ""
end if
if chk_company.Checked then
str_company = "<b>Company: </b>" & arrData(11) & "<br>" & vbCRLF
else
str_company = ""
end if
if chk_address.Checked then
str_address = "<b>Address: </b>" & arrData(12) & "<br>" & vbCRLF
else
str_address = ""
end if
if chk_city.Checked then
str_city = "<b>City: </b>" & arrData(13) & "<br>" & vbCRLF
else
str_city = ""
end if
if chk_state.Checked then
str_state = "<b>State: </b>" & arrData(14) & "<br>" & vbCRLF
else
str_state = ""
end if
if chk_zipcode.Checked then
str_zipcode = "<b>Zip Code: </b>" & arrData(15) & "<br>" & vbCRLF
else
str_zipcode = ""
end if
if chk_country.Checked then
str_country = "<b>Country: </b>" & arrData(16) & "<br>" & vbCRLF
else
str_country = ""
end if
if chk_homephone.Checked then
str_homephone = "<b>Home Phone: </b>" & arrData(17) & "<br>" & vbCRLF
else
str_homephone = ""
end if
if chk_manager.Checked then
if arrData(18) <> "" then
str_manager = "<b>Manager: </b>" & mid(arrData(18),4,instr(arrData(18),",")-4) & "<br>" & vbCRLF
else
str_manager = ""
end if
else
str_manager = ""
end if
if chk_subordinates.Checked then
for each strDomain in arrDomainNames
strSearchField = "(manager=" & arrData(21) & ")"
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(&(objectCategory=person)(objectClass=user)" & strSearchField & ")"
' Comma delimited list of attribute values to retrieve.
strAttributes = "cn,samAccountName,whenCreated,distinguishedName,userAccountControl"
Set adoConnection = CreateObject("ADODB.Connection")
Set adoCommand = CreateObject("ADODB.Command")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
Set adoCommand.ActiveConnection = adoConnection
' Construct the LDAP syntax query.
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 100
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False
' Run the query.
Set adoRecordset = adoCommand.Execute
boolFoundFirst = False
str_subordinates = "<b>Subordinates: </b>"
Do Until adoRecordset.EOF
strField = adoRecordset.Fields("cn").Value
if boolFoundFirst then
str_subordinates = str_subordinates & ", " & strField
else
boolFoundFirst = True
str_subordinates = str_subordinates & strField
end if
adoRecordset.MoveNext
Loop
str_subordinates = str_subordinates & "<br>" & vbCRLF
next
else
str_subordinates = ""
end if
if chk_whencreated.Checked then
str_whencreated = "<b>Date Created: </b>" & arrData(19) & "<br>" & vbCRLF
else
str_whencreated = ""
end if
if chk_oupathuser.Checked then
str_oupathuser = "<b>OU Path - User: </b>" & GetOUPath(arrData(21)) & "<br>" & vbCRLF
else
str_oupathuser = ""
end if
if chk_lastlogintimestamp.Checked then
str_lastlogintimestamp = "<b>Last Logon: </b>" & arrData(22) & "<br>" & vbCRLF
else
str_lastlogintimestamp = ""
end if
if chk_groupmembership.Checked then
str_groupmembership = "<b>Group Membership: </b>" & ReportGroupMemberShipList(arrData(21), arrData(27)) & "<br>" & vbCRLF
else
str_groupmembership = ""
end if
str_message = str_message & _
str_seatno & _
str_building & _
str_extensionno & _
str_empid & _
str_department & _
str_designation & _
str_name & _
str_loginname & _
str_email & _
str_mailboxsize & _
str_mailboxstore & _
str_notes & _
str_computerserialno & _
str_oupathcomputer & _
str_computeros & _
str_computerservicepack & _
str_computerdescription & _
str_computercreated & _
str_mobileno & _
str_company & _
str_address & _
str_city & _
str_state & _
str_zipcode & _
str_country & _
str_homephone & _
str_manager & _
str_subordinates & _
str_whencreated & _
str_oupathuser & _
str_lastlogintimestamp & _
str_groupmembership & VbCrLf & "<br><hr><br><br>" & vbCRLF
next
end if
if trim(txt_EmailSubject.value) = "" then
strEmailSubject = "Active Directory Detail Report"
else
strEmailSubject = trim(txt_EmailSubject.value)
end if
Set objMessage = CreateObject("CDO.Message")
objMessage.From = strEmailFrom
objMessage.To = strEmailTo
objMessage.CC = strEmailCC
objMessage.BCC = strEmailBCC
objMessage.Subject = strEmailSubject
objMessage.HTMLBody = trim(txt_EmailBody.value) & "<br><br>" & vbCRLF & vbCRLF & str_message
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strEmailServer
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objMessage.Configuration.Fields.Update
objMessage.Send
MsgBox "An email has been sent"
End Sub
Sub Email_As_Attachment
ShowDialogTo
ShowDialogCC
ConvertNamesToEmailAddresses
strAnswer = fTemp & "\HTAResults.csv"
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(strAnswer) = True Then
objFSO.DeleteFile strAnswer, True
end if
Set objFile = objFSO.CreateTextFile(strAnswer, True)
objFile.Write CreateHeaderRow("") & vbCRLF
objFile.Write PopulateTableForCSV("")
objFile.Close
if trim(txt_EmailSubject.value) = "" then
strEmailSubject = "Active Directory Detail Report"
else
strEmailSubject = trim(txt_EmailSubject.value)
end if
Set objMessage = CreateObject("CDO.Message")
objMessage.From = strEmailFrom
objMessage.To = strEmailTo
objMessage.CC = strEmailCC
objMessage.BCC = strEmailBCC
objMessage.Subject = strEmailSubject
objMessage.TextBody = trim(txt_EmailBody.value) & vbCRLF & vbCRLF
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strEmailServer
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objMessage.Configuration.Fields.Update
objMessage.AddAttachment strAnswer
objMessage.Send
MsgBox "An email has been sent"
objFSO.DeleteFile strAnswer, True
End Sub
Sub SelectAllCheck
If chk_selectall.Checked then
CheckAllBoxes
TestToSeeWhatLinesAreHidden
else
UnCheckAllBoxes
end if
End Sub
Sub UnCheckAllBoxes
chk_selectall.Checked = False
chk_seatno.Checked = False
chk_replacementseatno.Checked = False
chk_building.Checked = False
chk_extensionno.Checked = False
chk_seatno.Checked = False
chk_empid.Checked = False
chk_department.Checked = False
chk_designation.Checked = False
chk_name.Checked = False
chk_loginname.Checked = False
chk_email.Checked = False
chk_mailboxsize.Checked = False
chk_mailboxstore.Checked = False
chk_notes.Checked = False
chk_computerserialno.Checked = False
chk_replacedmachine.Checked = False
chk_replacedcomputerserialno.Checked = False
chk_oupathcomputer.Checked = False
chk_computeros.Checked = False
chk_computerdescription.Checked = False
chk_computercreated.Checked = False
chk_mobileno.Checked = False
chk_company.Checked = False
chk_address.Checked = False
chk_city.Checked = False
chk_state.Checked = False
chk_zipcode.Checked = False
chk_country.Checked = False
chk_homephone.Checked = False
chk_manager.Checked = False
chk_whencreated.Checked = False
chk_oupathuser.Checked = False
chk_lastlogintimestamp.Checked = False
chk_groupmembership.Checked = False
chk_dgmembership.Checked = False
chk_managerlist.Checked = False
chk_subordinates.Checked = False
End Sub
Sub CheckAllBoxes
chk_selectall.Checked = True
chk_seatno.Checked = True
chk_replacementseatno.Checked = True
chk_building.Checked = True
chk_extensionno.Checked = True
chk_empid.Checked = True
chk_department.Checked = True
chk_designation.Checked = True
chk_name.Checked = True
chk_loginname.Checked = True
chk_email.Checked = True
chk_mailboxsize.Checked = True
chk_mailboxstore.Checked = True
chk_notes.Checked = True
chk_computerserialno.Checked = True
chk_replacedmachine.Checked = True
chk_replacedcomputerserialno.Checked = True
chk_oupathcomputer.Checked = True
chk_computeros.Checked = True
chk_computerdescription.Checked = True
chk_computercreated.Checked = True
chk_mobileno.Checked = True
chk_company.Checked = True
chk_address.Checked = True
chk_city.Checked = True
chk_state.Checked = True
chk_zipcode.Checked = True
chk_country.Checked = True
chk_homephone.Checked = True
chk_manager.Checked = True
chk_whencreated.Checked = True
chk_oupathuser.Checked = True
chk_lastlogintimestamp.Checked = True
chk_groupmembership.Checked = True
chk_dgmembership.Checked = True
chk_managerlist.Checked = True
chk_subordinates.Checked = True
End Sub
Function GetUsersEmailAddress
Set oNet = CreateObject("WScript.NetWork")
sSearchField = "(samAccountName=*" & oNet.UserName & "*)"
Set objRootDSE = GetObject("LDAP://RootDSE")
sDNSDomain = objRootDSE.Get("defaultNamingContext")
sBase = "<LDAP://" & sDNSDomain & ">"
sFilter = "(&(objectCategory=person)(objectClass=user)" & sSearchField & ")"
sAttributes = "cn,samAccountName,mail"
sQuery = sBase & ";" & sFilter & ";" & sAttributes & ";subtree"
Set aCommand = CreateObject("ADODB.Command")
Set aConnection = CreateObject("ADODB.Connection")
aConnection.Provider = "ADsDSOObject"
aConnection.Open "Active Directory Provider"
aCommand.ActiveConnection = aConnection
aCommand.CommandText = sQuery
aCommand.Properties("Page Size") = 100
aCommand.Properties("Timeout") = 30
aCommand.Properties("Cache Results") = False
Set aRecordset = aCommand.Execute
GetUsersEmailAddress = aRecordset.Fields("cn").Value
End Function
Sub ShowDialogCC
Const adVarChar = 200
Const MaxCharacters = 255
strValidEmail = ""
arrResolve = split(txt_EmailCC.Value,";")
for each strResolve in arrResolve
strResolve = trim(strResolve)
if instr(strResolve,"@") then
'Treat as valid email address
strValidEmail = strValidEmail & strResolve & ";"
elseif strResolve <> "" then
Set objRoot = GetObject("LDAP://rootDSE")
strDomain = "LDAP://" & objRoot.Get("defaultNamingContext")
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.CommandText = "<" & strDomain & ">;(&(objectCategory=person)" & _
"(mail=*)(cn=*" & strResolve & "*));cn,samAccountName,mail;subtree"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 90
objCommand.Properties("Cache Results") = False
Set objRecordSet1 = objCommand.Execute
intCount = 0
While Not objRecordSet1.EOF
intCount = intCount + 1
strFullName = objRecordSet1.Fields("cn").Value
objRecordSet1.MoveNext
Wend
if intCount = 0 then
msgbox "The name """ & strResolve & """ could not be found. The name has been removed from the field."
end if
if intCount = 1 then
strValidEmail = strValidEmail & strFullName & ";"
end if
if intCount > 1 then
strSample = ShowModalDialog("modaldialog.hta",strResolve)
strValidEmail = strValidEmail & strSample & ";"
end if
end if
next
txt_EmailCC.Value = strValidEmail
End Sub
Sub ShowDialogTo
Const adVarChar = 200
Const MaxCharacters = 255
strValidEmail = ""
arrResolve = split(txt_EmailTo.Value,";")
for each strResolve in arrResolve
strResolve = trim(strResolve)
if instr(strResolve,"@") then
'Treat as valid email address
strValidEmail = strValidEmail & strResolve & ";"
elseif strResolve <> "" then
Set objRoot = GetObject("LDAP://rootDSE")
strDomain = "LDAP://" & objRoot.Get("defaultNamingContext")
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.CommandText = "<" & strDomain & ">;(&(objectCategory=person)" & _
"(mail=*)(cn=*" & strResolve & "*));cn,samAccountName,mail;subtree"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 90
objCommand.Properties("Cache Results") = False
Set objRecordSet1 = objCommand.Execute
intCount = 0
While Not objRecordSet1.EOF
intCount = intCount + 1
strFullName = objRecordSet1.Fields("cn").Value
objRecordSet1.MoveNext
Wend
if intCount = 0 then
msgbox "The name """ & strResolve & """ could not be found. The name has been removed from the field."
end if
if intCount = 1 then
strValidEmail = strValidEmail & strFullName & ";"
end if
if intCount > 1 then
strSample = ShowModalDialog("modaldialog.hta",strResolve)
strValidEmail = strValidEmail & strSample & ";"
end if
end if
next
txt_EmailTo.Value = strValidEmail
End Sub
Sub ShowDialogFrom
Const adVarChar = 200
Const MaxCharacters = 255
strValidEmail = ""
arrResolve = split(txt_EmailFrom.Value,";")
for each strResolve in arrResolve
strResolve = trim(strResolve)
if instr(strResolve,"@") then
'Treat as valid email address
strValidEmail = strValidEmail & strResolve & ";"
elseif strResolve <> "" then
Set objRoot = GetObject("LDAP://rootDSE")
strDomain = "LDAP://" & objRoot.Get("defaultNamingContext")
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.CommandText = "<" & strDomain & ">;(&(objectCategory=person)" & _
"(mail=*)(cn=*" & strResolve & "*));cn,samAccountName,mail;subtree"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 90
objCommand.Properties("Cache Results") = False
Set objRecordSet1 = objCommand.Execute
intCount = 0
While Not objRecordSet1.EOF
intCount = intCount + 1
strFullName = objRecordSet1.Fields("cn").Value
objRecordSet1.MoveNext
Wend
if intCount = 0 then
msgbox "The name """ & strResolve & """ could not be found. The name has been removed from the field."
end if
if intCount = 1 then
strValidEmail = strValidEmail & strFullName & ";"
end if
if intCount > 1 then
strSample = ShowModalDialog("modaldialog.hta",strResolve)
strValidEmail = strValidEmail & strSample & ";"
end if
end if
next
txt_EmailFrom.Value = strValidEmail
End Sub
Sub FillGroupMembershipList(usersDistinguishedname,usersPrimaryGroupToken)
on error resume next
For Each objOption in lst_groupnames.Options
objOption.RemoveNode
Next
For Each objOption in lst_dgnames.Options
objOption.RemoveNode
Next
For Each objOption in lst_subordinates.Options
objOption.RemoveNode
Next
intGroupMembership = 0
intdgmembership = 0
intsubordinates = 0
' This section is to pull group membership names
GroupMembershipDB.Filter = "memberDistinguishedname = '" & usersDistinguishedname & "' OR PrimaryGroupToken = '" & usersPrimaryGroupToken & "'"
GroupMembershipDB.Sort = "SAMAccountName"
GroupMembershipDB.MoveFirst
strLastGroupDN = ""
Do Until GroupMembershipDB.EOF
strGroupType = GroupMembershipDB.Fields.Item("samaccounttype").Value
strNTName = GroupMembershipDB.Fields.Item("samaccountname").Value
strPrimary = GroupMembershipDB.Fields.Item("PrimaryGroupToken").Value
strdistinguishedName = GroupMembershipDB.Fields.Item("distinguishedName").Value
intNumberOfMembers = dicGroupNumbers.Item(strdistinguishedName)
if strLastGroupDN <> strdistinguishedName then
Select Case strGroupType
Case "[GDG]"
set newOption = document.createElement("OPTION")
newOption.Text = strNTName & " (" & intNumberOfMembers & ") " & strGroupType
newOption.Value = strPrimary & ";" & strdistinguishedName
lst_dgnames.Add newOption
intdgmembership = intdgmembership + 1
Case "[LDG]"
set newOption = document.createElement("OPTION")
newOption.Text = strNTName & " (" & intNumberOfMembers & ") " & strGroupType
newOption.Value = strPrimary & ";" & strdistinguishedName
lst_dgnames.Add newOption
intdgmembership = intdgmembership + 1
Case "[UDG]"
set newOption = document.createElement("OPTION")
newOption.Text = strNTName & " (" & intNumberOfMembers & ") " & strGroupType
newOption.Value = strPrimary & ";" & strdistinguishedName
lst_dgnames.Add newOption
intdgmembership = intdgmembership + 1
Case "[GSG]"
set newOption = document.createElement("OPTION")
newOption.Text = strNTName & " (" & intNumberOfMembers & ") " & strGroupType
newOption.Value = strPrimary & ";" & strdistinguishedName
lst_groupnames.Add newOption
intGroupMembership = intGroupMembership + 1
Case "[LSG]"
set newOption = document.createElement("OPTION")
newOption.Text = strNTName & " (" & intNumberOfMembers & ") " & strGroupType
newOption.Value = strPrimary & ";" & strdistinguishedName
lst_groupnames.Add newOption
intGroupMembership = intGroupMembership + 1
Case "[USG]"
set newOption = document.createElement("OPTION")
newOption.Text = strNTName & " (" & intNumberOfMembers & ") " & strGroupType
newOption.Value = strPrimary & ";" & strdistinguishedName
lst_groupnames.Add newOption
intGroupMembership = intGroupMembership + 1
Case "[Unknown]"
set newOption = document.createElement("OPTION")
newOption.Text = strNTName & " (" & intNumberOfMembers & ") " & strGroupType
newOption.Value = strPrimary & ";" & strdistinguishedName
lst_groupnames.Add newOption
intGroupMembership = intGroupMembership + 1
End Select
strLastGroupDN = strdistinguishedName
End if
GroupMembershipDB.MoveNext
Loop
' This section is to pull subordinate names
Set objRootDSE = GetObject("LDAP://RootDSE")
strDNSDomain = objRootDSE.Get("defaultNamingContext")
Set adoConnection = CreateObject("ADODB.Connection")
Set adoCommand = CreateObject("ADODB.Command")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
Set adoCommand.ActiveConnection = adoConnection
strSearchField = "(manager=" & usersDistinguishedname & ")"
strBase = "<LDAP://" & strDNSDomain & ">"
strFilter = "(&(objectCategory=person)(objectClass=user)" & strSearchField & ")"
' Comma delimited list of attribute values to retrieve.
strAttributes = "cn,samAccountName,whenCreated,distinguishedName,userAccountControl"
' Construct the LDAP syntax query.
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 100
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False
' Run the query.
Set adoRecordset = adoCommand.Execute
Do Until adoRecordset.EOF
set newOption = document.createElement("OPTION")
newOption.Text = adoRecordset.Fields("cn").Value & " (" & GetSubordinateNumbers(adoRecordset.Fields("distinguishedName").Value) & ")"
newOption.Value = adoRecordset.Fields("samAccountName").Value & ";" & adoRecordset.Fields("distinguishedName").Value
lst_subordinates.Add newOption
adoRecordset.MoveNext
intsubordinates = intsubordinates + 1
Loop
span_groupmembership.InnerHTML = "(" & intGroupMembership & ")"
span_dgmembership.InnerHTML = "(" & intdgmembership & ")"
span_subordinates.InnerHTML = "(" & intsubordinates & ")"
End Sub
Function ReportGroupMembershipList(usersDistinguishedname,usersPrimaryGroupToken)
GroupMembershipDB.Filter = "memberDistinguishedname = '" & usersDistinguishedname & "' OR PrimaryGroupToken = '" & usersPrimaryGroupToken & "'"
GroupMembershipDB.Sort = "SAMAccountName"
GroupMembershipDB.MoveFirst
strLastGroupDN = ""
Do Until GroupMembershipDB.EOF
strdistinguishedName = GroupMembershipDB.Fields.Item("distinguishedName").Value
if strLastGroupDN <> strdistinguishedName then
strGroupType = GroupMembershipDB.Fields.Item("samaccounttype").Value
strNTName = GroupMembershipDB.Fields.Item("samaccountname").Value
strValue = strValue & strNTName & " " & strGroupType & ";"
strLastGroupDN = strdistinguishedName
GroupMembershipDB.MoveNext
End if
Loop
strValue = mid(strValue,1,len(strValue)-1)
ReportGroupMembershipList = strValue
End Function
Function GetManagerDN(Manager)
Set objRootDSE = GetObject("LDAP://RootDSE")
strDNSDomain = objRootDSE.Get("defaultNamingContext")
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
strBase = "<LDAP://" & strDNSDomain & ">"
strFilter = "(&(objectCategory=person)(objectClass=user)(cn=*" & Manager & "*))"
strAttributes = "distinguishedName,CN"
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
Set adoRecordset = CreateObject("ADODB.Recordset")
adoRecordset.CursorLocation = 3
adoRecordset.Sort = "distinguishedname"
adoRecordset.Open strQuery, adoConnection, , , 1
strresults = ""
boolResultsFound = False
Do Until adoRecordset.EOF
strDN = adoRecordset.Fields("distinguishedName").Value
sResults = sResults & "(manager=" & strDN & ")"
boolResultsFound = True
adoRecordset.MoveNext
Loop
if boolResultsFound then
sResults = "(|" & sResults & ")"
end if
GetManagerDN = sResults
End Function
Sub FillGroupList
For Each objOption in lst_groupnames.Options
objOption.RemoveNode
Next
For Each objOption in lst_dgnames.Options
objOption.RemoveNode
Next
For Each objOption in lst_subordinates.Options
objOption.RemoveNode
Next
intGroupMembership = 0
intdgmembership = 0
intsubordinates = 0
for each strDomain in arrDomainNames
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(objectCategory=group)"
strAttributes = "sAMAccountName,primaryGroupToken,distinguishedName,samaccounttype,member"
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
Set adoRecordset = CreateObject("ADODB.Recordset")
adoRecordset.CursorLocation = 3
adoRecordset.Sort = "distinguishedname"
adoRecordset.Open strQuery, adoConnection, , , 1
Do Until adoRecordset.EOF
intNumberOfMembers = 0
strNTName = adoRecordset.Fields("sAMAccountName").Value
strPrimary = adoRecordset.Fields("primaryGroupToken").Value
strdistinguishedName = adoRecordset.Fields("distinguishedName").Value
strGroupType = GetSAMAccountType(adoRecordset.Fields("samaccounttype").Value)
if NOT IsNull(adoRecordset.Fields("member").Value) then
for each strMember in adoRecordset.Fields("member").Value
GroupMembershipDB.AddNew
GroupMembershipDB("sAMAccountName") = strNTName
GroupMembershipDB("primaryGroupToken") = strPrimary
GroupMembershipDB("distinguishedName") = strdistinguishedName
GroupMembershipDB("samaccounttype") = strGroupType
GroupMembershipDB("MemberDistinguishedName") = strMember
GroupMembershipDB.Update
intNumberOfMembers = intNumberOfMembers + 1
next
else
GroupMembershipDB.AddNew
GroupMembershipDB("sAMAccountName") = strNTName
GroupMembershipDB("primaryGroupToken") = strPrimary
GroupMembershipDB("distinguishedName") = strdistinguishedName
GroupMembershipDB("samaccounttype") = strGroupType
GroupMembershipDB("MemberDistinguishedName") = ""
GroupMembershipDB.Update
End if
if NOT dicGroupNumbers.Exists(strdistinguishedName) then
dicGroupNumbers.Add strdistinguishedName, intNumberOfMembers
if strPrimary = 513 then
GetUsersWithPrimaryGroupID 513, strdistinguishedName
intNumberOfMembers = dicGroupNumbers.Item(strdistinguishedName)
end if
end if
Select Case adoRecordset.Fields("samaccounttype").Value
Case 2,268435457,4,536870913,8,268435457
set newOption = document.createElement("OPTION")
newOption.Text = strNTName & " (" & intNumberOfMembers & ") " & strGroupType
newOption.Value = strPrimary & ";" & strdistinguishedName
lst_dgnames.Add newOption
intdgmembership = intdgmembership + 1
Case -2147483646,268435456,-2147483644,536870912,-2147483640,268435456
set newOption = document.createElement("OPTION")
newOption.Text = strNTName & " (" & intNumberOfMembers & ") " & strGroupType
newOption.Value = strPrimary & ";" & strdistinguishedName
lst_groupnames.Add newOption
intGroupMembership = intGroupMembership + 1
Case Else
set newOption = document.createElement("OPTION")
newOption.Text = strNTName & " (" & intNumberOfMembers & ") " & strGroupType
newOption.Value = strPrimary & ";" & strdistinguishedName
lst_groupnames.Add newOption
intGroupMembership = intGroupMembership + 1
End Select
adoRecordset.MoveNext
Loop
next
span_groupmembership.InnerHTML = "(" & intGroupMembership & ")"
span_dgmembership.InnerHTML = "(" & intdgmembership & ")"
span_subordinates.InnerHTML = "(" & intsubordinates & ")"
End Sub
Sub FillManagerList
For Each objOption in lst_managerlist.Options
objOption.RemoveNode
Next
intManagers = 0
set dicManagerList = CreateObject("Scripting.Dictionary")
for each strDomain in arrDomainNames
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(&(objectCategory=user)(manager=*))"
strAttributes = "manager"
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
Set adoRecordset = CreateObject("ADODB.Recordset")
adoRecordset.CursorLocation = 3
adoRecordset.Sort = "manager"
adoRecordset.Open strQuery, adoConnection, , , 1
Do Until adoRecordset.EOF
strManager = adoRecordset.Fields("manager").Value
if dicManagerList.Exists(strManager) then
dicManagerList.Item(strManager) = dicManagerList.Item(strManager) + 1
else
dicManagerList.Add strManager, 1
intManagers = intManagers + 1
End if
adoRecordset.MoveNext
Loop
next
for each Manager in dicManagerList
set newOption = document.createElement("OPTION")
newOption.Text = mid(Manager,4,instr(Manager,",")-4) & " (" & dicManagerList.Item(Manager) & ")"
newOption.Value = Manager
lst_managerlist.Add newOption
next
span_managerlist.InnerHTML = "(" & intManagers & ")"
End Sub
Function GetSubordinateNumbers(manager)
intSubordinates = 0
for each strDomain in arrDomainNames
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(&(objectCategory=user)(manager=" & manager & "))"
strAttributes = "manager"
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
Set adoRecordset = CreateObject("ADODB.Recordset")
adoRecordset.CursorLocation = 3
adoRecordset.Sort = "manager"
adoRecordset.Open strQuery, adoConnection, , , 1
Do Until adoRecordset.EOF
intSubordinates = intSubordinates + 1
adoRecordset.MoveNext
Loop
next
GetSubordinateNumbers = intSubordinates
End FUnction
Function GetSAMAccountType(SAMAccountType)
Select Case SAMAccountType
Case 2, 268435457
GetSAMAccountType = "[GDG]" 'This is a global distribution group
Case 4, 536870913
GetSAMAccountType = "[LDG]" 'This is a domain local distribution group
Case 8, 268435457
GetSAMAccountType = "[UDG]" 'This is a universal distribution group
Case -2147483646, 268435456
GetSAMAccountType = "[GSG]" 'This is a global security group
Case -2147483644, 536870912
GetSAMAccountType = "[LSG]" 'This is a domain local security group
Case -2147483640, 268435456
GetSAMAccountType = "[USG]" 'This is a universal security group
Case Else
GetSAMAccountType = "[Unknown]" 'This is an unknown group type
End Select
End Function
Sub GetUsersWithPrimaryGroupID(PrimaryGroupID,distinguishedName)
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
strSearchField = "(primaryGroupID=" & PrimaryGroupID & ")"
for each strDomain in arrDomainNames
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(&(objectCategory=user)(objectCategory=contact)" & strSearchField & ")"
strAttributes = "cn,primaryGroupID"
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 100
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False
Set adoRecordset = adoCommand.Execute
If Not adoRecordset.EOF Then
Do Until adoRecordset.EOF
n = n + 1
adoRecordset.movenext
Loop
End If
next
dicGroupNumbers.Item(distinguishedName) = n
End Sub
Sub FillSubjectList
For Each objOption in txt_EmailSubject.Options
objOption.RemoveNode
Next
For each strSubjectlineText in arrSubjectText
set newOption = document.createElement("OPTION")
newOption.Text = strSubjectlineText
newOption.Value = strSubjectlineText
txt_EmailSubject.Add newOption
Next
End Sub
Sub ConvertNamesToEmailAddresses
txt_EmailToHidden.Value = GetEmailAddresses(txt_EmailTo.Value)
txt_EmailCCHidden.Value = GetEmailAddresses(txt_EmailCC.Value)
strEmailTo = txt_EmailToHidden.Value
End Sub
Function GetEmailAddresses(names)
Const adVarChar = 200
Const MaxCharacters = 255
strValidEmail = ""
arrResolve = split(names,";")
for each strResolve in arrResolve
strResolve = trim(strResolve)
if instr(strResolve,"@") then
'Treat as valid email address
strValidEmail = strValidEmail & strResolve & ";"
elseif strResolve <> "" then
Set objRoot = GetObject("LDAP://rootDSE")
strDomain = "LDAP://" & objRoot.Get("defaultNamingContext")
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.CommandText = "<" & strDomain & ">;(&(objectCategory=person)" & _
"(mail=*)(cn=*" & strResolve & "*));cn,samAccountName,mail;subtree"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 90
objCommand.Properties("Cache Results") = False
Set objRecordSet1 = objCommand.Execute
intCount = 0
While Not objRecordSet1.EOF
intCount = intCount + 1
strFullName = objRecordSet1.Fields("mail").Value
objRecordSet1.MoveNext
Wend
if intCount = 1 then
strValidEmail = strValidEmail & strFullName & ";"
end if
end if
next
GetEmailAddresses = strValidEmail
End Function
Function GetOUPath(OU)
strOU = ""
strFQDN = ""
boolFoundMatch = False
arrValues = split(OU,",")
for each strValue in arrValues
if instr(strValue,"OU=") then
strOU = strOU & replace(strValue,"OU=","") & "\"
end if
if instr(strValue,"DC=") then
strFQDN = strFQDN & replace(strValue,"DC=","") & "."
end if
if instr(strValue,"CN=") then
if boolFoundMatch then
strCN = strCN & replace(strValue,"CN=","") & "\"
else
'Skip the first match - this is always the user name
boolFoundMatch = True
end if
end if
next
if strFQDN <> "" then
strFQDN = left(strFQDN,len(strFQDN)-1)
if strOU <> "" then
strOU = left(strOU,len(strOU)-1)
else
'strOU = "{object not found in any OU}"
if strCN <> "" then
strOU = left(strCN,len(strCN)-1)
end if
end if
GetOUPath = (Split(strOU,"\")(0))
else
GetOUPath = ""
end if
End Function
Function GetComputerInfo(names)
Const adVarChar = 200
Const MaxCharacters = 255
strValidComputer = ""
strResolve = trim(names)
if strResolve <> "" then
Set objRoot = GetObject("LDAP://rootDSE")
strDomain = "LDAP://" & objRoot.Get("defaultNamingContext")
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.CommandText = "<" & strDomain & ">;(&(objectCategory=computer)" & _
"(cn=" & strResolve & "));cn,samAccountName,distinguishedName,operatingsystem,operatingsystemservicepack,whencreated,description;subtree"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 90
objCommand.Properties("Cache Results") = False
Set objRecordSet1 = objCommand.Execute
While Not objRecordSet1.EOF
if IsNull(objRecordSet1.Fields("distinguishedName").Value) then
sDN = ""
else
sDN = replace(objRecordSet1.Fields("distinguishedName").Value,vbCRLF,"")
End if
if IsNull(objRecordSet1.Fields("operatingsystem").Value) then
sOS = ""
else
sOS = replace(objRecordSet1.Fields("operatingsystem").Value,vbCRLF,"")
End if
if IsNull(objRecordSet1.Fields("operatingsystemservicepack").Value) then
sSP = ""
else
sSP = replace(objRecordSet1.Fields("operatingsystemservicepack").Value,vbCRLF,"")
End if
if IsNull(objRecordSet1.Fields("whencreated").Value) then
sWC = ""
else
sWC = replace(objRecordSet1.Fields("whencreated").Value,vbCRLF,"")
End if
if IsNull(objRecordSet1.Fields("description").Value) then
sDS = ""
else
sDS = join(objRecordSet1.Fields("description").Value)
sDS = replace(sDS,vbCRLF,"")
End if
strValidComputer = Array("""" & sDN & """","""" & sOS & """","""" & sSP & """","""" & sWC & """","""" & sDS & """")
objRecordSet1.MoveNext
Wend
end if
if isArray(strValidComputer) then
GetComputerInfo = strValidComputer
else
GetComputerInfo = ""
end if
End Function
Sub ShowSubMenu(Parent,Child)
If Child.style.display="block" Then
Parent.classname="Menuover"
Child.style.display="none"
Set LastChildMenu=Nothing
Else
Parent.classname="Menuin"
Child.style.display="block"
Set LastChildMenu=Child
End If
Set LastMenu=Parent
End Sub
Sub MenuOver(Parent,Child)
If LastChildMenu is Nothing Then
Parent.className="MenuOver"
Else
If LastMenu is Parent Then
Parent.className="MenuIn"
Else
HideMenu
ShowSubMenu Parent,Child
End If
End If
End Sub
Sub MenuOut(Menu)
If LastChildMenu is Nothing Then Menu.className="MenuOut"
End Sub
Sub HideMenu
If Not LastChildMenu is Nothing Then
LastChildMenu.style.display="none"
Set LastChildMenu=Nothing
LastMenu.classname="Menuout"
End If
End Sub
Sub SubMenuOver(Menu)
Menu.className="SubMenuOver"
End Sub
Sub SubMenuOut(Menu)
Menu.className="SubMenuOut"
End Sub
Sub SaveAs
on error resume next
Dim oDLG
Set oDLG=CreateObject("MSComDlg.CommonDialog")
if err.number > 0 then
err.clear
oDLG = window.prompt("Please enter the path and file name to save.", "C:\your-query.qry")
if oDLG <> "" then
FileName = oDLG
Save
End If
else
With oDLG
.DialogTitle = "Save As"
.Filter="Query|*.qry|Text Files|*.txt|All files|*.*"
.MaxFileSize = 255
.ShowSave
If .FileName <> "" Then
FileName = .FileName
Save
End If
End With
end if
Set oDLG=Nothing
DisplayTitle
End Sub
Sub Save()
Dim fso,f
If FileName <> "" Then
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.CreateTextFile(FileName,True)
'This is the text to get saved into the file
with f
.writeline "<root>"
.writeline "<searchfield>" & globalStrSearchField & "</searchfield>"
.writeline "<btnpush>" & globalStrSearchBtnPush & "</btnpush>"
.writeline "<to>" & txt_EmailTo.value & "</to>"
.writeline "<cc>" & txt_EmailCC.value & "</cc>"
.writeline "<bcc>" & strEmailBCC & "</bcc>"
.writeline "<subject>" & txt_EmailSubject.value & "</subject>"
.writeline "<emailbody>" & txt_EmailBody.value & "</emailbody>"
if chk_selectall.Checked then .writeline "<checkboxes>chk_selectall</checkboxes>"
if chk_seatno.Checked then .writeline "<checkboxes>chk_seatno</checkboxes>"
if chk_building.Checked then .writeline "<checkboxes>chk_building</checkboxes>"
if chk_extensionno.Checked then .writeline "<checkboxes>chk_extensionno</checkboxes>"
if chk_empid.Checked then .writeline "<checkboxes>chk_empid</checkboxes>"
if chk_department.Checked then .writeline "<checkboxes>chk_department</checkboxes>"
if chk_designation.Checked then .writeline "<checkboxes>chk_designation</checkboxes>"
if chk_name.Checked then .writeline "<checkboxes>chk_name</checkboxes>"
if chk_loginname.Checked then .writeline "<checkboxes>chk_loginname</checkboxes>"
if chk_email.Checked then .writeline "<checkboxes>chk_email</checkboxes>"
if chk_mailboxsize.Checked then .writeline "<checkboxes>chk_mailboxsize</checkboxes>"
if chk_mailboxstore.Checked then .writeline "<checkboxes>chk_mailboxstore</checkboxes>"
if chk_notes.Checked then .writeline "<checkboxes>chk_notes</checkboxes>"
if chk_computerserialno.Checked then .writeline "<checkboxes>chk_computerserialno</checkboxes>"
if chk_replacedmachine.Checked then .writeline "<checkboxes>chk_replacedmachine</checkboxes>"
if chk_replacedcomputerserialno.Checked then .writeline "<checkboxes>chk_replacedcomputerserialno</checkboxes>"
if chk_oupathcomputer.Checked then .writeline "<checkboxes>chk_oupathcomputer</checkboxes>"
if chk_computeros.Checked then .writeline "<checkboxes>chk_computeros</checkboxes>"
if chk_computerdescription.Checked then .writeline "<checkboxes>chk_computerdescription</checkboxes>"
if chk_computercreated.Checked then .writeline "<checkboxes>chk_computercreated</checkboxes>"
if chk_mobileno.Checked then .writeline "<checkboxes>chk_mobileno</checkboxes>"
if chk_company.Checked then .writeline "<checkboxes>chk_company</checkboxes>"
if chk_address.Checked then .writeline "<checkboxes>chk_address</checkboxes>"
if chk_city.Checked then .writeline "<checkboxes>chk_city</checkboxes>"
if chk_state.Checked then .writeline "<checkboxes>chk_state</checkboxes>"
if chk_zipcode.Checked then .writeline "<checkboxes>chk_zipcode</checkboxes>"
if chk_country.Checked then .writeline "<checkboxes>chk_country</checkboxes>"
if chk_homephone.Checked then .writeline "<checkboxes>chk_homephone</checkboxes>"
if chk_manager.Checked then .writeline "<checkboxes>chk_manager</checkboxes>"
if chk_whencreated.Checked then .writeline "<checkboxes>chk_whencreated</checkboxes>"
if chk_oupathuser.Checked then .writeline "<checkboxes>chk_oupathuser</checkboxes>"
if chk_lastlogintimestamp.Checked then .writeline "<checkboxes>chk_lastlogintimestamp</checkboxes>"
if chk_groupmembership.Checked then .writeline "<checkboxes>chk_groupmembership</checkboxes>"
if chk_dgmembership.Checked then .writeline "<checkboxes>chk_dgmembership</checkboxes>"
if chk_managerlist.Checked then .writeline "<checkboxes>chk_managerlist</checkboxes>"
if chk_subordinates.Checked then .writeline "<checkboxes>chk_subordinates</checkboxes>"
.writeline "</root>"
.Close
end with
Set xmlDom = CreateObject("Microsoft.XMLDOM")
XmlDom.async = False
XmlDom.Load(FileName)
xmlDom.Save(FileName)
Set f = Nothing
Set fso = Nothing
Else
SaveAs
End If
End Sub
Sub OpenIt
UnCheckAllBoxes
Set xmlDom = CreateObject("Microsoft.XMLDOM")
xmlDom.async="false"
xmlDom.load(FileName)
globalStrSearchField = xmlDom.getElementsByTagName("searchfield").item(0).text
globalStrSearchBtnPush = xmlDom.getElementsByTagName("btnpush").item(0).text
txt_EmailTo.value = xmlDom.getElementsByTagName("to").item(0).text
txt_EmailCC.value = xmlDom.getElementsByTagName("cc").item(0).text
strEmailBCC = xmlDom.getElementsByTagName("bcc").item(0).text
txt_EmailSubject.value = xmlDom.getElementsByTagName("subject").item(0).text
txt_EmailBody.value = xmlDom.getElementsByTagName("emailbody").item(0).text
for n = 0 to xmlDom.getElementsByTagName("checkboxes").Length-1
execute(xmlDom.getElementsByTagName("checkboxes").item(n).text & ".checked = True")
next
DisplayTitle
Submit_Form "FileOpen"
End Sub
Sub Open()
on error resume next
Dim oDLG
Set oDLG = CreateObject("MSComDlg.CommonDialog")
if err.number > 0 then
err.clear
oDLG = window.prompt("Please enter the path and file name to open.", "C:\your-query.qry")
if oDLG <> "" then
FileName = oDLG
OpenIt
End If
else
With oDLG
.DialogTitle = "Open"
.Filter = "Query|*.qry|Text Files|*.txt|All files|*.*"
.MaxFileSize = 255
.Flags = .Flags Or &H1000 'FileMustExist (OFN_FILEMUSTEXIST)
.ShowOpen
If .FileName <> "" Then
FileName = .FileName
OpenIt
End If
End With
end if
Set oDLG = Nothing
End Sub
Sub DisplayTitle
If FileName="" Then
document.Title="Default - " & oHTA.ApplicationName
Else
document.Title=FileName & " - " & oHTA.ApplicationName
End If
End Sub
Sub ClickTheSpecialReportButton
Submit_Form("Disabled")
End Sub
Sub SpecialReportNewUsersToday
Clear_Form ""
txt_whencreated.Value = FormatDateTime(Date(),2)
Detect_Search_Field("txt_whencreated")
Submit_Form("Main")
End Sub
Sub SpecialReportDisabledUsersToday
Clear_Form ""
txt_whencreated.Value = FormatDateTime(Date(),2)
Detect_Search_Field("txt_whencreated")
Submit_Form("DisabledToday")
End Sub
Sub SpecialReportDisabledUsersSomeDay
Clear_Form ""
sRtn = showModalDialog("Calendar.htm","","center=yes;dialogWidth=160pt;dialogHeight=180pt")
txt_whencreated.value = sRtn
Detect_Search_Field("txt_whencreated")
Submit_Form("DisabledToday")
End Sub
Sub GetChkProfiles
For Each objOption in lst_ChkProfiles.Options
objOption.RemoveNode
Next
strAnswer = fAppData & "\profile.xml"
Set objFSO = CreateObject("Scripting.FileSystemObject")
If NOT objFSO.FileExists(strAnswer) Then
'Create profile.xml
Set f = objFSO.CreateTextFile(strAnswer,True)
with f
.writeline "<root>"
.writeline "<profile val=""Default"">"
.writeline "<checkboxes val=""chk_selectall"" />"
.writeline "<checkboxes val=""chk_seatno"" />"
.writeline "<checkboxes val=""chk_replacementseatno"" />"
.writeline "<checkboxes val=""chk_building"" />"
.writeline "<checkboxes val=""chk_extensionno"" />"
.writeline "<checkboxes val=""chk_empid"" />"
.writeline "<checkboxes val=""chk_department"" />"
.writeline "<checkboxes val=""chk_designation"" />"
.writeline "<checkboxes val=""chk_name"" />"
.writeline "<checkboxes val=""chk_loginname"" />"
.writeline "<checkboxes val=""chk_email"" />"
.writeline "<checkboxes val=""chk_mailboxsize"" />"
.writeline "<checkboxes val=""chk_mailboxstore"" />"
.writeline "<checkboxes val=""chk_notes"" />"
.writeline "<checkboxes val=""chk_computerserialno"" />"
.writeline "<checkboxes val=""chk_replacedmachine"" />"
.writeline "<checkboxes val=""chk_replacedcomputerserialno"" />"
.writeline "<checkboxes val=""chk_oupathcomputer"" />"
.writeline "<checkboxes val=""chk_computeros"" />"
.writeline "<checkboxes val=""chk_computerdescription"" />"
.writeline "<checkboxes val=""chk_computercreated"" />"
.writeline "<checkboxes val=""chk_mobileno"" />"
.writeline "<checkboxes val=""chk_company"" />"
.writeline "<checkboxes val=""chk_address"" />"
.writeline "<checkboxes val=""chk_city"" />"
.writeline "<checkboxes val=""chk_state"" />"
.writeline "<checkboxes val=""chk_zipcode"" />"
.writeline "<checkboxes val=""chk_country"" />"
.writeline "<checkboxes val=""chk_homephone"" />"
.writeline "<checkboxes val=""chk_manager"" />"
.writeline "<checkboxes val=""chk_whencreated"" />"
.writeline "<checkboxes val=""chk_oupathuser"" />"
.writeline "<checkboxes val=""chk_lastlogintimestamp"" />"
.writeline "<checkboxes val=""chk_groupmembership"" />"
.writeline "<checkboxes val=""chk_dgmembership"" />"
.writeline "<checkboxes val=""chk_managerlist"" />"
.writeline "<checkboxes val=""chk_subordinates"" />"
.writeline "</profile>"
.writeline "</root>"
.Close
end with
Set xmlDom = CreateObject("Microsoft.XMLDOM")
XmlDom.async = False
XmlDom.Load(strAnswer)
xmlDom.Save(strAnswer)
End If
Set xmlDom = CreateObject("Microsoft.XMLDOM")
xmlDom.async="false"
XmlDom.Load(strAnswer)
Set oNodes = XmlDom.selectNodes("//profile")
for n = 0 to oNodes.length - 1
set newOption = document.createElement("OPTION")
newOption.Text = oNodes(n).selectSingleNode("@val").Text
newOption.Value = oNodes(n).selectSingleNode("@val").Text
lst_ChkProfiles.Add newOption
next
Set f = Nothing
Set objFSO = Nothing
End Sub
Sub lst_chkprofiles_OnChange
UnCheckAllBoxes
strAnswer = fAppData & "\profile.xml"
Set xmlDom = CreateObject("Microsoft.XMLDOM")
xmlDom.async="false"
XmlDom.Load(strAnswer)
Set oNodes = XmlDom.selectNodes("//profile[@val=""" & lst_chkprofiles.Value & """]/checkboxes")
For i = 0 To oNodes.length - 1
execute(oNodes(i).selectSingleNode("@val").Text & ".Checked = True")
Next
TestToSeeWhatLinesAreHidden
End Sub
Sub DeleteFromCheckboxProfile
if lst_chkprofiles.Value <> "Default" then
strAnswer = fAppData & "\profile.xml"
Set xmlDom = CreateObject("Microsoft.XMLDOM")
xmlDom.async="false"
XmlDom.Load(strAnswer)
Set oNodes = XmlDom.selectNodes("//profile[@val=""" & lst_chkprofiles.Value & """]")
For Each objNode in oNodes
xmlDom.documentElement.removeChild _
(objNode)
Next
XmlDom.Save(strAnswer)
For Each objOption in lst_chkprofiles.Options
If objOption.Value = lst_chkprofiles.Value Then
objOption.RemoveNode
End If
Next
msgbox "Checkbox profile deleted."
lst_chkprofiles_OnChange
else
msgbox "You cannot delete the default profile."
end if
End Sub
Sub ModifyCurrentCheckboxProfile
if lst_chkprofiles.Value <> "Default" then
strAnswer = fAppData & "\profile.xml"
Set xmlDom = CreateObject("Microsoft.XMLDOM")
xmlDom.async="false"
XmlDom.Load(strAnswer)
strProfileName = lst_chkprofiles.Value
Set oNodes = XmlDom.selectNodes("//profile[@val=""" & lst_chkprofiles.Value & """]")
For Each objNode in oNodes
xmlDom.documentElement.removeChild _
(objNode)
Next
XmlDom.Save(strAnswer)
Const ForReading = 1
Const ForWriting = 2
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(strAnswer, ForReading)
Do Until objFile.AtEndOfStream
strLine = objFile.Readline
strLine = Trim(strLine)
If strLine <> "</root>" Then
strContents = strContents & strLine & vbCrLf
End If
Loop
objFile.Close
Set f = objFSO.OpenTextFile(strAnswer, ForWriting)
with f
.writeline strContents & vbTab & "<profile val=""" & strProfileName & """>"
if chk_selectall.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_selectall"" />"
if chk_seatno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_seatno"" />"
if chk_replacementseatno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_replacementseatno"" />"
if chk_building.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_building"" />"
if chk_extensionno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_extensionno"" />"
if chk_empid.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_empid"" />"
if chk_department.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_department"" />"
if chk_designation.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_designation"" />"
if chk_name.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_name"" />"
if chk_loginname.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_loginname"" />"
if chk_email.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_email"" />"
if chk_mailboxsize.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_mailboxsize"" />"
if chk_mailboxstore.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_mailboxstore"" />"
if chk_notes.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_notes"" />"
if chk_computerserialno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_computerserialno"" />"
if chk_replacedmachine.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_replacedmachine"" />"
if chk_replacedcomputerserialno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_replacedcomputerserialno"" />"
if chk_oupathcomputer.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_oupathcomputer"" />"
if chk_computeros.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_computeros"" />"
if chk_computerdescription.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_computerdescription"" />"
if chk_computercreated.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_computercreated"" />"
if chk_mobileno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_mobileno"" />"
if chk_company.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_company"" />"
if chk_address.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_address"" />"
if chk_city.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_city"" />"
if chk_state.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_state"" />"
if chk_zipcode.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_zipcode"" />"
if chk_country.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_country"" />"
if chk_homephone.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_homephone"" />"
if chk_manager.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_manager"" />"
if chk_whencreated.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_whencreated"" />"
if chk_oupathuser.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_oupathuser"" />"
if chk_lastlogintimestamp.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_lastlogintimestamp"" />"
if chk_groupmembership.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_groupmembership"" />"
if chk_dgmembership.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_dgmembership"" />"
if chk_managerlist.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_managerlist"" />"
if chk_subordinates.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_subordinates"" />"
.writeline vbTab & "</profile>"
.writeline "</root>"
.close
end with
msgbox "Checkbox profile modified."
else
msgbox "You cannot modify the default profile."
end if
End Sub
Sub AddToCheckboxProfile
strProfileName = window.prompt("Please enter a profile name.", "My profile name")
strAnswer = fAppData & "\profile.xml"
Const ForReading = 1
Const ForWriting = 2
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(strAnswer, ForReading)
Do Until objFile.AtEndOfStream
strLine = objFile.Readline
strLine = Trim(strLine)
If strLine <> "</root>" Then
strContents = strContents & strLine & vbCrLf
End If
Loop
objFile.Close
Set f = objFSO.OpenTextFile(strAnswer, ForWriting)
with f
.writeline strContents & vbTab & "<profile val=""" & strProfileName & """>"
if chk_selectall.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_selectall"" />"
if chk_seatno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_seatno"" />"
if chk_replacementseatno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_replacementseatno"" />"
if chk_building.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_building"" />"
if chk_extensionno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_extensionno"" />"
if chk_empid.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_empid"" />"
if chk_department.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_department"" />"
if chk_designation.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_designation"" />"
if chk_name.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_name"" />"
if chk_loginname.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_loginname"" />"
if chk_email.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_email"" />"
if chk_mailboxsize.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_mailboxsize"" />"
if chk_mailboxstore.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_mailboxstore"" />"
if chk_notes.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_notes"" />"
if chk_computerserialno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_computerserialno"" />"
if chk_replacedmachine.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_replacedmachine"" />"
if chk_replacedcomputerserialno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_replacedcomputerserialno"" />"
if chk_oupathcomputer.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_oupathcomputer"" />"
if chk_computeros.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_computeros"" />"
if chk_computerdescription.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_computerdescription"" />"
if chk_computercreated.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_computercreated"" />"
if chk_mobileno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_mobileno"" />"
if chk_company.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_company"" />"
if chk_address.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_address"" />"
if chk_city.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_city"" />"
if chk_state.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_state"" />"
if chk_zipcode.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_zipcode"" />"
if chk_country.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_country"" />"
if chk_homephone.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_homephone"" />"
if chk_manager.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_manager"" />"
if chk_whencreated.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_whencreated"" />"
if chk_oupathuser.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_oupathuser"" />"
if chk_lastlogintimestamp.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_lastlogintimestamp"" />"
if chk_groupmembership.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_groupmembership"" />"
if chk_dgmembership.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_dgmembership"" />"
if chk_managerlist.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_managerlist"" />"
if chk_subordinates.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_subordinates"" />"
.writeline vbTab & "</profile>"
.writeline "</root>"
.close
end with
set newOption = document.createElement("OPTION")
newOption.Text = strProfileName
newOption.Value = strProfileName
lst_ChkProfiles.Add newOption
lst_ChkProfiles.Value = strProfileName
End Sub
Sub AddToQueryBuilder
globalstrQueryBuilder = globalstrQueryBuilder & globalstrSearchField
if NOT chk_qbrecorder.Checked then
msgbox "The query has been added."
end if
End Sub
Sub QueryBuilderRecorder
if chk_qbrecorder.Checked then
msgbox "Query Builder is now recording."
else
msgbox "Query Builder has stopped recording." & vbCrLf & "Click OK to view the combined query."
RunQueryBuilder
end if
End Sub
Sub ViewQueryBuilder
if globalstrQueryBuilder <> "" then
msgbox "(|" & globalstrQueryBuilder & ")"
else
msgbox "There are no stored queries to view."
end if
End Sub
Sub RunQueryBuilder
globalStrSearchField = "(|" & globalstrQueryBuilder & ")"
globalstrSearchBtnPush = "FileOpen"
Submit_Form "FileOpen"
End Sub
Sub ClearQueryBuilder
globalstrQueryBuilder = ""
End Sub
Sub txt_EmailSubject_OnChange
For i = 0 to (txt_EmailSubject.Options.Length - 1)
If (txt_EmailSubject.Options(i).Selected) Then
strEmailTo = arrToSpecial(i)
strEmailCC = arrCCSpecial(i)
txt_EmailTo.Value = strEmailTo
txt_EmailCC.Value = strEmailCC
End If
Next
End Sub
Sub PingComputer(name)
if name <> "" then
strComuptername = trim(name)
'Run PING command
Set objPingResults = GetObject("winmgmts:{impersonationLevel=impersonate}//./root/cimv2"). ExecQuery("SELECT * FROM Win32_PingStatus WHERE Address = '" & strComuptername & "'")
'Take ping reults and put into variable strPingResult
strPingResult = 0
For Each oPingResult In objPingResults
strPingResult = oPingResult.ResponseTime
strIPAddress = oPingResult.ProtocolAddress
Next
'Catch PINGS that do not have a result - typically this is for unreachable devices
if IsEmpty(strPingResult) then
strPingResult = 9999
end if
if IsNULL(strPingResult) then
strPingResult = 9999
end if
' Run ping again if first attempt fails
if strPingResult = 9999 then
'Run PING command
Set objPingResults = GetObject("winmgmts:{impersonationLevel=impersonate}//./root/cimv2"). ExecQuery("SELECT * FROM Win32_PingStatus WHERE Address = '" & strComuptername & "'")
'Take ping reults and put into variable strPingResult
strPingResult = 0
For Each oPingResult In objPingResults
strPingResult = oPingResult.ResponseTime
strIPAddress = oPingResult.ProtocolAddress
Next
'Catch PINGS that do not have a result - typically this is for unreachable devices
if IsEmpty(strPingResult) then
strPingResult = 9999
end if
if IsNULL(strPingResult) then
strPingResult = 9999
end if
end if
span_computerip.innerhtml = strIPAddress
if strPingResult = 9999 then
span_computeronline.innerhtml = "Offline"
else
span_computeronline.innerhtml = "Online"
end if
else
span_computerip.innerhtml = " "
span_computeronline.innerhtml = " "
end if
End Sub
Sub bt2Go_onclick()
'** Declarations:'
Dim OPR, DM, USR, strNTName, strUserDN, strNM, objUser, TNP, DENY, POS, NEG
Dim objNetwork, objShell
'** Objects:'
Set objNetwork = CreateObject("WScript.Network")
Set objShell = CreateObject("Wscript.Shell")
'** User/Domain:'
OPR = objNetwork.UserName
DM = objNetwork.UserDomain & "\"
'** Write username for the user that needs to be enabled or disabled:'
USR = InputBox("Username:", "Enable or Disable Active Directory User", _
"Write Username Here")
if USR = "" then
exit sub
End if
'** Prevent run-time errors:'
On Error Resume Next
'** Declare NameTranslate constants:'
Const ADS_NAME_INITTYPE_GC = 3
Const ADS_NAME_TYPE_NT4 = 3
Const ADS_NAME_TYPE_1779 = 1
'** Combine the user name and domain name:'
strNTName = DM & USR
strNT2 = DM & OPR
'** Translate operator name into DN:'
Set objTrans2 = CreateObject("NameTranslate")
objTrans2.Init ADS_NAME_INITTYPE_GC, ""
objTrans2.Set ADS_NAME_TYPE_NT4, strNT2
strUserDN2 = objTrans2.Get(ADS_NAME_TYPE_1779)
Set objUser2 = GetObject("LDAP://" & strUserDN2)
strUS3 = Mid(strUserDN2,4)
strUS4 = Split(strUS3, ",")
For i = LBound(strUS4) to UBound(strUS4)
strNM2 = strUS4(i)
Exit For
Next
'** Translate name into DN:'
Set objTrans = CreateObject("NameTranslate")
objTrans.Init ADS_NAME_INITTYPE_GC, ""
objTrans.Set ADS_NAME_TYPE_NT4, strNTName
strUserDN = objTrans.Get(ADS_NAME_TYPE_1779)
'** Do LDAP bind to object:'
Set objUser = GetObject("LDAP://" & strUserDN)
'** Get full name:'
strUS1 = Mid(strUserDN,4)
strUS2 = Split(strUS1, ",")
For i = LBound(strUS2) to UBound(strUS2)
strNM = strUS2(i)
Exit For
Next
'** If no error, enable or disable user:'
If Err = 0 Then
Const ADS_UF_ACCOUNTDISABLE = 2
intUAC = objUser.Get("userAccountControl")
objUser.Put "userAccountControl", intUAC XOR ADS_UF_ACCOUNTDISABLE
objUser.SetInfo
If intUAC AND ADS_UF_ACCOUNTDISABLE Then
POS = 1
Else
NEG = 1
End If
Else
objShell.Popup UCase(USR) & " was not found. Please try again.", _
5, "Unknown Username", 48
exit sub
End If
'** If no permission, give message:'
If Err = "-2147024891" Then
DENY = 1
objShell.Popup "You can not enable or disable this user.", _
5, "Permission Denied", 48
exit sub
End If
'** If no error, show result:'
If DENY <> 1 Then
If POS = 1 Then
MsgBox UCase(USR) & " were successfully enabled.", _
64, "User enabled by " & strNM2
End If
If NEG = 1 Then
MsgBox UCase(USR) & " were successfully disabled.", _
64, "User disabled by " & strNM2
End If
End If
End Sub
Sub bt1Go_onclick()
'** Declarations:'
Dim OPR, DM, USR, strNTName, strUserDN, strNM, objUser, TNP, EROR, ABS
Dim objNetwork, objShell, objFSO
'** Objects:'
Set objNetwork = CreateObject("WScript.Network")
Set objShell = CreateObject("Wscript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
'** User/Domain:'
OPR = objNetwork.UserName
DM = objNetwork.UserDomain & "\"
'** Type username for the user that needs password change:'
USR = InputBox("Username:", "Create Temporary Active Directory User Password", _
"Write Username Here")
if USR = "" then
exit sub
End if
'** Prevent run-time errors:'
On Error Resume Next
'** NameTranslate constants:'
Const ADS_NAME_INITTYPE_GC = 3
Const ADS_NAME_TYPE_NT4 = 3
Const ADS_NAME_TYPE_1779 = 1
'** Combine the user name and domain name:'
strNTName = DM & USR
strNT2 = DM & OPR
'** Translate operator name into DN:'
Set objTrans2 = CreateObject("NameTranslate")
objTrans2.Init ADS_NAME_INITTYPE_GC, ""
objTrans2.Set ADS_NAME_TYPE_NT4, strNT2
strUserDN2 = objTrans2.Get(ADS_NAME_TYPE_1779)
Set objUser2 = GetObject("LDAP://" & strUserDN2)
strUS3 = Mid(strUserDN2,4)
strUS4 = Split(strUS3, ",")
For i = LBound(strUS4) to UBound(strUS4)
strNM2 = strUS4(i)
Exit For
Next
'** Translate username into DN:'
Set objTrans = CreateObject("NameTranslate")
objTrans.Init ADS_NAME_INITTYPE_GC, ""
objTrans.Set ADS_NAME_TYPE_NT4, strNTName
If Err <> 0 Then
ABS = 1
End If
'** Execute if object is found:'
If ABS <> 1 Then
strUserDN = objTrans.Get(ADS_NAME_TYPE_1779)
'** Do LDAP bind to object:'
Set objUser = GetObject("LDAP://" & strUserDN)
'** Get full name:'
strUS1 = Mid(strUserDN,4)
strUS2 = Split(strUS1, ",")
For i = LBound(strUS2) to UBound(strUS2)
strNM = strUS2(i)
Exit For
Next
'** Assign password and parameters:'
If strNM <> "" Then
TNP = "changeme" & Mid(objFSO.GetTempName,4,4)
objUser.SetPassword TNP
If Err <> 0 Then
EROR = 1
End If
objUser.Put "pwdLastSet", 0
objUser.IsAccountLocked = False
objUser.SetInfo
End If
'** If no error, show new temporary password:'
If EROR <> 1 Then
MsgBox "New temporary password for " & UCase(USR) & " (" & strNM & "):" & _
vbCrLf & vbCrLf & TNP & vbCrLf, 64, "New Password, configured by " & strNM2
End If
End If
'** End if object not found:'
If ABS = 1 Then
MsgBox UCase(USR) & " was not found. Please try again.", _
48, "Unknown Username"
End If
'** If no permission, give message:'
If EROR = 1 Then
MsgBox "You can not change password for this user.", _
48, "Permission Denied"
End If
End Sub
Sub ImportFromExcel
on error resume next
boolEndofFile = False
Dim oDLG
Set oDLG = CreateObject("MSComDlg.CommonDialog")
if err.number > 0 then
err.clear
oDLG = window.prompt("Please enter the path and file name to open.", "D:\your-spreadsheet.xls")
if oDLG <> "" then
globalstrQueryBuilder = ""
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open(oDLG)
intRow = 2
Do Until boolEndofFile
'According to ticket Q__23804616, these are the fields that are in the spreadsheet;
'Emp ID,Seat No,Email ID,Full Name, NT Login,Machine Name
strCell1 = objExcel.Cells(intRow, 1).Value 'Must be the "Employee ID" field
strCell2 = objExcel.Cells(intRow, 2).Value 'Must be the "Seat No" field
strCell3 = objExcel.Cells(intRow, 3).Value 'Must be the "Email Address" field
strCell4 = objExcel.Cells(intRow, 4).Value 'Must be the "Full Name" field
strCell5 = objExcel.Cells(intRow, 5).Value 'Must be the "NT Login" field
strCell6 = objExcel.Cells(intRow, 6).Value 'Must be the "Machine Name" field
if strCell1 & strCell2 & strCell3 & strCell4 & strCell5 & strCell6 = "" then
boolEndofFile = True
else
if NOT IsEmpty(strCell1) then strValue = strValue & "(description=*" & strCell1 & "*)" 'Employee ID
if NOT IsEmpty(strCell2) then strValue = strValue & "(description=*" & strCell2 & "*)" 'Seat No
if NOT IsEmpty(strCell3) then strValue = strValue & "(mail=*" & strCell3 & "*)" 'Email Address
if NOT IsEmpty(strCell4) then strValue = strValue & "(cn=*" & strCell4 & "*)" 'Full Name
if NOT IsEmpty(strCell5) then strValue = strValue & "(samAccountName=*" & strCell5 & "*)" 'NT Login
if NOT IsEmpty(strCell6) then strValue = strValue & "(description=*" & strCell6 & "*)" 'Machine Name
end if
intRow = intRow + 1
Loop
objExcel.Quit
globalstrQueryBuilder = strValue
globalStrSearchField = "(|" & globalstrQueryBuilder & ")"
globalstrSearchBtnPush = "FileOpen"
Submit_Form "FileOpen"
End If
else
With oDLG
.DialogTitle = "Open"
.Filter = "Excel Workbook|*.xls"
.MaxFileSize = 255
.Flags = .Flags Or &H1000 'FileMustExist (OFN_FILEMUSTEXIST)
.ShowOpen
If .FileName <> "" Then
globalstrQueryBuilder = ""
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open(.FileName)
intRow = 2
Do Until boolEndofFile
strCell1 = objExcel.Cells(intRow, 1).Value 'Must be the "Employee ID" field
strCell2 = objExcel.Cells(intRow, 2).Value 'Must be the "Seat No" field
strCell3 = objExcel.Cells(intRow, 3).Value 'Must be the "Email Address" field
strCell4 = objExcel.Cells(intRow, 4).Value 'Must be the "Full Name" field
strCell5 = objExcel.Cells(intRow, 5).Value 'Must be the "NT Login" field
strCell6 = objExcel.Cells(intRow, 6).Value 'Must be the "Machine Name" field
if strCell1 & strCell2 & strCell3 & strCell4 & strCell5 & strCell6 = "" then
boolEndofFile = True
else
if NOT IsEmpty(strCell1) then strValue = strValue & "(description=*" & strCell1 & "*)" 'Employee ID
if NOT IsEmpty(strCell2) then strValue = strValue & "(description=*" & strCell2 & "*)" 'Seat No
if NOT IsEmpty(strCell3) then strValue = strValue & "(mail=*" & strCell3 & "*)" 'Email Address
if NOT IsEmpty(strCell4) then strValue = strValue & "(cn=*" & strCell4 & "*)" 'Full Name
if NOT IsEmpty(strCell5) then strValue = strValue & "(samAccountName=*" & strCell5 & "*)" 'NT Login
if NOT IsEmpty(strCell6) then strValue = strValue & "(description=*" & strCell6 & "*)" 'Machine Name
end if
intRow = intRow + 1
Loop
objExcel.Quit
globalstrQueryBuilder = strValue
globalStrSearchField = "(|" & globalstrQueryBuilder & ")"
globalstrSearchBtnPush = "FileOpen"
Submit_Form "FileOpen"
End If
End With
end if
Set oDLG = Nothing
End Sub
Sub About_OnClick
'Enter names as contibuters increase.
msgbox vbCRLF & "User and Computer Account Control" & vbCRLF & vbCRLF & "Written for Sharatha and contributed by;" & vbCRLF & vbCRLF & vbtab & _
"""rejoinder""" & vbCRLF & vbtab & _
" " & vbCRLF & vbtab & _
" " & vbCRLF & vbtab & _
" " & vbCRLF & vbtab & _
" " & vbCRLF & vbtab
End Sub
Sub RunHTA(NameOfHTA)
Set objShell = CreateObject("Wscript.Shell")
objShell.Run NameOfHTA
End Sub
Sub allowpings
if chk_allowpings.Checked then
boolAllowPing = True
else
boolAllowPing = False
end if
End Sub
Sub LookupLastLogin
if chk_LookupLastLogin.Checked then
boolLookupLastLogin = True
else
boolLookupLastLogin = False
end if
End Sub
Sub TableReports
if chk_TableReports.Checked then
boolTableReports = True
else
boolTableReports = False
end if
End Sub
Sub GetMailboxDetails
on error resume next
strExchangeServerQuery = "winmgmts://" & strEmailServer & "/root/cimv2/applications/exchange"
set serverList = GetObject(strExchangeServerQuery).InstancesOf("ExchangeServerState")
For each ExchangeServer in serverList
strExchangeQuery = "winmgmts://" & ExchangeServer.Name & "/root/MicrosoftExchangeV2"
strExchangeQuery = "winmgmts://" & strEmailServer & "/root/MicrosoftExchangeV2"
Set objMailboxes = GetObject(strExchangeQuery).InstancesOf("Exchange_Mailbox")
For each mailbox in objMailboxes
MailboxList.AddNew
MailboxList("legacyExchangeDN") = mailbox.LegacyDN
MailboxList("mailboxsize") = Round(mailbox.Size / 1024)
MailboxList.Update
Next
Next
MailboxList.MoveFirst
End Sub
Sub MailboxSizeCompare
oDLG = window.prompt("Enter the mailbox size limit in MB.", "1000")
if IsNumeric(oDLG) then
Submit_Form("MailboxSize:" & oDLG)
end if
End Sub
Sub DoCal(elTarget)
sRtn = showModalDialog("Calendar.htm","","center=yes;dialogWidth=160pt;dialogHeight=180pt")
Execute(elTarget & ".value = sRtn")
Detect_Search_Field(elTarget)
End Sub
Function GetOUMembers(OU)
strValue = ""
on error resume next
GroupMembershipDB.Filter = "MemberDistinguishedName LIKE '*OU=" & OU & "*'"
GroupMembershipDB.Sort = "SAMAccountName"
GroupMembershipDB.MoveFirst
Do While Not GroupMembershipDB.EOF
strValue = strValue & "(DistinguishedName=" & GroupMembershipDB.Fields.Item("MemberDistinguishedName").Value & ")"
GroupMembershipDB.MoveNext
Loop
if err.number > 0 then
GetOUMembers = "INVALID"
else
GetOUMembers = "(|" & strValue & ")"
End if
End Function
Function GetComputersForOSQuery(OS)
strValue = ""
strSearchField = "(operatingsystem=*" & OS & "*)"
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
boolFoundRecords = False
for each strDomain in arrDomainNames
' Search entire Active Directory domain.
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(&(objectCategory=computer)" & strSearchField & ")"
' Comma delimited list of attribute values to retrieve.
strAttributes = "cn,operatingsystem"
' Construct the LDAP syntax query.
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 1000
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False
' Run the query.
Set adoRecordset = adoCommand.Execute
' Enumerate the resulting recordset.
strDetails = ""
If Not adoRecordset.EOF Then
boolFoundRecords = True
Do Until adoRecordset.EOF
strValue = strValue & "(info=*" & adoRecordset.Fields("cn").Value & "*)"
adoRecordset.MoveNext
Loop
End if
next
if NOT boolFoundRecords then
GetComputersForOSQuery = "INVALID"
else
GetComputersForOSQuery = "(|" & strValue & ")"
End if
End Function
Function GetComputersForDateCreatedQuery(CreatedDate)
strValue = ""
strWhenCreated = Year(CreatedDate) & Right("0" & Month(CreatedDate), 2) & Right("0" & Day(CreatedDate), 2)
strSearchField = "(whenCreated>=" & strWhenCreated & "000000.0Z)(whenCreated<=" & strWhenCreated & "235959.0Z)"
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
boolFoundRecords = False
for each strDomain in arrDomainNames
' Search entire Active Directory domain.
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(&(objectCategory=computer)" & strSearchField & ")"
' Comma delimited list of attribute values to retrieve.
strAttributes = "cn,operatingsystem"
' Construct the LDAP syntax query.
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 1000
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False
' Run the query.
Set adoRecordset = adoCommand.Execute
' Enumerate the resulting recordset.
strDetails = ""
If Not adoRecordset.EOF Then
boolFoundRecords = True
Do Until adoRecordset.EOF
strValue = strValue & "(info=*" & adoRecordset.Fields("cn").Value & "*)"
adoRecordset.MoveNext
Loop
End if
next
if NOT boolFoundRecords then
GetComputersForDateCreatedQuery = "INVALID"
else
GetComputersForDateCreatedQuery = "(|" & strValue & ")"
End if
End Function
Function GetComputersBasedOnOU(OU)
strValue = ""
strSearchField = "(distinguishedName=*)"
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
boolFoundRecords = False
for each strDomain in arrDomainNames
' Search entire Active Directory domain.
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(&(objectCategory=computer)" & strSearchField & ")"
' Comma delimited list of attribute values to retrieve.
strAttributes = "cn,distinguishedName"
' Construct the LDAP syntax query.
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 1000
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False
' Run the query.
Set adoRecordset = adoCommand.Execute
' Enumerate the resulting recordset.
strDetails = ""
If Not adoRecordset.EOF Then
boolFoundRecords = True
Do Until adoRecordset.EOF
if InStr(adoRecordset.Fields("distinguishedName").Value,OU) > 0 then
strValue = strValue & "(info=*" & adoRecordset.Fields("cn").Value & "*)"
End if
adoRecordset.MoveNext
Loop
End if
next
if NOT boolFoundRecords then
GetComputersBasedOnOU = "INVALID"
else
GetComputersBasedOnOU = "(|" & strValue & ")"
End if
End Function
</script>
<STYLE TYPE="text/css">
<!--
body {background-color: menu;color: menutext;}
td {font-family: MS Sans Serif;font-size: 8pt;}
input {font-family: MS Sans Serif;font-size: 8pt;}
button {font-family: MS Sans Serif;font-size: 8pt;}
option {font-family: MS Sans Serif;font-size: 8pt;}
select {font-family: MS Sans Serif;font-size: 8pt;}
.submenu {position:absolute;top=35;
background-color:Menu;
border="1px outset";}
.MenuIn {border:"1px inset";cursor:default;}
.Menuover {border:"1px outset";cursor:default;}
.Menuout {}
.Submenuover {background-color:highlight;color:highlighttext;cursor:default;}
.Submenuout {background-color:Menu;color:MenuText;cursor:default;}
.HideFromGUI {display:none;}
-->
</STYLE>
<body>
<!-- Main menu -->
<TABLE id=MenuTable height=25><TR>
<TD onclick='ShowSubMenu Me,MyFileMenu'
onmouseover='MenuOver Me,MyFileMenu'
onmouseout='MenuOut Me'> Query </TD>
<TD >|</TD>
<TD onclick='ShowSubMenu Me,MyEditMenu'
onmouseover='MenuOver Me,MyEditMenu'
onmouseout='MenuOut Me'> Reports </TD>
<TD >|</TD>
<TD onclick='ShowSubMenu Me,QueryBuilderMenu'
onmouseover='MenuOver Me,QueryBuilderMenu'
onmouseout='MenuOut Me'> Query Builder </TD>
<TD >|</TD>
<TD onclick='ShowSubMenu Me,ToolsMenu'
onmouseover='MenuOver Me,ToolsMenu'
onmouseout='MenuOut Me'> Tools </TD>
<TD >|</TD>
<TD > Checkbox Profile <select id="lst_chkprofiles" name="lst_chkprofiles">
</select>
</TD>
<!-- Main menu, Checkbox profile tools -->
<TD onclick='AddToCheckboxProfile'
onmouseover='MenuOver Me,MyFileMenu'
onmouseout='MenuOut Me' NOWRAP> [+]Add</TD>
<TD onclick='DeleteFromCheckboxProfile'
onmouseover='MenuOver Me,MyFileMenu'
onmouseout='MenuOut Me' NOWRAP> [-]Delete</TD>
<TD onclick='ModifyCurrentCheckboxProfile'
onmouseover='MenuOver Me,MyFileMenu'
onmouseout='MenuOut Me' NOWRAP> [!]Modify</TD>
<TD >|</TD>
<TD onclick='About_OnClick'
onmouseover='MenuOver Me,MyFileMenu'
onmouseout='MenuOut Me'> About</TD>
<TD >|</TD>
<TD onclick="HideMenu" width="100%" border="2"></TD>
</TR></TABLE>
<!-- Drop down for QUery -->
<TABLE ID=MyFileMenu class=submenu style="left=10;display:none;">
<TR><TD onclick="HideMenu:open"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Open</TD></TR>
<TR><TD onclick="HideMenu:importfromexcel"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Import from Excel</TD></TR>
<TR><TD onclick="HideMenu:save"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Save</TD></TR>
<TR><TD onclick="HideMenu:saveAs"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Save As</TD></TR>
<TR><TD><HR></TD></TR>
<TR><TD onclick="HideMenu:window.close"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Quit</TD></TR>
</TABLE>
<!-- Drop down for Reports -->
<TABLE ID=MyEditMenu class=submenu style="left=50;display:none;">
<TR><TD onclick="HideMenu:Email_This_Record"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Email This Record</TD></TR>
<TR><TD onclick="HideMenu:Email_All_Records"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Email All Records</TD></TR>
<TR><TD onclick="HideMenu:Email_As_Attachment"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Email as Attachment</TD></TR>
<TR><TD><HR></TD></TR>
<TR><TD onclick="HideMenu:RunScript"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Save to</TD></TR>
<TR><TD><HR></TD></TR>
<TR><TD onclick="HideMenu:ClickTheSpecialReportButton"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> All Disabled Users</TD></TR>
<TR><TD onclick="HideMenu:SpecialReportDisabledUsersToday"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Disabled Users Last Modified Today</TD></TR>
<TR><TD onclick="HideMenu:SpecialReportDisabledUsersSomeDay"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Disabled Users Last Modified...</TD></TR>
<TR><TD onclick="HideMenu:SpecialReportNewUsersToday"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> New Users Created Today</TD></TR>
<TR><TD><HR></TD></TR>
<TR><TD onclick="HideMenu:Submit_Form('Logon:7')"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Not logged in for 1 week</TD></TR>
<TR><TD onclick="HideMenu:Submit_Form('Logon:30')"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Not logged in for 1 month</TD></TR>
<TR><TD onclick="HideMenu:Submit_Form('Logon:60')"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Not logged in for 2 months</TD></TR>
<TR><TD><HR></TD></TR>
<TR><TD onclick="HideMenu:MailboxSizeCompare"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Users with mailbox size over...</TD></TR>
</TABLE>
<!-- Drop down for Query Builder -->
<TABLE ID=QueryBuilderMenu class=submenu style="left=97;display:none;">
<TR><TD onclick="HideMenu:AddToQueryBuilder"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Add recent query to Query Builder</TD></TR>
<TR><TD onclick="HideMenu:QueryBuilderRecorder"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Query Builder Recorder<input type="checkbox" id="chk_qbrecorder" name="chk_qbrecorder"></TD></TR>
<TR><TD onclick="HideMenu:ViewQueryBuilder"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> View Query Builder</TD></TR>
<TR><TD onclick="HideMenu:RunQueryBuilder"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Run Query Builder</TD></TR>
<TR><TD onclick="HideMenu:ClearQueryBuilder"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Clear Query Builder</TD></TR>
</TABLE>
<!-- Drop down for Tools -->
<TABLE ID=ToolsMenu class=submenu style="left=170;display:none;">
<TR><TD onclick="HideMenu:allowpings"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Allow Pings<input type="checkbox" id="chk_allowpings" name="chk_allowpings"></TD></TR>
<TR><TD onclick="HideMenu:LookupLastLogin"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Look up last login<input type="checkbox" id="chk_LookupLastLogin" name="chk_LookupLastLogin"></TD></TR>
<TR><TD onclick="HideMenu:tablereports"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Invert emails to table format<input type="checkbox" id="chk_tablereports" name="chk_tablereports"></TD></TR>
<TR><TD><HR></TD></TR>
<TR><TD onclick="HideMenu:RunHTA('HTA1.HTA')"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Launch HTA 1</TD></TR>
<TR><TD onclick="HideMenu:RunHTA('HTA2.HTA')"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Launch HTA 2</TD></TR>
</TABLE>
<hr>
<table width="100%" border="0" onclick="HideMenu">
<tr>
<td align="left" colspan="2" valign="top">
<table border="0" padding="1">
<tr>
<td>
<fieldset>
<LEGEND>Email Settings</LEGEND>
<table border="0">
<tr><td>To:</td><td><button onclick="ShowDialogTo">Resolve</button></td><td><input type="text" id="txt_EmailTo" name="txt_EmailTo" size="50"><input type="hidden" id="txt_EmailToHidden" name="txt_EmailToHidden" size="50"><br></td></td><td rowspan="4" valign="top">Email Body:</td><td rowspan="3" valign="top"><textarea id="txt_EmailBody" name="txt_EmailBody" rows=5 cols=40></TEXTAREA></td></tr>
<tr><td>CC:</td><td><button onclick="ShowDialogCC">Resolve</button></td><td><input type="text" id="txt_EmailCC" name="txt_EmailCC" size="50"><input type="hidden" id="txt_EmailCCHidden" name="txt_EmailCCHidden" size="50"><br></td></tr>
<tr><td>Email Subject:</td><td></td><td><select id="txt_EmailSubject" name="txt_EmailSubject"></select></td></tr>
</table>
</fieldset>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="left" valign="top" width="38%">
<table border="0">
<tr>
<td>
</td>
<td>
<input type="checkbox" id="chk_selectall" name="chk_selectall" checked=True onclick="vbs:SelectAllCheck">Select/Deselect All
</td>
</tr>
<tr id=tr_seatno>
<td>
Seat No:
</td>
<td>
<input type="checkbox" id="chk_seatno" name="chk_seatno" checked=True><input type="text" size="40" id="txt_seatno" name="txt_seatno" onkeypress="vbs:Detect_Search_Field('txt_seatno')">
</td>
</tr>
<tr id=tr_replacementseatno>
<td>
Replacement Seat No:
</td>
<td>
<input type="checkbox" id="chk_replacementseatno" name="chk_replacementseatno" checked=True><input type="text" size="40" id="txt_replacementseatno" name="txt_replacementseatno">
</td>
</tr>
<tr id=tr_building>
<td>
Building:
</td>
<td>
<input type="checkbox" id="chk_building" name="chk_building" checked=True><input type="text" size="40" id="txt_building" name="txt_building" onkeypress="vbs:Detect_Search_Field('txt_building')">
</td>
</tr>
<tr id=tr_extensionno>
<td>
Extension No:
</td>
<td>
<input type="checkbox" id="chk_extensionno" name="chk_extensionno" checked=True><input type="text" size="40" id="txt_extensionno" name="txt_extensionno" onkeypress="vbs:Detect_Search_Field('txt_extensionno')">
</td>
</tr>
<tr id=tr_empid>
<td>
Emp ID:
</td>
<td>
<input type="checkbox" id="chk_empid" name="chk_empid" checked=True><input type="text" size="10" id="txt_empid" name="txt_empid" onkeypress="vbs:Detect_Search_Field('txt_empid')">
</td>
</tr>
<tr id=tr_department>
<td>
Department:
</td>
<td>
<input type="checkbox" id="chk_department" name="chk_department" checked=True><input type="text" size="50" id="txt_department" name="txt_department" onkeypress="vbs:Detect_Search_Field('txt_department')">
</td>
</tr>
<tr id=tr_designation>
<td>
Designation:
</td>
<td>
<input type="checkbox" id="chk_designation" name="chk_designation" checked=True><input type="text" size="50" id="txt_designation" name="txt_designation" onkeypress="vbs:Detect_Search_Field('txt_designation')">
</td>
</tr>
<tr id=tr_name>
<td>
User Name:
</td>
<td>
<input type="checkbox" id="chk_name" name="chk_name" checked=True><input type="text" size="40" id="txt_name" name="txt_name" onkeypress="vbs:Detect_Search_Field('txt_name')">
<span id="span_userorcontact">
</span>
</td>
</tr>
<tr id=tr_loginname>
<td>
Login Name:
</td>
<td>
<input type="checkbox" id="chk_loginname" name="chk_loginname" checked=True><input type="text" size="40" id="txt_loginname" name="txt_loginname" onkeypress="vbs:Detect_Search_Field('txt_loginname')">
<span id="span_enabled">
</span>
</td>
</tr>
<tr id=tr_email>
<td>
Email Address:
</td>
<td>
<input type="checkbox" id="chk_email" name="chk_email" checked=True><input type="text" size="50" id="txt_email" name="txt_email" onkeypress="vbs:Detect_Search_Field('txt_email')">
</td>
</tr>
<tr id=tr_mailboxsize>
<td>
Mailbox Size (MB):
</td>
<td>
<input type="checkbox" id="chk_mailboxsize" name="chk_mailboxsize" checked=True><input type="text" size="20" id="txt_mailboxsize" name="txt_mailboxsize" onkeypress="vbs:Detect_Search_Field('txt_mailboxsize')">
</td>
</tr>
<tr id=tr_mailboxstore>
<td>
Mailbox Store:
</td>
<td>
<input type="checkbox" id="chk_mailboxstore" name="chk_mailboxstore" checked=True><input type="text" size="50" id="txt_mailboxstore" name="txt_mailboxstore" onkeypress="vbs:Detect_Search_Field('txt_mailboxstore')">
</td>
</tr>
<tr id=tr_mobileno>
<td>
Mobile Number:
</td>
<td>
<input type="checkbox" id="chk_mobileno" name="chk_mobileno" checked=True><input type="text" size="20" id="txt_mobileno" name="txt_mobileno" onkeypress="vbs:Detect_Search_Field('txt_mobileno')">
</td>
</tr>
<tr id=tr_company>
<td>
Company:
</td>
<td>
<input type="checkbox" id="chk_company" name="chk_company" checked=True><input type="text" size="20" id="txt_company" name="txt_company" onkeypress="vbs:Detect_Search_Field('txt_company')">
</td>
</tr>
<tr id=tr_address>
<td>
Address:
</td>
<td>
<input type="checkbox" id="chk_address" name="chk_address" checked=True><input type="text" size="20" id="txt_address" name="txt_address" onkeypress="vbs:Detect_Search_Field('txt_address')">
</td>
</tr>
<tr id=tr_city>
<td>
City:
</td>
<td>
<input type="checkbox" id="chk_city" name="chk_city" checked=True><input type="text" size="20" id="txt_city" name="txt_city" onkeypress="vbs:Detect_Search_Field('txt_city')">
</td>
</tr>
<tr id=tr_state>
<td>
State:
</td>
<td>
<input type="checkbox" id="chk_state" name="chk_state" checked=True><input type="text" size="20" id="txt_state" name="txt_state" onkeypress="vbs:Detect_Search_Field('txt_state')">
</td>
</tr>
<tr id=tr_zipcode>
<td>
Zip Code:
</td>
<td>
<input type="checkbox" id="chk_zipcode" name="chk_zipcode" checked=True><input type="text" size="20" id="txt_zipcode" name="txt_zipcode" onkeypress="vbs:Detect_Search_Field('txt_zipcode')">
</td>
</tr>
<tr id=tr_country>
<td>
Country:
</td>
<td>
<input type="checkbox" id="chk_country" name="chk_country" checked=True><input type="text" size="20" id="txt_country" name="txt_country" onkeypress="vbs:Detect_Search_Field('txt_country')">
  Must search by 2 letter country code
</td>
</tr>
<tr id=tr_homephone>
<td>
Home Phone:
</td>
<td>
<input type="checkbox" id="chk_homephone" name="chk_homephone" checked=True><input type="text" size="20" id="txt_homephone" name="txt_homephone" onkeypress="vbs:Detect_Search_Field('txt_homephone')">
</td>
</tr>
<tr id=tr_manager>
<td>
Manager:
</td>
<td>
<input type="checkbox" id="chk_manager" name="chk_manager" checked=True><input type="hidden" size="20" id="txt_manager" name="txt_manager"><input type="text" size="20" id="txt_managerseen" name="txt_managerseen" onkeypress="vbs:Detect_Search_Field('txt_managerseen')">
</td>
</tr>
<tr id=tr_whencreated>
<td>
Date Created:
</td>
<td>
<input type="checkbox" id="chk_whencreated" name="chk_whencreated" checked=True><input type="text" size="40" id="txt_whencreated" name="txt_whencreated" onkeypress="vbs:Detect_Search_Field('txt_whencreated')"><input type=button value="Pick" onclick="DoCal('txt_whencreated')">
</td>
</tr>
<tr id=tr_oupathuser>
<td>
OU Path:
</td>
<td>
<input type="checkbox" id="chk_oupathuser" name="chk_oupathuser" checked=True><input type="text" size="50" id="txt_oupathuser" name="txt_oupathuser" onkeypress="vbs:Detect_Search_Field('txt_oupathuser')">
</td>
</tr>
<tr id=tr_lastlogintimestamp>
<td>
Last Login:
</td>
<td>
<input type="checkbox" id="chk_lastlogintimestamp" name="chk_lastlogintimestamp" checked=True><input type="text" size="50" id="txt_lastlogintimestamp" name="txt_lastlogintimestamp" onkeypress="vbs:Detect_Search_Field('txt_lastlogintimestamp')">
</td>
</tr>
<tr>
<td colspan="2" align="center">
<br>Showing record 
<span id="span_currentrecord">
0
</span>
of
<span id="span_totalrecords">
0
</span>
<br><br>
<input type="button" value='||< First' name='btnFirstEvent' onClick='vbs:First_Event'>
<input type="button" value='<< Previous' name='btnPreviousEvent' onClick='vbs:Previous_Event'>
<input type="button" value='Next >>' name='btnNextEvent' onClick='vbs:Next_Event'>
<input type="button" value='Last >||' name='btnLastEvent' onClick='vbs:Last_Event'><br><br>
<input type="button" value='Email this record' name='btnEmailThisRecord' onClick='vbs:Email_This_Record'>
<input type="button" value='Email all records' name='btnEmailAllRecords' onClick='vbs:Email_All_Records'>
<input type="button" value='Email as attachment' name='btnEmailAsAttachment' onClick='vbs:Email_As_Attachment'><br><br>
<input type="button" value='Clear Form' name='btnClearForm' onClick='vbs:Clear_Form("resetGroupLists")'>
<input type="submit" value="Submit" name="btn_submit" onClick="vbs:Submit_Form('Main')">
<input id="runbutton" class="button" type="button" value="Save to" name="run_button" onClick="Runscript">
<input id="runbutton" class="button" type="button" value="Change PWD" name="bt1go">
<input id="runbutton" class="button" type="button" value="Enable/Disable User" name="bt2go">
</td>
</tr>
</table>
</td>
<td align="left" valign="top" width="31%">
<fieldset>
<LEGEND>Computer Information</LEGEND>
<table>
<tr id=tr_notes>
<td valign="top">
Machine Name:
</td>
<td>
<input type="checkbox" id="chk_notes" name="chk_notes" checked=True><input type="text" size="40" id="txt_notes" name="txt_notes" onkeypress="vbs:Detect_Search_Field('txt_notes')">
<br>IP: <span id="span_computerip"> </span><br>
Status: <span id="span_computeronline"> </span>
</td>
</tr>
<tr id=tr_computerserialno>
<td>
Serial No:
</td>
<td>
<input type="checkbox" id="chk_computerserialno" name="chk_computerserialno" checked=True><input type="text" size="40" id="txt_computerserialno" name="txt_computerserialno" onkeypress="vbs:Detect_Search_Field('txt_computerserialno')">
</td>
</tr>
<tr id=tr_replacedmachine>
<td>
Replaced Machine:
</td>
<td>
<input type="checkbox" id="chk_replacedmachine" name="chk_replacedmachine" checked=True><input type="text" size="40" id="txt_replacedmachine" name="txt_replacedmachine">
</td>
</tr>
<tr id=tr_replacedcomputerserialno>
<td>
Replaced Serial No:
</td>
<td>
<input type="checkbox" id="chk_replacedcomputerserialno" name="chk_replacedcomputerserialno" checked=True><input type="text" size="40" id="txt_replacedcomputerserialno" name="txt_replacedcomputerserialno">
</td>
</tr>
<tr id=tr_oupathcomputer>
<td>
OU Path:
</td>
<td>
<input type="checkbox" id="chk_oupathcomputer" name="chk_oupathcomputer" checked=True><input type="text" size="40" id="txt_oupathcomputer" name="txt_oupathcomputer" onkeypress="vbs:Detect_Search_Field('txt_oupathcomputer')">
</td>
</tr>
<tr id=tr_computeros>
<td>
Computer OS:
</td>
<td>
<input type="checkbox" id="chk_computeros" name="chk_computeros" checked=True><input type="text" size="19" id="txt_computeros" name="txt_computeros" onkeypress="vbs:Detect_Search_Field('txt_computeros')">
<input type="text" size="18" id="txt_computerservicepack" name="txt_computerservicepack" onkeypress="vbs:Detect_Search_Field('txt_computerservicepack')">
</td>
</tr>
<tr id=tr_computerdescription>
<td>
Description:
</td>
<td>
<input type="checkbox" id="chk_computerdescription" name="chk_computerdescription" checked=True><input type="text" size="40" id="txt_computerdescription" name="txt_computerdescription" onkeypress="vbs:Detect_Search_Field('txt_computerdescription')">
</td>
</tr>
<tr id=tr_computercreated>
<td>
Created:
</td>
<td>
<input type="checkbox" id="chk_computercreated" name="chk_computercreated" checked=True><input type="text" size="40" id="txt_computercreated" name="txt_computercreated" onkeypress="vbs:Detect_Search_Field('txt_computercreated')"><input type=button value="Pick" onclick="DoCal('txt_computercreated')">
</td>
</tr>
</table>
</fieldset>
</td>
<td align="left" valign="top" width="31%">
<fieldset id=tr_groupmembership>
<LEGEND><input type="checkbox" id="chk_groupmembership" name="chk_groupmembership" checked=True>Group Membership <span id="span_groupmembership"></span></LEGEND>
<select size="8" id="lst_groupnames" name="lst_groupnames" onDblClick="vbs:Submit_Form('Group')">
</select>
</fieldset>
<br><br>
<fieldset id=tr_dgmembership>
<LEGEND><input type="checkbox" id="chk_dgmembership" name="chk_dgmembership" checked=True>Distribution Group Membership <span id="span_dgmembership"></span></LEGEND>
<select size="8" id="lst_dgnames" name="lst_dgnames" onDblClick="vbs:Submit_Form('DistributionGroup')">
</select>
</fieldset>
<br><br>
<fieldset id=tr_managerlist>
<LEGEND><input type="checkbox" id="chk_managerlist" name="chk_managerlist" checked=True>Manager <span id="span_managerlist"></span></LEGEND>
<select size="8" id="lst_managerlist" name="lst_managerlist" onDblClick="vbs:Submit_Form('ManagerList')">
</select>
</fieldset>
<br><br>
<fieldset id=tr_subordinates>
<LEGEND><input type="checkbox" id="chk_subordinates" name="chk_subordinates" checked=True>Subordinates <span id="span_subordinates"></span></LEGEND>
<select size="8" id="lst_subordinates" name="lst_subordinates" onDblClick="vbs:Submit_Form('Subordinate')">
</select>
</fieldset>
<br><br>
</td>
</tr>
</table>
</body>
ASKER
I get the attached error. When its opened.When debug goes here
adoRecordset.Open strQuery, adoConnection, , , 1
ScreenShot089.jpg
adoRecordset.Open strQuery, adoConnection, , , 1
ScreenShot089.jpg
ASKER
Previously when i query a group and it has 10 users it could take time and after it retrieves the data when selected next it gets the data fast. But now for each next i click it take some time...
No computers are got into the box... ( I have computers in different OU's in the local AD. Want the script to query just the local Domain computers...
I Get 2 Domain Users groups displayed...
Many of the GSG dont get the users. It shows as there are users in there but when double click it says not found...
No computers are got into the box... ( I have computers in different OU's in the local AD. Want the script to query just the local Domain computers...
I Get 2 Domain Users groups displayed...
Many of the GSG dont get the users. It shows as there are users in there but when double click it says not found...
ASKER
Previously when i query a group and it has 10 users it could take time and after it retrieves the data when selected next it gets the data fast. But now for each next i click it take some time...
No computers are got into the box... ( I have computers in different OU's in the local AD. Want the script to query just the local Domain computers...
I Get 2 Domain Users groups displayed...
Many of the GSG dont get the users. It shows as there are users in there but when double click it says not found...
No computers are got into the box... ( I have computers in different OU's in the local AD. Want the script to query just the local Domain computers...
I Get 2 Domain Users groups displayed...
Many of the GSG dont get the users. It shows as there are users in there but when double click it says not found...
ASKER
For all the queries i mention the domain names in the script. Will mentioning he Domian Controller Name be of any use? As we have 10 + DC's...
Just see if that might increase the speed....
Just see if that might increase the speed....
There are two Domain User groups because each domain has one of these groups (by default).
Selecting the domain controller will not improve the speed in theory - the script tries to contact the nearest DC within the site. You will notice similar behaviour when opening AD for Users and Computers. Sometimes one DC is listed at the top left, other times it will connect to another server.
The computer box didn't get filled in because of an error as pointed out with the screen shot. I think the problem is the number of machines you have is greater than 1000. I will adjust the code to hopfully get around that.
Selecting the domain controller will not improve the speed in theory - the script tries to contact the nearest DC within the site. You will notice similar behaviour when opening AD for Users and Computers. Sometimes one DC is listed at the top left, other times it will connect to another server.
The computer box didn't get filled in because of an error as pointed out with the screen shot. I think the problem is the number of machines you have is greater than 1000. I will adjust the code to hopfully get around that.
ASKER
Ok Thx Yes we have 3000+ Systems
ASKER
Ok Thx Yes we have 3000+ Systems
I have changed the GUI a little to use a different kind of list box. I need to display more details so I can help trouble shoot better. Now if you are getting two Domain Users groups, you can look to see that each group belongs to a different domain by looking at the Distinguished Name column.
I am using different code to pull the computer names so I am hopeful that the app will display all the computer names in your domain.
I am using different code to pull the computer names so I am hopeful that the app will display all the computer names in your domain.
<head>
<title>User Information</title>
<HTA:APPLICATION
APPLICATIONNAME="User Information"
BORDER="thin"
SCROLL="yes"
SINGLEINSTANCE="yes"
WINDOWSTATE="MAXIMIZE"
ID="oHTA"
>
<APPLICATION:HTA>
</head>
<script language="VBScript">
Const adVarChar = 200
Const VarCharMaxCharacters = 255
Const adFldIsNullable = 32
'http://www.experts-exchange.com/Programming/Languages/Q_23807915.html
Dim strEmailBCC
Dim strEmailServer
Dim arrSubjectText
Dim arrDomainNames
strEmailBCC = "" 'Enter the BCC field as "Your Name <youremail@yourdomain.com>"
strEmailServer = "MAILSERVER" 'Exchange server name
arrSubjectText = array("This is subject text #1","This is subject text #2","This is subject text #3","This is subject text #4","This is subject text #5","This is subject text #6","This is subject text #7","This is subject text #8")
arrToSpecial = array("","","","","","","","") 'Fill in the names (to email) so as to match with the subject lines above. Seperate names with a ; eg. "john Doe;Jane Doe"
arrCCSpecial = array("","","","","","","","") 'Fill in the names (to email) so as to match with the subject lines above. Seperate names with a ; eg. "john Doe;Jane Doe"
arrBodySpecial = array("Enter text here","Enter text here","Enter text here","Enter text here","Enter text here","Enter text here","Enter text here","Enter text here") 'Fill in the body text which will match the order the subject lines above.
arrCheckBoxSpecial = array("Default","Default","Default","Default","Default","Default","Default","Default") 'Use the checkbox profile name to have the script match up the subject line to the checkbox profile you have stored.
strEmailFrom = "" 'Leave Blank if the HTA should determine email address automatically
'Uncomment the next line to input your own domain names
'arrDomainNames = array("DOMAIN","DC=subdomain1,DC=domain,DC=com")
boolAllowPing = False 'Set to true to allow the interface to ping computers.
boolLookupLastLogin = False 'Set to true to allow the interface to query last logons
boolTableReports = False 'Set to true to allow the interface to use table format reports
Dim arrRows
Dim strEmailFrom
Dim strEmailTo
Dim strEmailCC
Dim DataList
Dim globalstrSearchField
Dim globalstrSearchBtnPush
Dim FileName
Dim fModif
Dim LastChildMenu
Dim LastMenu
Dim globalstrQueryBuilder
if NOT IsArray(arrDomainNames) then
GetDomainNames
End If
If strEmailFrom = "" Then
strEmailFrom = mid(GetEmailAddresses(GetUsersEmailAddress),1,len(GetEmailAddresses(GetUsersEmailAddress))-1)
strEmailFrom = GetUsersEmailAddress & " <" & strEmailFrom & ">" 'Getting email address from logged on user
End if
strEmailTo = GetUsersEmailAddress 'Get user name of logged on user so there is a default value when launched
strEmailCC = ""
DisplayTitle
Set LastChildMenu = Nothing
Set LastMenu = Nothing
Set oShell = CreateObject("WScript.Shell")
fTemp = oShell.ExpandEnvironmentStrings("%TEMP%")
fAppData = oShell.ExpandEnvironmentStrings("%APPDATA%")
Set MailboxList = CreateObject("ADOR.Recordset")
MailboxList.Fields.Append "legacyExchangeDN", adVarChar, VarCharMaxCharacters
MailboxList.Fields.Append "mailboxsize", adVarChar, VarCharMaxCharacters
MailboxList.Open
Set GroupMembershipDB = CreateObject("ADOR.Recordset")
GroupMembershipDB.Fields.Append "SAMAccountName", adVarChar, VarCharMaxCharacters, adFldIsNullable
GroupMembershipDB.Fields.Append "PrimaryGroupToken", adVarChar, VarCharMaxCharacters, adFldIsNullable
GroupMembershipDB.Fields.Append "DistinguishedName", adVarChar, VarCharMaxCharacters, adFldIsNullable
GroupMembershipDB.Fields.Append "SAMAccountType", adVarChar, VarCharMaxCharacters, adFldIsNullable
GroupMembershipDB.Fields.Append "MemberDistinguishedName", adVarChar, VarCharMaxCharacters, adFldIsNullable
GroupMembershipDB.Open
Set DomainComputersDB = CreateObject("ADOR.Recordset")
DomainComputersDB.Fields.Append "CN", adVarChar, VarCharMaxCharacters, adFldIsNullable
DomainComputersDB.Fields.Append "DistinguishedName", adVarChar, VarCharMaxCharacters, adFldIsNullable
DomainComputersDB.Open
set dicGroupNumbers = CreateObject("Scripting.Dictionary")
set dicManagerList = CreateObject("Scripting.Dictionary")
Sub GetDomainNames
set objRootDSE = GetObject("LDAP://RootDSE")
strBase = "<LDAP://cn=Partitions," & objRootDSE.Get("ConfigurationNamingContext") & ">;"
strFilter = "(&(objectcategory=crossRef)(systemFlags=3));"
strAttrs = "name,trustParent,nCName,dnsRoot,distinguishedName;"
strScope = "onelevel"
set objConn = CreateObject("ADODB.Connection")
objConn.Provider = "ADsDSOObject"
objConn.Open "Active Directory Provider"
set objRS = objConn.Execute(strBase & strFilter & strAttrs & strScope)
objRS.MoveFirst
set arrDomainNames = CreateObject("Scripting.Dictionary")
set dicDomainHierarchy = CreateObject("Scripting.Dictionary")
set dicDomainRoot = CreateObject("Scripting.Dictionary")
while not objRS.EOF
dicDomainRoot.Add objRS.Fields("name").Value, objRS.Fields("nCName").Value
if objRS.Fields("trustParent").Value <> "" then
arrDomainNames.Add objRS.Fields("name").Value, 0
set objDomainParent = GetObject("LDAP://" & objRS.Fields("trustParent").Value)
dicDomainHierarchy.Add objRS.Fields("name").Value,objDomainParent.Get("name")
else
arrDomainNames.Add objRS.Fields("name").Value, 1
end if
objRS.MoveNext
wend
for each strDomain in arrDomainNames
'msgbox strDomain
next
End Sub
Sub Window_OnLoad
'Uncomment the following lines to hide them from the GUI
'tr_seatno.classname="HideFromGUI"
'tr_replacementseatno.classname="HideFromGUI"
'tr_building.classname="HideFromGUI"
'tr_extensionno.classname="HideFromGUI"
'tr_empid.classname="HideFromGUI"
'tr_department.classname="HideFromGUI"
'tr_designation.classname="HideFromGUI"
'tr_name.classname="HideFromGUI"
'tr_loginname.classname="HideFromGUI"
'tr_email.classname="HideFromGUI"
'tr_mailboxsize.classname="HideFromGUI"
'tr_mailboxstore.classname="HideFromGUI"
'tr_mobileno.classname="HideFromGUI"
'tr_company.classname="HideFromGUI"
'tr_address.classname="HideFromGUI"
'tr_city.classname="HideFromGUI"
'tr_state.classname="HideFromGUI"
'tr_zipcode.classname="HideFromGUI"
'tr_country.classname="HideFromGUI"
'tr_homephone.classname="HideFromGUI"
'tr_manager.classname="HideFromGUI"
'tr_whencreated.classname="HideFromGUI"
'tr_oupathuser.classname="HideFromGUI"
'tr_lastlogintimestamp.classname="HideFromGui"
'tr_notes.classname="HideFromGUI"
'tr_computerserialno.classname="HideFromGUI"
'tr_replacedmachine.classname="HideFromGUI"
'tr_replacedcomputerserialno.classname="HideFromGUI"
'tr_oupathcomputer.classname="HideFromGUI"
'tr_computeros.classname="HideFromGUI"
'tr_computerdescription.classname="HideFromGUI"
'tr_computercreated.classname="HideFromGUI"
'tr_groupmembership.classname="HideFromGUI"
'tr_dgmembership.classname="HideFromGUI"
'tr_managerlist.classname="HideFromGUI"
'tr_subordinates.classname="HideFromGUI"
'tr_domaincomputers.classname="HideFromGUI"
TestToSeeWhatLinesAreHidden
Set objlst_groupnames = document.getElementById( "lst_groupnames" )
If objlst_groupnames Is Nothing Then
MsgBox "A problem was encountered while creating the listview." & vbCRLF & "Please see your administrator."
Else
With objlst_groupnames
.View = 3
.Width = 360
.Height = 150
.SortKey = 0
.Arrange = 0
.LabelEdit = 1
.SortOrder = 0
.Sorted = 1
.MultiSelect = 0
.LabelWrap = -1
.HideSelection = -1
.HideColumnHeaders = 0
.OLEDragMode = 0
.OLEDropMode = 0
.Checkboxes = 0
.FlatScrollBar = 0
.FullRowSelect = 1
.GridLines = 0
.HotTracking = 0
.HoverSelection = 0
.PictureAlignment = 0
.TextBackground = 0
.ForeColor = -2147483640
.BackColor = -2147483643
.BorderStyle = 1
.Appearance = 1
.MousePointer = 0
.Enabled = 1
.ColumnHeaders.Clear
.ColumnHeaders.Add , , "Group Name", 150
.ColumnHeaders.Add , , "Users", 50
.ColumnHeaders.Add , , "Type", 50
.ColumnHeaders.Add , , "Distinguished Name", 100
.ColumnHeaders.Add , , "Primary ID", 50
.ListItems.Clear
End With
End If
Set objlst_dgnames = document.getElementById( "lst_dgnames" )
If objlst_dgnames Is Nothing Then
MsgBox "A problem was encountered while creating the listview." & vbCRLF & "Please see your administrator."
Else
With objlst_dgnames
.View = 3
.Width = 360
.Height = 150
.SortKey = 0
.Arrange = 0
.LabelEdit = 1
.SortOrder = 0
.Sorted = 1
.MultiSelect = 0
.LabelWrap = -1
.HideSelection = -1
.HideColumnHeaders = 0
.OLEDragMode = 0
.OLEDropMode = 0
.Checkboxes = 0
.FlatScrollBar = 0
.FullRowSelect = 1
.GridLines = 0
.HotTracking = 0
.HoverSelection = 0
.PictureAlignment = 0
.TextBackground = 0
.ForeColor = -2147483640
.BackColor = -2147483643
.BorderStyle = 1
.Appearance = 1
.MousePointer = 0
.Enabled = 1
.ColumnHeaders.Clear
.ColumnHeaders.Add , , "Group Name", 150
.ColumnHeaders.Add , , "Users", 50
.ColumnHeaders.Add , , "Type", 50
.ColumnHeaders.Add , , "Distinguished Name", 100
.ColumnHeaders.Add , , "Primary ID", 50
.ListItems.Clear
End With
End If
Set objlst_domaincomputers = document.getElementById( "lst_domaincomputers" )
If objlst_dgnames Is Nothing Then
MsgBox "A problem was encountered while creating the listview." & vbCRLF & "Please see your administrator."
Else
With objlst_domaincomputers
.View = 3
.Width = 360
.Height = 150
.SortKey = 0
.Arrange = 0
.LabelEdit = 1
.SortOrder = 0
.Sorted = 1
.MultiSelect = 0
.LabelWrap = -1
.HideSelection = -1
.HideColumnHeaders = 0
.OLEDragMode = 0
.OLEDropMode = 0
.Checkboxes = 0
.FlatScrollBar = 0
.FullRowSelect = 1
.GridLines = 0
.HotTracking = 0
.HoverSelection = 0
.PictureAlignment = 0
.TextBackground = 0
.ForeColor = -2147483640
.BackColor = -2147483643
.BorderStyle = 1
.Appearance = 1
.MousePointer = 0
.Enabled = 1
.ColumnHeaders.Clear
.ColumnHeaders.Add , , "Computer", 150
.ColumnHeaders.Add , , "Distinguished Name", 185
.ListItems.Clear
End With
End If
btnFirstEvent.Disabled = True
btnPreviousEvent.Disabled = True
btnNextEvent.Disabled = True
btnLastEvent.Disabled = True
btnEmailThisRecord.Disabled = True
btnEMailAllRecords.Disabled = True
btnEmailAsAttachment.Disabled = True
txt_EmailTo.Value = strEmailTo
btnFirstEvent.Style.Visibility = "Hidden"
btnPreviousEvent.Style.Visibility = "Hidden"
btnNextEvent.Style.Visibility = "Hidden"
btnLastEvent.Style.Visibility = "Hidden"
btnEmailThisRecord.Style.Visibility = "Hidden"
btnEMailAllRecords.Style.Visibility = "Hidden"
btnEmailAsAttachment.Style.Visibility = "Hidden"
For Each objOption in lst_subordinates.Options
objOption.RemoveNode
Next
FillGroupList
FillManagerList
FillSubjectList
FillDomainComputers
GetChkProfiles
GetMailboxDetails
chk_TableReports.Checked = boolTableReports
chk_LookupLastLogin.Checked = boolLookupLastLogin
chk_AllowPings.Checked = boolAllowPing
txt_EmailSubject_OnChange
End Sub
Sub TestToSeeWhatLinesAreHidden
'Test to see what lines are hidden and uncheck the boxes
if tr_seatno.classname="HideFromGUI" then chk_seatno.Checked = False
if tr_replacementseatno.classname="HideFromGUI" then chk_replacementseatno.Checked = False
if tr_building.classname="HideFromGUI" then chk_building.Checked = False
if tr_extensionno.classname="HideFromGUI" then chk_extensionno.Checked = False
if tr_empid.classname="HideFromGUI" then chk_empid.Checked = False
if tr_department.classname="HideFromGUI" then chk_department.Checked = False
if tr_designation.classname="HideFromGUI" then chk_designation.Checked = False
if tr_name.classname="HideFromGUI" then chk_name.Checked = False
if tr_loginname.classname="HideFromGUI" then chk_loginname.Checked = False
if tr_email.classname="HideFromGUI" then chk_email.Checked = False
if tr_mailboxsize.classname="HideFromGUI" then chk_mailboxsize.Checked = False
if tr_mailboxstore.classname="HideFromGUI" then chk_mailboxstore.Checked = False
if tr_mobileno.classname="HideFromGUI" then chk_mobileno.Checked = False
if tr_company.classname="HideFromGUI" then chk_company.Checked = False
if tr_address.classname="HideFromGUI" then chk_address.Checked = False
if tr_city.classname="HideFromGUI" then chk_city.Checked = False
if tr_state.classname="HideFromGUI" then chk_state.Checked = False
if tr_zipcode.classname="HideFromGUI" then chk_zipcode.Checked = False
if tr_country.classname="HideFromGUI" then chk_country.Checked = False
if tr_homephone.classname="HideFromGUI" then chk_homephone.Checked = False
if tr_manager.classname="HideFromGUI" then chk_manager.Checked = False
if tr_whencreated.classname="HideFromGUI" then chk_whencreated.Checked = False
if tr_oupathuser.classname="HideFromGUI" then chk_oupathuser.Checked = False
if tr_lastlogintimestamp.classname="HideFromGUI" then chk_lastlogintimestamp.Checked = False
if tr_notes.classname="HideFromGUI" then chk_notes.Checked = False
if tr_computerserialno.classname="HideFromGUI" then chk_computerserialno.Checked = False
if tr_replacedmachine.classname="HideFromGUI" then chk_replacedmachine.Checked = False
if tr_replacedcomputerserialno.classname="HideFromGUI" then chk_replacedcomputerserialno.Checked = False
if tr_oupathcomputer.classname="HideFromGUI" then chk_oupathcomputer.Checked = False
if tr_computeros.classname="HideFromGUI" then chk_computeros.Checked = False
if tr_computerdescription.classname="HideFromGUI" then chk_computerdescription.Checked = False
if tr_computercreated.classname="HideFromGUI" then chk_computercreated.Checked = False
if tr_groupmembership.classname="HideFromGUI" then chk_groupmembership.Checked = False
if tr_dgmembership.classname="HideFromGUI" then chk_dgmembership.Checked = False
if tr_managerlist.classname="HideFromGUI" then chk_managerlist.Checked = False
if tr_subordinates.classname="HideFromGUI" then chk_subordinates.Checked = False
End sub
Sub Clear_Form(resetGroupLists)
txt_seatno.Value = ""
txt_seatno.style.backgroundColor="#FFFFFF"
txt_seatno.Disabled = False
txt_replacementseatno.Value = ""
txt_replacementseatno.style.backgroundColor="#FFFFFF"
txt_replacementseatno.Disabled = False
txt_building.Value = ""
txt_building.style.backgroundColor="#FFFFFF"
txt_building.Disabled = False
txt_extensionno.Value = ""
txt_extensionno.style.backgroundColor="#FFFFFF"
txt_extensionno.Disabled = False
txt_empid.Value = ""
txt_empid.style.backgroundColor="#FFFFFF"
txt_empid.Disabled = False
txt_department.Value = ""
txt_department.style.backgroundColor="#FFFFFF"
txt_department.Disabled = False
txt_designation.Value = ""
txt_designation.style.backgroundColor="#FFFFFF"
txt_designation.Disabled = False
txt_name.Value = ""
txt_name.style.backgroundColor="#FFFFFF"
txt_name.Disabled = False
txt_loginname.Value = ""
txt_loginname.style.backgroundColor="#FFFFFF"
txt_loginname.Disabled = False
txt_email.Value = ""
txt_email.style.backgroundColor="#FFFFFF"
txt_email.Disabled = False
txt_mailboxsize.Value = ""
txt_mailboxsize.style.backgroundColor="#FFFFFF"
txt_mailboxsize.Disabled = False
txt_mailboxstore.Value = ""
txt_mailboxstore.style.backgroundColor="#FFFFFF"
txt_mailboxstore.Disabled = False
txt_notes.Value = ""
txt_notes.style.backgroundColor="#FFFFFF"
txt_notes.Disabled = False
txt_computerserialno.Value = ""
txt_computerserialno.style.backgroundColor="#FFFFFF"
txt_computerserialno.Disabled = False
txt_replacedmachine.Value = ""
txt_replacedmachine.Disabled = False
txt_replacedmachine.style.backgroundcolor="#FFFFFF"
txt_replacedcomputerserialno.value = ""
txt_replacedcomputerserialno.Disabled = False
txt_replacedcomputerserialno.Style.backgroundcolor="#FFFFFF"
txt_oupathcomputer.Value = ""
txt_oupathcomputer.style.backgroundColor="#FFFFFF"
txt_oupathcomputer.Disabled = False
txt_computeros.Value = ""
txt_computeros.Style.backgroundColor="#FFFFFF"
txt_computeros.Disabled = False
txt_computerservicepack.Value = ""
txt_computerservicepack.Style.backgroundColor="#FFFFFF"
txt_computerservicepack.Disabled = False
txt_computercreated.Value = ""
txt_computercreated.Style.backgroundColor="#FFFFFF"
txt_computercreated.Disabled = False
txt_computerdescription.Value = ""
txt_computerdescription.Style.backgroundColor="#FFFFFF"
txt_computerdescription.Disabled = False
txt_mobileno.Value = ""
txt_mobileno.style.backgroundColor="#FFFFFF"
txt_mobileno.Disabled = False
txt_company.Value = ""
txt_company.style.backgroundColor="#FFFFFF"
txt_company.Disabled = False
txt_address.Value = ""
txt_address.style.backgroundColor="#FFFFFF"
txt_address.Disabled = False
txt_city.Value = ""
txt_city.style.backgroundColor="#FFFFFF"
txt_city.Disabled = False
txt_state.Value = ""
txt_state.style.backgroundColor="#FFFFFF"
txt_state.Disabled = False
txt_zipcode.Value = ""
txt_zipcode.style.backgroundColor="#FFFFFF"
txt_zipcode.Disabled = False
txt_country.Value = ""
txt_country.style.backgroundColor="#FFFFFF"
txt_country.Disabled = False
txt_homephone.Value = ""
txt_homephone.style.backgroundColor="#FFFFFF"
txt_homephone.Disabled = False
txt_manager.Value = ""
txt_manager.style.backgroundColor="#FFFFFF"
txt_manager.Disabled = False
txt_managerseen.Value = ""
txt_managerseen.style.backgroundColor="#FFFFFF"
txt_managerseen.Disabled = False
txt_whencreated.Value = ""
txt_whencreated.style.backgroundColor="#FFFFFF"
txt_whencreated.Disabled = False
txt_oupathuser.Value = ""
txt_oupathuser.style.backgroundColor="#FFFFFF"
txt_oupathuser.Disabled = False
txt_lastlogintimestamp.Value = ""
txt_lastlogintimestamp.style.backgroundcolor="#FFFFFF"
txt_lastlogintimestamp.Disabled = False
txt_FilterSecurityGroup.Value = ""
txt_FilterSecurityGroup.style.backgroundcolor="#FFFFFF"
txt_FilterSecurityGroup.Disabled = False
txt_filterdgmembership.Value = ""
txt_filterdgmembership.style.backgroundcolor="#FFFFFF"
txt_filterdgmembership.Disabled = False
txt_filtermanagerlist.Value = ""
txt_filtermanagerlist.style.backgroundcolor="#FFFFFF"
txt_filtermanagerlist.Disabled = False
txt_filterdomaincomputers.Value = ""
txt_filterdomaincomputers.style.backgroundcolor="#FFFFFF"
txt_filterdomaincomputers.Disabled = False
btnFirstEvent.Style.Visibility = "Hidden"
btnPreviousEvent.Style.Visibility = "Hidden"
btnNextEvent.Style.Visibility = "Hidden"
btnLastEvent.Style.Visibility = "Hidden"
btnEmailThisRecord.Style.Visibility = "Hidden"
btnEMailAllRecords.Style.Visibility = "Hidden"
btnEmailAsAttachment.Style.Visibility = "Hidden"
span_currentrecord.InnerHTML = "0"
span_totalrecords.InnerHTML = "0"
span_computerip.InnerHTML = ""
span_computerOnline.InnerHTML = ""
span_enabled.InnerHTML = ""
span_userorcontact.InnerHTML = ""
if lcase(resetGroupLists) = lcase("resetGroupLists") then
GroupMembershipDB.Filter = ""
GroupMembershipDB.MoveFirst
Do While Not GroupMembershipDB.EOF
GroupMembershipDB.Delete
GroupMembershipDB.MoveNext
Loop
FillGroupList
populatedomaincomputers
end if
For Each objOption in lst_subordinates.Options
objOption.RemoveNode
Next
PopulateManagerList
End Sub
Sub Submit_Form(btnPush)
arrFields = Array(_
"txt_seatno", _
"txt_building", _
"txt_extensionno", _
"txt_empid", _
"txt_department", _
"txt_designation", _
"txt_name", _
"txt_loginname", _
"txt_email", _
"txt_notes", _
"txt_mobileno", _
"txt_company", _
"txt_address", _
"txt_city", _
"txt_state", _
"txt_zipcode", _
"txt_country", _
"txt_homephone", _
"txt_managerseen", _
"txt_oupathuser", _
"txt_computerserialno", _
"txt_whencreated", _
"txt_oupathcomputer", _
"txt_computeros", _
"txt_computercreated", _
"txt_filtersecuritygroup", _
"txt_filterdgmembership", _
"txt_filtermanagerlist", _
"txt_filterdomaincomputers" _
)
boolValid = False
For Each strField In arrFields
If Eval(strField & ".Disabled") = True Then
boolValid = True
End If
If Eval(strField & ".Disabled") = False Then
strCurrentField = strField
End If
Next
If boolValid = False Then strCurrentField = "INVALID"
Select Case strCurrentField
Case "txt_seatno"
If txt_seatno.Value = "" Then
strSearchField = "(info=*)"
Else
strSearchField = "(info=*" & txt_seatno.Value & "*)"
End If
Case "txt_building"
If txt_building.Value = "" Then
strSearchField = "(physicalDeliveryOfficeName=*)"
Else
strSearchField = "(physicalDeliveryOfficeName=*" & txt_building.Value & "*)"
End If
Case "txt_extensionno"
If txt_extensionno.Value = "" Then
strSearchField = "(telephoneNumber=*)"
Else
strSearchField = "(telephoneNumber=*" & txt_extensionno.Value & "*)"
End If
Case "txt_empid"
If txt_empid.Value = "" Then
strSearchField = "(description=*)"
Else
strSearchField = "(description=*" & txt_empid.Value & "*)"
End If
Case "txt_department"
If txt_department.Value = "" Then
strSearchField = "(department=*)"
Else
strSearchField = "(department=*" & txt_department.Value & "*)"
End If
Case "txt_designation"
If txt_designation.Value = "" Then
strSearchField = "(title=*)"
Else
strSearchField = "(title=*" & txt_designation.Value & "*)"
End If
Case "txt_name"
If txt_name.Value = "" Then
strSearchField = "(cn=*)"
Else
strSearchField = "(cn=*" & txt_name.Value & "*)"
End If
Case "txt_loginname"
If txt_loginname.Value = "" Then
strSearchField = "(samAccountName=*)"
Else
strSearchField = "(samAccountName=*" & txt_loginname.Value & "*)"
End If
Case "txt_email"
If txt_email.Value = "" Then
strSearchField = "(mail=*)"
Else
strSearchField = "(mail=*" & txt_email.Value & "*)"
End If
Case "txt_notes"
If txt_notes.Value = "" Then
strSearchField = "(info=*)"
Else
strSearchField = "(info=*" & txt_notes.Value & "*)"
End If
Case "txt_mobileno"
If txt_mobileno.Value = "" Then
strSearchField = "(mobile=*)"
Else
strSearchField = "(mobile=*" & txt_mobileno.Value & "*)"
End If
Case "txt_company"
If txt_company.Value = "" Then
strSearchField = "(company=*)"
Else
strSearchField = "(company=*" & txt_company.Value & "*)"
End If
Case "txt_address"
If txt_address.Value = "" Then
strSearchField = "(streetAddress=*)"
Else
strSearchField = "(streetAddress=*" & txt_address.Value & "*)"
End If
Case "txt_city"
If txt_city.Value = "" Then
strSearchField = "(l=*)"
Else
strSearchField = "(l=*" & txt_city.Value & "*)"
End If
Case "txt_state"
If txt_state.Value = "" Then
strSearchField = "(st=*)"
Else
strSearchField = "(st=*" & txt_state.Value & "*)"
End If
Case "txt_zipcode"
If txt_zipcode.Value = "" Then
strSearchField = "(postalCode=*)"
Else
strSearchField = "(postalCode=*" & txt_zipcode.Value & "*)"
End If
Case "txt_country"
If txt_country.Value = "" Then
strSearchField = "(c=*)"
Else
strSearchField = "(c=*" & txt_country.Value & "*)"
End If
Case "txt_homephone"
If txt_homephone.Value = "" Then
strSearchField = "(homePhone=*)"
Else
strSearchField = "(homePhone=*" & txt_homephone.Value & "*)"
End If
Case "txt_managerseen"
If txt_managerseen.Value = "" Then
strSearchField = "(manager=*)"
Else
strSearchField = GetManagerDN(txt_managerseen.Value)
End If
Case "txt_oupathuser"
If txt_oupathuser.Value <> "" Then
strSearchField = GetOUMembers(txt_oupathuser.Value)
End If
Case "txt_whencreated"
If txt_whencreated.Value = "" Then
strSearchField = "(whenCreated=*)"
Else
if NOT IsDate(txt_whencreated.Value) then
msgbox "Invalid date - enter as dd/mm/yyyy"
strSearchField = "INVALID"
else
strWhenCreated = Year(txt_whencreated.Value) & Right("0" & Month(txt_whencreated.Value), 2) & Right("0" & Day(txt_whencreated.Value), 2)
strSearchField = "(whenCreated>=" & strWhenCreated & "000000.0Z)(whenCreated<=" & strWhenCreated & "235959.0Z)"
end if
End If
Case "txt_computerserialno"
If txt_notes.Value = "" Then
strSearchField = "(info=*)"
Else
strSearchField = "(info=*" & txt_computerserialno.Value & "*)"
End If
Case "txt_oupathcomputer"
If txt_oupathcomputer.Value = "" then
strSearchField = "INVALID"
else
strSearchField = GetComputersBasedOnOU(txt_oupathcomputer.Value)
end if
Case "txt_computeros"
If txt_computeros.Value = "" Then
strSearchField = "INVALID"
else
strSearchField = GetComputersForOSQuery(txt_computeros.Value)
End If
Case "txt_computercreated"
If txt_computercreated.Value = "" Then
strSearchField = "INVALID"
else
if NOT IsDate(txt_computercreated.Value) then
msgbox "Invalid date - enter as dd/mm/yyyy"
strSearchField = "INVALID"
else
strSearchField = GetComputersForDateCreatedQuery(txt_computercreated.Value)
End If
End If
Case "txt_filtersecuritygroup"
if lst_groupnames.ListItems.Count = 1 then
lst_groupnames.ListItems(1).Selected = True
btnPush = "Group"
else
strSearchField = "INVALID"
end if
Case "txt_filterdgmembership"
if lst_dgnames.ListItems.Count = 1 then
lst_dgnames.ListItems(1).Selected = True
btnPush = "DistributionGroup"
else
strSearchField = "INVALID"
end if
Case "txt_filtermanagerlist"
if lst_managerlist.Options.Length = 1 then
lst_managerlist.Options(0).Selected = True
btnPush = "ManagerList"
else
strSearchField = "INVALID"
end if
Case "txt_filterdomaincomputers"
if lst_domaincomputers.ListItems.Count = 1 then
lst_domaincomputers.ListItems(1).Selected = True
strSearchField = "(info=*" & lst_domaincomputers.SelectedItem.Text & "*)"
else
strSearchField = "INVALID"
end if
Case Else
strSearchField = "INVALID"
End Select
if btnPush = "Disabled" then
strSearchField = "(userAccountControl:1.2.840.113556.1.4.803:=2)"
end if
if btnPush = "Group" then
sMemberOf = lst_groupnames.SelectedItem.ListSubItems(3).Text
sprimaryGroupID = lst_groupnames.SelectedItem.ListSubItems(4).Text
strSearchField = "(|(memberOf=" & sMemberOf & ")(primaryGroupID=" & sprimaryGroupID & "))"
end if
if btnPush = "DistributionGroup" then
sMemberOf = lst_dgnames.SelectedItem.ListSubItems(3).Text
sprimaryGroupID = lst_dgnames.SelectedItem.ListSubItems(4).Text
strSearchField = "(|(memberOf=" & sMemberOf & ")(primaryGroupID=" & sprimaryGroupID & "))"
end if
if btnPush = "ManagerList" then
For i = 0 to (lst_ManagerList.Options.Length - 1)
If (lst_ManagerList.Options(i).Selected) Then
strSearchField = "(distinguishedname=" & lst_ManagerList.Options(i).Value & ")"
End If
Next
end if
if btnPush = "Subordinate" then
For i = 0 to (lst_subordinates.Options.Length - 1)
If (lst_subordinates.Options(i).Selected) Then
arrSubordinateNames = split(lst_subordinates.Options(i).Value,";")
strSearchField = "(samAccountName=*" & arrSubordinateNames(0) & "*)"
End If
Next
end if
if btnPush = "DisabledToday" then
strWhenChanged = Year(txt_whencreated.Value) & Right("0" & Month(txt_whencreated.Value), 2) & Right("0" & Day(txt_whencreated.Value), 2)
strSearchField = "(userAccountControl:1.2.840.113556.1.4.803:=2)(whenChanged>=" & strWhenChanged & "000000.0Z)(whenChanged<=" & strWhenChanged & "235959.0Z)"
end if
if btnPush = "FileOpen" then
strSearchField = globalStrSearchField
btnPush = globalStrSearchBtnPush
End if
boolLogonSearch = False
dmtDateToCompare = Date()
if InStr(btnPush,"Logon:") > 0 then
strSearchField = "(samAccountName=*)"
boolLogonSearch = True
intNumberOfDays = right(btnPush,Len(btnPush)-InStr(btnPush,":"))
dmtDateToCompare = Date() - intNumberOfDays
if NOT chk_LookupLastLogin.Checked then
chk_LookupLastLogin.Checked = True
boolLookupLastLogin = True
end if
end if
boolMailboxSizeSearch = False
if InStr(btnPush,"MailboxSize:") > 0 then
strSearchField = "(samAccountName=*)"
boolMailboxSizeSearch = True
intMailboxSizeToCompare = right(btnPush,Len(btnPush)-InStr(btnPush,":"))
end if
Clear_Form ""
If strSearchField <> "INVALID" Then
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
boolFoundRecords = False
for each strDomain in arrDomainNames
' Search entire Active Directory domain.
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(&(objectCategory=user)(objectCategory=contact)" & strSearchField & ")"
' Comma delimited list of attribute values to retrieve.
if boolLookupLastLogin then
strAttributes = "physicalDeliveryOfficeName,TelephoneNumber,description,Department,Title,cn,samAccountName,mail,Info,Mobile,company,streetAddress,l,st,postalCode,c,homePhone,manager,whenCreated,distinguishedName,userAccountControl,legacyExchangeDN,homeMDB,primaryGroupID,lastLogon"
else
strAttributes = "physicalDeliveryOfficeName,TelephoneNumber,description,Department,Title,cn,samAccountName,mail,Info,Mobile,company,streetAddress,l,st,postalCode,c,homePhone,manager,whenCreated,distinguishedName,userAccountControl,legacyExchangeDN,homeMDB,primaryGroupID"
end if
' Construct the LDAP syntax query.
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 100
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False
adoCommand.Properties("Sort On") = "cn"
' Run the query.
Set adoRecordset = adoCommand.Execute
' Enumerate the resulting recordset.
strDetails = ""
If Not adoRecordset.EOF Then
boolFoundRecords = True
Do Until adoRecordset.EOF
mailboxlist.filter = "legacyExchangeDN = '" & adoRecordset.Fields("legacyExchangeDN").Value & "'"
if NOT mailboxlist.EOF then
intMailboxSize = mailboxlist.fields.Item("mailboxsize")
else
intMailboxSize = "0"
End if
if boolLookupLastLogin then
if NOT IsNull(adoRecordset.Fields("lastLogon").Value) then
Set objLastLogon = adoRecordset.Fields("lastLogon").Value
intLastLogonTime = objLastLogon.HighPart * (2^32) + objLastLogon.LowPart
intLastLogonTime = intLastLogonTime / (60 * 10000000)
intLastLogonTime = intLastLogonTime / 1440
intLastLogonTime = intLastLogonTime + #1/1/1601#
if intLastLogonTime = #1/1/1601# then
intLastLogonTime = ""
end if
else
intLastLogonTime = ""
end if
else
intLastLogonTime = ""
end if
if NOT IsDate(intLastLogonTime) then
dmtDateToCompareTo = dmtDateToCompare
else
dmtDateToCompareTo = intLastLogonTime
end if
if (CDate(dmtDateToCompareTo) >= CDate(dmtDateToCompare)) AND boolLogonSearch then
'Do nothing
else
if (CInt(intMailboxSize) < CInt(intMailboxSizeToCompare)) AND boolMailboxSizeSearch then
'Do nothing
else
If strDetails <> "" Then strDetails = strDetails & "|TR|"
if adoRecordset.Fields("userAccountControl").Value AND 2 then
strEnabled = "Disabled"
else
strEnabled = "Enabled"
End If
strMachineName = ""
strBuilding = ""
strSerialNumber = ""
If IsNull(adoRecordset.Fields("Info").Value) = False Then
arrNotesField = Split(adoRecordset.Fields("Info").Value,vbCRLF)
for each strLine in arrNotesField
if InStr(UCase(strLine),"MACHINE NAME : ") then
strMachineName = trim(mid(strLine,15))
End if
if InStr(UCase(strLine),"LOCATION : ") then
strBuilding = trim(mid(strLine,11))
End if
if InStr(UCase(strLine),"SERIAL NO : ") then
strSerialNumber = trim(mid(strLine,12))
End if
next
strDetails = strDetails & replace(strBuilding,vbCRLF,"")
End If
strDetails = strDetails & "|TD|" & adoRecordset.Fields("physicalDeliveryOfficeName").Value &_
"|TD|" & adoRecordset.Fields("TelephoneNumber").Value
If IsNull(adoRecordset.Fields("Description").Value) = False Then
strDetails = strDetails & "|TD|" & Join(adoRecordset.Fields("description").Value)
Else
strDetails = strDetails & "|TD|"
End If
strDetails = strDetails & "|TD|" & adoRecordset.Fields("Department").Value &_
"|TD|" & adoRecordset.Fields("Title").Value &_
"|TD|" & Replace(adoRecordset.Fields("cn").Value, "CN=", "") &_
"|TD|" & adoRecordset.Fields("samAccountName").Value &_
"|TD|" & adoRecordset.Fields("mail").Value &_
"|TD|" & strMachineName &_
"|TD|" & adoRecordset.Fields("Mobile").Value &_
"|TD|" & adoRecordset.Fields("company").Value &_
"|TD|" & adoRecordset.Fields("streetAddress").Value &_
"|TD|" & adoRecordset.Fields("l").Value &_
"|TD|" & adoRecordset.Fields("st").Value &_
"|TD|" & adoRecordset.Fields("postalCode").Value &_
"|TD|" & adoRecordset.Fields("c").Value &_
"|TD|" & adoRecordset.Fields("homePhone").Value &_
"|TD|" & adoRecordset.Fields("manager").Value &_
"|TD|" & adoRecordset.Fields("whenCreated").Value &_
"|TD|" & adoRecordset.Fields("samAccountName").Value &_
"|TD|" & adoRecordset.Fields("distinguishedName").Value &_
"|TD|" & intLastLogonTime &_
"|TD|" & strSerialNumber &_
"|TD|" & UCASE(strEnabled) &_
"|TD|" & intMailboxSize &_
"|TD|" & GetMailboxStore(adoRecordset.Fields("homeMDB").Value) &_
"|TD|" & adoRecordset.Fields("primaryGroupID").Value
strDetails = replace(strDetails,vbCRLF,"")
end if
end if
adoRecordset.MoveNext
Loop
End If
next
if NOT boolFoundRecords then
MsgBox "No records were found"
span_currentrecord.InnerHTML = 0
span_totalrecords.InnerHTML = 0
else
arrRows = ""
arrRows = Split(strDetails, "|TR|")
If UBound(arrRows) < 0 Then
span_currentrecord.InnerHTML = 0
span_totalrecords.InnerHTML = 0
Else
span_currentrecord.InnerHTML = 1
Get_Event
span_totalrecords.InnerHTML = UBound(arrRows)+1
End If
End if
' Clean up.
adoRecordset.Close
Set adoRecordset = Nothing
adoConnection.Close
If strDetails = "" Then
btnFirstEvent.Disabled = True
btnPreviousEvent.Disabled = True
btnNextEvent.Disabled = True
btnLastEvent.Disabled = True
btnEmailThisRecord.Disabled = True
btnEMailAllRecords.Disabled = True
btnEmailAsAttachment.Disabled = True
btnFirstEvent.Style.Visibility = "Hidden"
btnPreviousEvent.Style.Visibility = "Hidden"
btnNextEvent.Style.Visibility = "Hidden"
btnLastEvent.Style.Visibility = "Hidden"
btnEmailThisRecord.Style.Visibility = "Hidden"
btnEMailAllRecords.Style.Visibility = "Hidden"
btnEmailAsAttachment.Style.Visibility = "Hidden"
ElseIf UBound(arrRows) = 0 Then
btnFirstEvent.Disabled = True
btnPreviousEvent.Disabled = True
btnNextEvent.Disabled = True
btnLastEvent.Disabled = True
btnEmailThisRecord.Disabled = False
btnEMailAllRecords.Disabled = False
btnEmailAsAttachment.Disabled = False
btnFirstEvent.Style.Visibility = "Hidden"
btnPreviousEvent.Style.Visibility = "Hidden"
btnNextEvent.Style.Visibility = "Hidden"
btnLastEvent.Style.Visibility = "Hidden"
btnEmailThisRecord.Style.Visibility = "Visible"
btnEMailAllRecords.Style.Visibility = "Visible"
btnEmailAsAttachment.Style.Visibility = "Visible"
Else
btnFirstEvent.Disabled = False
btnPreviousEvent.Disabled = False
btnNextEvent.Disabled = False
btnLastEvent.Disabled = False
btnEmailThisRecord.Disabled = False
btnEMailAllRecords.Disabled = False
btnEmailAsAttachment.Disabled = False
btnFirstEvent.Style.Visibility = "Visible"
btnPreviousEvent.Style.Visibility = "Visible"
btnNextEvent.Style.Visibility = "Visible"
btnLastEvent.Style.Visibility = "Visible"
btnEmailThisRecord.Style.Visibility = "Visible"
btnEMailAllRecords.Style.Visibility = "Visible"
btnEmailAsAttachment.Style.Visibility = "Visible"
End If
globalStrSearchBtnPush = BtnPush
globalstrSearchField = strSearchField
if chk_qbrecorder.Checked then
AddToQueryBuilder
end if
Else
MsgBox "Please type a search request into one of the fields, then click Submit."
End If
if InStr(Join(arrFields),strCurrentField) then
if strSearchField <> "INVALID" then
execute(strCurrentField & ".focus")
execute(strCurrentField & ".select()")
end if
end if
End Sub
Sub Get_Event
arrData = Split(arrRows(span_currentrecord.InnerHTML - 1), "|TD|")
txt_seatno.Value = arrData(0)
txt_building.Value = arrData(1)
txt_extensionno.Value = arrData(2)
txt_empid.Value = arrData(3)
txt_department.Value = arrData(4)
txt_designation.Value = arrData(5)
txt_name.Value = arrData(6)
txt_loginname.Value = arrData(7)
txt_email.Value = arrData(8)
txt_mailboxsize.Value = arrData(25)
txt_mailboxstore.Value = arrData(26)
txt_notes.Value = arrData(9)
if boolAllowPing then PingComputer arrData(9)
txt_computerserialno.Value = arrData(23)
arrTemp = GetComputerInfo(arrData(9))
if IsArray(arrTemp) then
txt_oupathcomputer.value = GetOUPath(replace(arrTemp(0),"""",""))
txt_computeros.value = replace(arrTemp(1),"""","")
txt_computerservicepack.value = replace(arrTemp(2),"""","")
txt_computerdescription.value = replace(arrTemp(4),"""","")
txt_computercreated.value = replace(arrTemp(3),"""","")
else
txt_oupathcomputer.value = ""
txt_computeros.value = ""
txt_computerservicepack.value = ""
txt_computerdescription.value = ""
txt_computercreated.value = ""
End if
txt_mobileno.Value = arrData(10)
txt_company.Value = arrData(11)
txt_address.Value = arrData(12)
txt_city.Value = arrData(13)
txt_state.Value = arrData(14)
txt_zipcode.Value = arrData(15)
txt_country.Value = arrData(16)
txt_homephone.Value = arrData(17)
txt_manager.Value = arrData(18)
For Each objOption in lst_managerlist.Options
objOption.RemoveNode
Next
span_managerlist.InnerHTML = "(0)"
if txt_manager.Value <> "" then
txt_managerseen.Value = mid(txt_manager.Value,4,instr(txt_manager.Value,",")-4)
set newOption = document.createElement("OPTION")
newOption.Text = txt_managerseen.Value & " (" & GetSubordinateNumbers(txt_manager.Value) & ")"
newOption.Value = txt_manager.Value
lst_managerlist.Add newOption
span_managerlist.InnerHTML = "(1)"
else
txt_managerseen.Value = txt_manager.Value
end if
txt_whencreated.Value = arrData(19)
txt_oupathuser.value = GetOUPath(arrData(21))
txt_lastlogintimestamp.value = arrData(22)
span_enabled.InnerHTML = arrData(24)
if txt_loginname.Value <> "" then
span_userorcontact.InnerHTML = "USER"
else
span_userorcontact.InnerHTML = "CONTACT"
end if
FillGroupMembershipList arrData(21), arrData(27)
End Sub
Sub First_Event
If IsArray(arrRows) = False Then
MsgBox "There are no records to display."
Else
If span_totalrecords.InnerHTML < 1 Then
MsgBox "There are no records to display"
ElseIf span_currentrecord.InnerHTML = 1 Then
MsgBox "You are already viewing the first record."
Else
span_currentrecord.InnerHTML = 1
Get_Event
End If
End If
End Sub
Sub Previous_Event
If IsArray(arrRows) = False Then
MsgBox "There are no records to display."
Else
If span_currentrecord.InnerHTML > 1 Then
span_currentrecord.InnerHTML = span_currentrecord.InnerHTML - 1
Get_Event
ElseIf span_currentrecord.InnerHTML = 1 Then
MsgBox "You are already viewing the first record."
Else
MsgBox "There are no records to display"
End If
End If
End Sub
Sub Next_Event
If IsArray(arrRows) = False Then
MsgBox "There are no records to display."
Else
If span_totalrecords.InnerHTML = 0 Then
MsgBox "There are no records for to display"
ElseIf span_currentrecord.InnerHTML = span_totalrecords.InnerHTML Then
MsgBox "You are already viewing the last record."
Else
span_currentrecord.InnerHTML = span_currentrecord.InnerHTML + 1
Get_Event
End If
End If
End Sub
Sub Last_Event
If IsArray(arrRows) = False Then
MsgBox "There are no records to display."
Else
If span_totalrecords.InnerHTML = 0 Then
MsgBox "There are no records to display"
ElseIf span_currentrecord.InnerHTML = span_totalrecords.InnerHTML Then
MsgBox "You are already viewing the last record."
Else
span_currentrecord.InnerHTML = span_totalrecords.InnerHTML
Get_Event
End If
End If
End Sub
Sub Detect_Search_Field(strCurrentField)
arrFields = Array(_
"txt_seatno", _
"txt_replacementseatno", _
"txt_building", _
"txt_extensionno", _
"txt_empid", _
"txt_department", _
"txt_designation", _
"txt_name", _
"txt_loginname", _
"txt_email", _
"txt_mailboxsize", _
"txt_mailboxstore", _
"txt_notes", _
"txt_computerserialno", _
"txt_replacedmachine", _
"txt_replacedcomputerserialno", _
"txt_oupathcomputer", _
"txt_computeros", _
"txt_computerservicepack", _
"txt_computerdescription", _
"txt_computercreated", _
"txt_mobileno", _
"txt_company", _
"txt_address", _
"txt_city", _
"txt_state", _
"txt_zipcode", _
"txt_country", _
"txt_homephone", _
"txt_managerseen", _
"txt_whencreated", _
"txt_oupathuser", _
"txt_lastlogintimestamp", _
"txt_filtersecuritygroup", _
"txt_filterdgmembership", _
"txt_filtermanagerlist", _
"txt_filterdomaincomputers" _
)
For Each strField In arrFields
If LCase(strField) <> LCase(strCurrentField) Then
Execute strField & ".style.backgroundColor=""#D3D3D3"""
Execute strField & ".Disabled = True"
End If
Next
End Sub
Function CreateHeaderRow(CSVorTABLE)
Dim arrHeader()
x = 0
if chk_seatno.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Seat No"""
x = x + 1
end if
if chk_building.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Building"""
x = x + 1
end if
if chk_extensionno.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Extension"""
x = x + 1
end if
if chk_empid.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Emp ID"""
x = x + 1
end if
if chk_department.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Department"""
x = x + 1
end if
if chk_designation.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Designation"""
x = x + 1
end if
if chk_name.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """User Name"""
x = x + 1
end if
if chk_loginname.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Login Name"""
x = x + 1
end if
if chk_email.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Email Address"""
x = x + 1
end if
if chk_mailboxsize.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Mailbox Size (MB)"""
x = x + 1
end if
if chk_mailboxstore.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Mailbox Store"""
x = x + 1
end if
if chk_notes.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Computer"""
x = x + 1
end if
if chk_computerserialno.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Serial No"""
x = x + 1
end if
if chk_oupathcomputer.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """OU Path - Computer"""
x = x + 1
end if
if chk_computeros.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Computer OS"""
x = x + 1
end if
if chk_computeros.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Service Pack"""
x = x + 1
end if
if chk_computerdescription.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Computer Description"""
x = x + 1
end if
if chk_computercreated.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Computer Account Created"""
x = x + 1
end if
if chk_mobileno.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Mobile"""
x = x + 1
end if
if chk_company.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Company"""
x = x + 1
end if
if chk_address.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Address"""
x = x + 1
end if
if chk_city.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """City"""
x = x + 1
end if
if chk_state.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """State"""
x = x + 1
end if
if chk_zipcode.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Zip Code"""
x = x + 1
end if
if chk_country.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Country"""
x = x + 1
end if
if chk_homephone.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Home Phone"""
x = x + 1
end if
if chk_manager.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Manager"""
x = x + 1
end if
if chk_subordinates.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Subordinates"""
x = x + 1
end if
if chk_whencreated.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Date Created"""
x = x + 1
end if
if chk_oupathuser.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """OU Path - User"""
x = x + 1
end if
if chk_lastlogintimestamp.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Last Logon"""
x = x + 1
end if
if chk_groupmembership.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Group Membership"""
x = x + 1
end if
if CSVorTABLE <> "" then
strHeader = strHeader & "<tr>"
for n = 0 to UBound(arrHeader)-1
strHeader = strHeader & "<td valign=""top"" align=""left""><b>" & replace(arrHeader(n),"""","") & "</b></td>"
next
strHeader = strHeader & "</tr>" & vbCRLF
else
strHeader = Join(arrHeader,",")
end if
CreateHeaderRow = strHeader
End Function
Function PopulateTableForCSV(CSVorTABLE)
For intRow = LBound(arrRows) To UBound(arrRows)
arrData = Split(arrRows(intRow), "|TD|")
x = 0
if chk_seatno.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(0) & """"
x = x + 1
end if
if chk_building.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(1) & """"
x = x + 1
end if
if chk_extensionno.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(2) & """"
x = x + 1
end if
if chk_empid.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(3) & """"
x = x + 1
end if
if chk_department.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(4) & """"
x = x + 1
end if
if chk_designation.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(5) & """"
x = x + 1
end if
if chk_name.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(6) & """"
x = x + 1
end if
if chk_loginname.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(7) & """"
x = x + 1
end if
if chk_email.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(8) & """"
x = x + 1
end if
if chk_mailboxsize.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(25) & """"
x = x + 1
end if
if chk_mailboxstore.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(26) & """"
x = x + 1
end if
if chk_notes.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(9) & """"
x = x + 1
end if
if chk_computerserialno.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(23) & """"
x = x + 1
end if
arrTemp = GetComputerInfo(arrData(9))
if IsArray(arrTemp) then
if chk_oupathcomputer.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & GetOUPath(replace(arrTemp(0),"""","")) & """"
x = x + 1
end if
if chk_computeros.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & replace(arrTemp(1),"""","") & """"
x = x + 1
end if
if chk_computeros.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & replace(arrTemp(2),"""","") & """"
x = x + 1
end if
if chk_computerdescription.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & replace(arrTemp(4),"""","") & """"
x = x + 1
end if
if chk_computercreated.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & replace(arrTemp(3),"""","") & """"
x = x + 1
end if
else
if chk_oupathcomputer.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & """"
x = x + 1
end if
if chk_computeros.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & """"
x = x + 1
end if
if chk_computeros.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & """"
x = x + 1
end if
if chk_computerdescription.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & """"
x = x + 1
end if
if chk_computercreated.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & """"
x = x + 1
end if
end if
if chk_mobileno.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(10) & """"
x = x + 1
end if
if chk_company.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(11) & """"
x = x + 1
end if
if chk_address.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(12) & """"
x = x + 1
end if
if chk_city.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(13) & """"
x = x + 1
end if
if chk_state.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(14) & """"
x = x + 1
end if
if chk_zipcode.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(15) & """"
x = x + 1
end if
if chk_country.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(16) & """"
x = x + 1
end if
if chk_homephone.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(17) & """"
x = x + 1
end if
if chk_manager.Checked then
ReDim Preserve arrFileData(x)
if arrData(18) <> "" then
arrFileData(x) = """" & mid(arrData(18),4,instr(arrData(18),",")-4) & """"
else
arrFileData(x) = """" & """"
end if
x = x + 1
end if
if chk_subordinates.Checked then
for each strDomain in arrDomainNames
strSearchField = "(manager=" & arrData(21) & ")"
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(&(objectCategory=person)(objectClass=user)" & strSearchField & ")"
' Comma delimited list of attribute values to retrieve.
strAttributes = "cn,samAccountName,whenCreated,distinguishedName,userAccountControl"
Set adoConnection = CreateObject("ADODB.Connection")
Set adoCommand = CreateObject("ADODB.Command")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
Set adoCommand.ActiveConnection = adoConnection
' Construct the LDAP syntax query.
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 100
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False
' Run the query.
Set adoRecordset = adoCommand.Execute
boolFoundFirst = False
str_subordinates = ""
Do Until adoRecordset.EOF
strField = adoRecordset.Fields("cn").Value
if boolFoundFirst then
str_subordinates = str_subordinates & ", " & strField
else
boolFoundFirst = True
str_subordinates = str_subordinates & strField
end if
adoRecordset.MoveNext
Loop
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & str_subordinates & """"
x = x + 1
next
end if
if chk_whencreated.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(19) & """"
x = x + 1
end if
if chk_oupathuser.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & GetOUPath(arrData(21)) & """"
x = x + 1
end if
if chk_lastlogintimestamp.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(22) & """"
x = x + 1
end if
if chk_groupmembership.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & ReportGroupMemberShipList(arrData(21), arrData(27)) & """"
x = x + 1
end if
if CSVorTABLE <> "" then
strFileData = strFileData & "<tr>"
for n = 0 to UBound(arrFileData)-1
strEntry = replace(arrFileData(n),"""","")
if strEntry = "" then strEntry = " "
strFileData = strFileData & "<td valign=""top"" align=""left"">" & strEntry & "</td>"
next
strFileData = strFileData & "</tr>" & vbCRLF
else
strFileData = strFileData & Join(arrFileData,",") & vbCRLF
end if
Next
PopulateTableForCSV = strFileData
End Function
Sub RunScript
on error resume next
Dim oDLG
Set oDLG=CreateObject("MSComDlg.CommonDialog")
if err.number > 0 then
err.clear
oDLG = window.prompt("Please enter the path and file name to save.", "D:\HTA-Result-Set.csv")
if oDLG <> "" then
strAnswer = oDLG
End If
else
With oDLG
.DialogTitle = "Save As"
.Filter="CSV File|*.csv"
.MaxFileSize = 255
.ShowSave
If .FileName <> "" Then
strAnswer = .FileName
End If
End With
end if
Set oDLG=Nothing
If IsNull(strAnswer) or strAnswer = "" Then
'Do nothing
Else
if globalstrSearchBtnPush <> "" then
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(strAnswer) = True Then
objFSO.DeleteFile strAnswer, True
end if
Set objFile = objFSO.CreateTextFile(strAnswer, True)
objFile.Write CreateHeaderRow("") & vbCRLF
objFile.Write PopulateTableForCSV("")
objFile.Close
MsgBox "Saved."
else
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(strAnswer) = True Then
objFSO.DeleteFile strAnswer, True
Else
' do nothing
end if
Set objFile = objFSO.CreateTextFile(strAnswer, True)
objFile.Write """Security Groups""" & VbCrLf
For Each objOption in lst_groupnames.Options
objFile.Write """" & objOption.Text & """" & VbCrLf
Next
objFile.Write """Distribution Groups""" & VbCrLf
For Each objOption in lst_dgnames.Options
objFile.Write """" & objOption.Text & """" & VbCrLf
Next
objFile.Close
MsgBox "Saved."
End if
End If
End Sub
Sub Email_This_Record
ShowDialogTo
ShowDialogCC
ConvertNamesToEmailAddresses
arrData = Split(arrRows(span_currentrecord.InnerHTML - 1), "|TD|")
if chk_seatno.Checked then
str_seatno = "<b>Seat No: </b>" & txt_seatno.value & "<br>" & vbCRLF
else
str_seatno = ""
end if
if chk_replacementseatno.Checked then
str_replacementseatno = "<b>These are the replacement details</b><br><b>Seat No: </b>" & txt_replacementseatno.value & "<br>" & vbCRLF
else
str_replacementseatno = ""
end if
if chk_building.Checked then
str_building = "<b>Building: </b>" & txt_building.value & "<br>" & vbCRLF
else
str_building = ""
end if
if chk_extensionno.Checked then
str_extensionno = "<b>Extension No: </b>" & txt_extensionno.value & "<br>" & vbCRLF
else
str_extensionno = ""
end if
if chk_empid.Checked then
str_empid = "<b>Emp ID: </b>" & txt_empid.value & "<br>" & vbCRLF
else
str_empid = ""
end if
if chk_department.Checked then
str_department = "<b>Department: </b>" & txt_department.value & "<br>" & vbCRLF
else
str_department = ""
end if
if chk_designation.Checked then
str_designation = "<b>Designation: </b>" & txt_designation.value & "<br>" & vbCRLF
else
str_designation = ""
end if
if chk_name.Checked then
str_name = "<b>User Name: </b>" & txt_name.value & "<br>" & vbCRLF
else
str_name = ""
end if
if chk_loginname.Checked then
str_loginname = "<b>Login Name: </b>" & txt_loginname.value & "<br>" & vbCRLF
else
str_loginname = ""
end if
if chk_email.Checked then
str_email = "<b>Email Address: </b>" & txt_email.value & "<br>" & vbCRLF
else
str_email = ""
end if
if chk_mailboxsize.Checked then
str_mailboxsize = "<b>Mailbox Size (MB): </b>" & txt_mailboxsize.value & "<br>" & vbCRLF
else
str_mailboxsize = ""
end if
if chk_mailboxstore.Checked then
str_mailboxstore = "<b>Mailbox Store: </b>" & txt_mailboxstore.value & "<br>" & vbCRLF
else
str_mailboxstore = ""
end if
if chk_notes.Checked then
str_notes = "<b>Machine Name: </b>" & txt_notes.value & "<br>" & vbCRLF
else
str_notes = ""
end if
if chk_computerserialno.Checked then
str_computerserialno = "<b>Serial No: </b>" & txt_computerserialno.value & "<br>" & vbCRLF
else
str_computerserialno = ""
end if
if chk_replacedmachine.Checked then
str_replacedmachine = "<b>These are the replacement details</b><br><b>Machine Name: </b>" & txt_replacedmachine.value & "<br>" & vbCRLF
else
str_replacedmachine = ""
end if
if chk_replacedcomputerserialno.Checked then
str_replacedcomputerserialno = "<b>Replaced Serial No: </b>" & txt_replacedcomputerserialno.value & "<br>" & vbCRLF
else
str_replacedcomputerserialno = ""
end if
arrTemp = GetComputerInfo(arrData(9))
if IsArray(arrTemp) then
if chk_oupathcomputer.Checked then
str_oupathcomputer = "<b>OU Path - Computer: </b>" & txt_oupathcomputer.value & "<br>" & vbCRLF
else
str_oupathcomputer = ""
end if
if chk_computeros.Checked then
str_computeros = "<b>Computer OS: </b>" & txt_computeros.value & "<br>" & vbCRLF
else
str_computeros = ""
end if
if chk_computeros.Checked then
str_computerservicepack = "<b>Service Pack: </b>" & txt_computerservicepack.value & "<br>" & vbCRLF
else
str_computerservicepack = ""
end if
if chk_computerdescription.Checked then
str_computerdescription = "<b>Computer Description: </b>" & txt_computerdescription.value & "<br>" & vbCRLF
else
str_computerdescription = ""
end if
if chk_computercreated.Checked then
str_computercreated = "<b>Computer Account Created: </b>" & txt_computercreated.value & "<br>" & vbCRLF
else
str_computercreated = ""
end if
else
if chk_oupathcomputer.Checked then
str_oupathcomputer = "<b>OU Path - Computer: </b>" & "<br>" & vbCRLF
else
str_oupathcomputer = ""
end if
if chk_computeros.Checked then
str_computeros = "<b>Computer OS: </b>" & "<br>" & vbCRLF
else
str_computeros = ""
end if
if chk_computeros.Checked then
str_computerservicepack = "<b>Service Pack: </b>" & "<br>" & vbCRLF
else
str_computerservicepack = ""
end if
if chk_computerdescription.Checked then
str_computerdescription = "<b>Computer Description: </b>" & "<br>" & vbCRLF
else
str_computerdescription = ""
end if
if chk_computercreated.Checked then
str_computercreated = "<b>Computer Account Created: </b>" & "<br>" & vbCRLF
else
str_computercreated = ""
end if
end if
if chk_mobileno.Checked then
str_mobileno = "<b>Mobile Number: </b>" & txt_mobileno.value & "<br>" & vbCRLF
else
str_mobileno = ""
end if
if chk_company.Checked then
str_company = "<b>Company: </b>" & txt_company.value & "<br>" & vbCRLF
else
str_company = ""
end if
if chk_address.Checked then
str_address = "<b>Address: </b>" & txt_address.value & "<br>" & vbCRLF
else
str_address = ""
end if
if chk_city.Checked then
str_city = "<b>City: </b>" & txt_city.value & "<br>" & vbCRLF
else
str_city = ""
end if
if chk_state.Checked then
str_state = "<b>State: </b>" & txt_state.value & "<br>" & vbCRLF
else
str_state = ""
end if
if chk_zipcode.Checked then
str_zipcode = "<b>Zip Code: </b>" & txt_zipcode.value & "<br>" & vbCRLF
else
str_zipcode = ""
end if
if chk_country.Checked then
str_country = "<b>Country: </b>" & txt_country.value & "<br>" & vbCRLF
else
str_country = ""
end if
if chk_homephone.Checked then
str_homephone = "<b>Home Phone: </b>" & txt_homephone.value & "<br>" & vbCRLF
else
str_homephone = ""
end if
if chk_manager.Checked then
if arrData(18) <> "" then
str_manager = "<b>Manager: </b>" & mid(arrData(18),4,instr(arrData(18),",")-4) & "<br>" & vbCRLF
else
str_manager = ""
end if
else
str_manager = ""
end if
if chk_subordinates.Checked then
str_subordinates = "<b>Subordinates: </b>"
boolFoundFirst = False
str_subordinates = ""
For Each objOption in lst_subordinates.Options
if boolFoundFirst then
str_subordinates = str_subordinates & ", " & objOption.Text
else
boolFoundFirst = True
str_subordinates = str_subordinates & objOption.Text
end if
Next
str_subordinates = str_subordinates & "<br>" & vbCRLF
else
str_subordinates = ""
end if
if chk_whencreated.Checked then
str_whencreated = "<b>Date Created: </b>" & txt_whencreated.value & "<br>" & vbCRLF
else
str_whencreated = ""
end if
if chk_oupathuser.Checked then
str_oupathuser = "<b>OU Path - User: </b>" & txt_oupathuser.value & "<br>" & vbCRLF
else
str_oupathuser = ""
end if
if chk_lastlogintimestamp.Checked then
str_lastlogintimestamp = "<b>Last Logon: </b>" & txt_lastlogintimestamp.value & "<br>" & vbCRLF
else
str_lastlogintimestamp = ""
end if
if chk_groupmembership.Checked then
str_groupmembership = "<b>Group Membership: </b>" & ReportGroupMemberShipList(arrData(21), arrData(27)) & "<br>" & vbCRLF
else
str_groupmembership = ""
end if
str_message = str_seatno & _
str_replacementseatno & _
str_building & _
str_extensionno & _
str_empid & _
str_department & _
str_designation & _
str_name & _
str_loginname & _
str_email & _
str_mailboxsize & _
str_mailboxstore & _
str_notes & _
str_computerserialno & _
str_replacedmachine & _
str_replacedcomputerserialno & _
str_oupathcomputer & _
str_computeros & _
str_computerservicepack & _
str_computerdescription & _
str_computercreated & _
str_mobileno & _
str_company & _
str_address & _
str_city & _
str_state & _
str_zipcode & _
str_country & _
str_homephone & _
str_manager & _
str_subordinates & _
str_whencreated & _
str_oupathuser & _
str_lastlogintimestamp & _
str_groupmembership
if trim(txt_EmailSubject.value) = "" then
strEmailSubject = "Active Directory Detail Report"
else
strEmailSubject = trim(txt_EmailSubject.value)
end if
Set objMessage = CreateObject("CDO.Message")
objMessage.From = strEmailFrom
objMessage.To = strEmailTo
objMessage.CC = strEmailCC
objMessage.BCC = strEmailBCC
objMessage.Subject = strEmailSubject
objMessage.HTMLBody = trim(txt_EmailBody.value) & "<br><br>" & vbCRLF & vbCRLF & str_message
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strEmailServer
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objMessage.Configuration.Fields.Update
objMessage.Send
MsgBox "An email has been sent"
End Sub
Sub Email_All_Records
ShowDialogTo
ShowDialogCC
ConvertNamesToEmailAddresses
str_message = ""
if boolTableReports then
str_message = str_message & "<table width=""100%"" border=""1"">" & vbCRLF
str_message = str_message & CreateHeaderRow("Table") & vbCRLF
str_message = str_message & PopulateTableForCSV("Table") & vbCRLF
str_message = str_message & "</table>" & vbCRLF
else
for n = 0 to UBound(arrRows)
arrData = Split(arrRows(n), "|TD|")
if chk_seatno.Checked then
str_seatno = "<b>Seat No: </b>" & arrData(0) & "<br>" & vbCRLF
else
str_seatno = ""
end if
if chk_building.Checked then
str_building = "<b>Building: </b>" & arrData(1) & "<br>" & vbCRLF
else
str_building = ""
end if
if chk_extensionno.Checked then
str_extensionno = "<b>Extension No: </b>" & arrData(2) & "<br>" & vbCRLF
else
str_extensionno = ""
end if
if chk_empid.Checked then
str_empid = "<b>Emp ID: </b>" & arrData(3) & "<br>" & vbCRLF
else
str_empid = ""
end if
if chk_department.Checked then
str_department = "<b>Department: </b>" & arrData(4) & "<br>" & vbCRLF
else
str_department = ""
end if
if chk_designation.Checked then
str_designation = "<b>Designation: </b>" & arrData(5) & "<br>" & vbCRLF
else
str_designation = ""
end if
if chk_name.Checked then
str_name = "<b>User Name: </b>" & arrData(6) & "<br>" & vbCRLF
else
str_name = ""
end if
if chk_loginname.Checked then
str_loginname = "<b>Login Name: </b>" & arrData(7) & "<br>" & vbCRLF
else
str_loginname = ""
end if
if chk_email.Checked then
str_email = "<b>Email Address: </b>" & arrData(8) & "<br>" & vbCRLF
else
str_email = ""
end if
if chk_mailboxsize.Checked then
str_mailboxsize = "<b>Mailbox Size (MB): </b>" & arrData(25) & "<br>" & vbCRLF
else
str_mailboxsize = ""
end if
if chk_mailboxstore.Checked then
str_mailboxstore = "<b>Mailbox Store: </b>" & arrData(26) & "<br>" & vbCRLF
else
str_mailboxstore = ""
end if
if chk_notes.Checked then
str_notes = "<b>Machine Name: </b>" & arrData(9) & "<br>" & vbCRLF
else
str_notes = ""
end if
if chk_computerserialno.Checked then
str_computerserialno = "<b>Serial No: </b>" & arrData(23) & "<br>" & vbCRLF
else
str_computerserialno = ""
end if
arrTemp = GetComputerInfo(arrData(9))
if IsArray(arrTemp) then
if chk_oupathcomputer.Checked then
str_oupathcomputer = "<b>OU Path - Computer: </b>" & GetOUPath(replace(arrTemp(0),"""","")) & "<br>" & vbCRLF
else
str_oupathcomputer = ""
end if
if chk_computeros.Checked then
str_computeros = "<b>Computer OS: </b>" & replace(arrTemp(1),"""","") & "<br>" & vbCRLF
else
str_computeros = ""
end if
if chk_computeros.Checked then
str_computerservicepack = "<b>Service Pack: </b>" & replace(arrTemp(2),"""","") & "<br>" & vbCRLF
else
str_computerservicepack = ""
end if
if chk_computerdescription.Checked then
str_computerdescription = "<b>Computer Description: </b>" & replace(arrTemp(4),"""","") & "<br>" & vbCRLF
else
str_computerdescription = ""
end if
if chk_computercreated.Checked then
str_computercreated = "<b>Computer Account Created: </b>" & replace(arrTemp(3),"""","") & "<br>" & vbCRLF
else
str_computercreated = ""
end if
else
if chk_oupathcomputer.Checked then
str_oupathcomputer = "<b>OU Path - Computer: </b>" & "<br>" & vbCRLF
else
str_oupathcomputer = ""
end if
if chk_computeros.Checked then
str_computeros = "<b>Computer OS: </b>" & "<br>" & vbCRLF
else
str_computeros = ""
end if
if chk_computeros.Checked then
str_computerservicepack = "<b>Service Pack: </b>" & "<br>" & vbCRLF
else
str_computerservicepack = ""
end if
if chk_computerdescription.Checked then
str_computerdescription = "<b>Computer Description: </b>" & "<br>" & vbCRLF
else
str_computerdescription = ""
end if
if chk_computercreated.Checked then
str_computercreated = "<b>Computer Account Created: </b>" & "<br>" & vbCRLF
else
str_computercreated = ""
end if
end if
if chk_mobileno.Checked then
str_mobileno = "<b>Mobile Number: </b>" & arrData(10) & "<br>" & vbCRLF
else
str_mobileno = ""
end if
if chk_company.Checked then
str_company = "<b>Company: </b>" & arrData(11) & "<br>" & vbCRLF
else
str_company = ""
end if
if chk_address.Checked then
str_address = "<b>Address: </b>" & arrData(12) & "<br>" & vbCRLF
else
str_address = ""
end if
if chk_city.Checked then
str_city = "<b>City: </b>" & arrData(13) & "<br>" & vbCRLF
else
str_city = ""
end if
if chk_state.Checked then
str_state = "<b>State: </b>" & arrData(14) & "<br>" & vbCRLF
else
str_state = ""
end if
if chk_zipcode.Checked then
str_zipcode = "<b>Zip Code: </b>" & arrData(15) & "<br>" & vbCRLF
else
str_zipcode = ""
end if
if chk_country.Checked then
str_country = "<b>Country: </b>" & arrData(16) & "<br>" & vbCRLF
else
str_country = ""
end if
if chk_homephone.Checked then
str_homephone = "<b>Home Phone: </b>" & arrData(17) & "<br>" & vbCRLF
else
str_homephone = ""
end if
if chk_manager.Checked then
if arrData(18) <> "" then
str_manager = "<b>Manager: </b>" & mid(arrData(18),4,instr(arrData(18),",")-4) & "<br>" & vbCRLF
else
str_manager = ""
end if
else
str_manager = ""
end if
if chk_subordinates.Checked then
for each strDomain in arrDomainNames
strSearchField = "(manager=" & arrData(21) & ")"
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(&(objectCategory=person)(objectClass=user)" & strSearchField & ")"
' Comma delimited list of attribute values to retrieve.
strAttributes = "cn,samAccountName,whenCreated,distinguishedName,userAccountControl"
Set adoConnection = CreateObject("ADODB.Connection")
Set adoCommand = CreateObject("ADODB.Command")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
Set adoCommand.ActiveConnection = adoConnection
' Construct the LDAP syntax query.
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 100
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False
' Run the query.
Set adoRecordset = adoCommand.Execute
boolFoundFirst = False
str_subordinates = "<b>Subordinates: </b>"
Do Until adoRecordset.EOF
strField = adoRecordset.Fields("cn").Value
if boolFoundFirst then
str_subordinates = str_subordinates & ", " & strField
else
boolFoundFirst = True
str_subordinates = str_subordinates & strField
end if
adoRecordset.MoveNext
Loop
str_subordinates = str_subordinates & "<br>" & vbCRLF
next
else
str_subordinates = ""
end if
if chk_whencreated.Checked then
str_whencreated = "<b>Date Created: </b>" & arrData(19) & "<br>" & vbCRLF
else
str_whencreated = ""
end if
if chk_oupathuser.Checked then
str_oupathuser = "<b>OU Path - User: </b>" & GetOUPath(arrData(21)) & "<br>" & vbCRLF
else
str_oupathuser = ""
end if
if chk_lastlogintimestamp.Checked then
str_lastlogintimestamp = "<b>Last Logon: </b>" & arrData(22) & "<br>" & vbCRLF
else
str_lastlogintimestamp = ""
end if
if chk_groupmembership.Checked then
str_groupmembership = "<b>Group Membership: </b>" & ReportGroupMemberShipList(arrData(21), arrData(27)) & "<br>" & vbCRLF
else
str_groupmembership = ""
end if
str_message = str_message & _
str_seatno & _
str_building & _
str_extensionno & _
str_empid & _
str_department & _
str_designation & _
str_name & _
str_loginname & _
str_email & _
str_mailboxsize & _
str_mailboxstore & _
str_notes & _
str_computerserialno & _
str_oupathcomputer & _
str_computeros & _
str_computerservicepack & _
str_computerdescription & _
str_computercreated & _
str_mobileno & _
str_company & _
str_address & _
str_city & _
str_state & _
str_zipcode & _
str_country & _
str_homephone & _
str_manager & _
str_subordinates & _
str_whencreated & _
str_oupathuser & _
str_lastlogintimestamp & _
str_groupmembership & VbCrLf & "<br><hr><br><br>" & vbCRLF
next
end if
if trim(txt_EmailSubject.value) = "" then
strEmailSubject = "Active Directory Detail Report"
else
strEmailSubject = trim(txt_EmailSubject.value)
end if
Set objMessage = CreateObject("CDO.Message")
objMessage.From = strEmailFrom
objMessage.To = strEmailTo
objMessage.CC = strEmailCC
objMessage.BCC = strEmailBCC
objMessage.Subject = strEmailSubject
objMessage.HTMLBody = trim(txt_EmailBody.value) & "<br><br>" & vbCRLF & vbCRLF & str_message
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strEmailServer
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objMessage.Configuration.Fields.Update
objMessage.Send
MsgBox "An email has been sent"
End Sub
Sub Email_As_Attachment
ShowDialogTo
ShowDialogCC
ConvertNamesToEmailAddresses
strAnswer = fTemp & "\HTAResults.csv"
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(strAnswer) = True Then
objFSO.DeleteFile strAnswer, True
end if
Set objFile = objFSO.CreateTextFile(strAnswer, True)
objFile.Write CreateHeaderRow("") & vbCRLF
objFile.Write PopulateTableForCSV("")
objFile.Close
if trim(txt_EmailSubject.value) = "" then
strEmailSubject = "Active Directory Detail Report"
else
strEmailSubject = trim(txt_EmailSubject.value)
end if
Set objMessage = CreateObject("CDO.Message")
objMessage.From = strEmailFrom
objMessage.To = strEmailTo
objMessage.CC = strEmailCC
objMessage.BCC = strEmailBCC
objMessage.Subject = strEmailSubject
objMessage.TextBody = trim(txt_EmailBody.value) & vbCRLF & vbCRLF
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strEmailServer
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objMessage.Configuration.Fields.Update
objMessage.AddAttachment strAnswer
objMessage.Send
MsgBox "An email has been sent"
objFSO.DeleteFile strAnswer, True
End Sub
Sub SelectAllCheck
If chk_selectall.Checked then
CheckAllBoxes
TestToSeeWhatLinesAreHidden
else
UnCheckAllBoxes
end if
End Sub
Sub UnCheckAllBoxes
chk_selectall.Checked = False
chk_seatno.Checked = False
chk_replacementseatno.Checked = False
chk_building.Checked = False
chk_extensionno.Checked = False
chk_seatno.Checked = False
chk_empid.Checked = False
chk_department.Checked = False
chk_designation.Checked = False
chk_name.Checked = False
chk_loginname.Checked = False
chk_email.Checked = False
chk_mailboxsize.Checked = False
chk_mailboxstore.Checked = False
chk_notes.Checked = False
chk_computerserialno.Checked = False
chk_replacedmachine.Checked = False
chk_replacedcomputerserialno.Checked = False
chk_oupathcomputer.Checked = False
chk_computeros.Checked = False
chk_computerdescription.Checked = False
chk_computercreated.Checked = False
chk_mobileno.Checked = False
chk_company.Checked = False
chk_address.Checked = False
chk_city.Checked = False
chk_state.Checked = False
chk_zipcode.Checked = False
chk_country.Checked = False
chk_homephone.Checked = False
chk_manager.Checked = False
chk_whencreated.Checked = False
chk_oupathuser.Checked = False
chk_lastlogintimestamp.Checked = False
chk_groupmembership.Checked = False
chk_dgmembership.Checked = False
chk_managerlist.Checked = False
chk_subordinates.Checked = False
End Sub
Sub CheckAllBoxes
chk_selectall.Checked = True
chk_seatno.Checked = True
chk_replacementseatno.Checked = True
chk_building.Checked = True
chk_extensionno.Checked = True
chk_empid.Checked = True
chk_department.Checked = True
chk_designation.Checked = True
chk_name.Checked = True
chk_loginname.Checked = True
chk_email.Checked = True
chk_mailboxsize.Checked = True
chk_mailboxstore.Checked = True
chk_notes.Checked = True
chk_computerserialno.Checked = True
chk_replacedmachine.Checked = True
chk_replacedcomputerserialno.Checked = True
chk_oupathcomputer.Checked = True
chk_computeros.Checked = True
chk_computerdescription.Checked = True
chk_computercreated.Checked = True
chk_mobileno.Checked = True
chk_company.Checked = True
chk_address.Checked = True
chk_city.Checked = True
chk_state.Checked = True
chk_zipcode.Checked = True
chk_country.Checked = True
chk_homephone.Checked = True
chk_manager.Checked = True
chk_whencreated.Checked = True
chk_oupathuser.Checked = True
chk_lastlogintimestamp.Checked = True
chk_groupmembership.Checked = True
chk_dgmembership.Checked = True
chk_managerlist.Checked = True
chk_subordinates.Checked = True
End Sub
Function GetUsersEmailAddress
Set oNet = CreateObject("WScript.NetWork")
sSearchField = "(samAccountName=*" & oNet.UserName & "*)"
Set objRootDSE = GetObject("LDAP://RootDSE")
sDNSDomain = objRootDSE.Get("defaultNamingContext")
sBase = "<LDAP://" & sDNSDomain & ">"
sFilter = "(&(objectCategory=person)(objectClass=user)" & sSearchField & ")"
sAttributes = "cn,samAccountName,mail"
sQuery = sBase & ";" & sFilter & ";" & sAttributes & ";subtree"
Set aCommand = CreateObject("ADODB.Command")
Set aConnection = CreateObject("ADODB.Connection")
aConnection.Provider = "ADsDSOObject"
aConnection.Open "Active Directory Provider"
aCommand.ActiveConnection = aConnection
aCommand.CommandText = sQuery
aCommand.Properties("Page Size") = 100
aCommand.Properties("Timeout") = 30
aCommand.Properties("Cache Results") = False
Set aRecordset = aCommand.Execute
GetUsersEmailAddress = aRecordset.Fields("cn").Value
End Function
Sub ShowDialogCC
Const adVarChar = 200
Const MaxCharacters = 255
strValidEmail = ""
arrResolve = split(txt_EmailCC.Value,";")
for each strResolve in arrResolve
strResolve = trim(strResolve)
if instr(strResolve,"@") then
'Treat as valid email address
strValidEmail = strValidEmail & strResolve & ";"
elseif strResolve <> "" then
Set objRoot = GetObject("LDAP://rootDSE")
strDomain = "LDAP://" & objRoot.Get("defaultNamingContext")
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.CommandText = "<" & strDomain & ">;(&(objectCategory=person)" & _
"(mail=*)(cn=*" & strResolve & "*));cn,samAccountName,mail;subtree"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 90
objCommand.Properties("Cache Results") = False
Set objRecordSet1 = objCommand.Execute
intCount = 0
While Not objRecordSet1.EOF
intCount = intCount + 1
strFullName = objRecordSet1.Fields("cn").Value
objRecordSet1.MoveNext
Wend
if intCount = 0 then
msgbox "The name """ & strResolve & """ could not be found. The name has been removed from the field."
end if
if intCount = 1 then
strValidEmail = strValidEmail & strFullName & ";"
end if
if intCount > 1 then
strSample = ShowModalDialog("modaldialog.hta",strResolve)
strValidEmail = strValidEmail & strSample & ";"
end if
end if
next
txt_EmailCC.Value = strValidEmail
End Sub
Sub ShowDialogTo
Const adVarChar = 200
Const MaxCharacters = 255
strValidEmail = ""
arrResolve = split(txt_EmailTo.Value,";")
for each strResolve in arrResolve
strResolve = trim(strResolve)
if instr(strResolve,"@") then
'Treat as valid email address
strValidEmail = strValidEmail & strResolve & ";"
elseif strResolve <> "" then
Set objRoot = GetObject("LDAP://rootDSE")
strDomain = "LDAP://" & objRoot.Get("defaultNamingContext")
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.CommandText = "<" & strDomain & ">;(&(objectCategory=person)" & _
"(mail=*)(cn=*" & strResolve & "*));cn,samAccountName,mail;subtree"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 90
objCommand.Properties("Cache Results") = False
Set objRecordSet1 = objCommand.Execute
intCount = 0
While Not objRecordSet1.EOF
intCount = intCount + 1
strFullName = objRecordSet1.Fields("cn").Value
objRecordSet1.MoveNext
Wend
if intCount = 0 then
msgbox "The name """ & strResolve & """ could not be found. The name has been removed from the field."
end if
if intCount = 1 then
strValidEmail = strValidEmail & strFullName & ";"
end if
if intCount > 1 then
strSample = ShowModalDialog("modaldialog.hta",strResolve)
strValidEmail = strValidEmail & strSample & ";"
end if
end if
next
txt_EmailTo.Value = strValidEmail
End Sub
Sub ShowDialogFrom
Const adVarChar = 200
Const MaxCharacters = 255
strValidEmail = ""
arrResolve = split(txt_EmailFrom.Value,";")
for each strResolve in arrResolve
strResolve = trim(strResolve)
if instr(strResolve,"@") then
'Treat as valid email address
strValidEmail = strValidEmail & strResolve & ";"
elseif strResolve <> "" then
Set objRoot = GetObject("LDAP://rootDSE")
strDomain = "LDAP://" & objRoot.Get("defaultNamingContext")
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.CommandText = "<" & strDomain & ">;(&(objectCategory=person)" & _
"(mail=*)(cn=*" & strResolve & "*));cn,samAccountName,mail;subtree"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 90
objCommand.Properties("Cache Results") = False
Set objRecordSet1 = objCommand.Execute
intCount = 0
While Not objRecordSet1.EOF
intCount = intCount + 1
strFullName = objRecordSet1.Fields("cn").Value
objRecordSet1.MoveNext
Wend
if intCount = 0 then
msgbox "The name """ & strResolve & """ could not be found. The name has been removed from the field."
end if
if intCount = 1 then
strValidEmail = strValidEmail & strFullName & ";"
end if
if intCount > 1 then
strSample = ShowModalDialog("modaldialog.hta",strResolve)
strValidEmail = strValidEmail & strSample & ";"
end if
end if
next
txt_EmailFrom.Value = strValidEmail
End Sub
Sub FillGroupMembershipList(usersDistinguishedname,usersPrimaryGroupToken)
on error resume next
Set objlst_groupnames = document.getElementById( "lst_groupnames" )
objlst_groupnames.ListItems.Clear
Set objlst_dgnames = document.getElementById( "lst_dgnames" )
objlst_dgnames.ListItems.Clear
For Each objOption in lst_subordinates.Options
objOption.RemoveNode
Next
intGroupMembership = 0
intdgmembership = 0
intsubordinates = 0
' This section is to pull group membership names
GroupMembershipDB.Filter = "memberDistinguishedname = '" & usersDistinguishedname & "' OR PrimaryGroupToken = '" & usersPrimaryGroupToken & "'"
GroupMembershipDB.Sort = "SAMAccountName"
GroupMembershipDB.MoveFirst
strLastGroupDN = ""
Do Until GroupMembershipDB.EOF
strGroupType = GroupMembershipDB.Fields.Item("samaccounttype").Value
strNTName = GroupMembershipDB.Fields.Item("samaccountname").Value
strPrimary = GroupMembershipDB.Fields.Item("PrimaryGroupToken").Value
strdistinguishedName = GroupMembershipDB.Fields.Item("distinguishedName").Value
intNumberOfMembers = dicGroupNumbers.Item(strdistinguishedName)
if strLastGroupDN <> strdistinguishedName then
Select Case strGroupType
Case "[GDG]", "[LDG]", "[UDG]"
Set objListItem = objlst_dgnames.ListItems.Add
objListItem.Text = strNTName
objListItem.ListSubItems.Add.Text = intNumberOfMembers
objListItem.ListSubItems.Add.Text = strGroupType
objListItem.ListSubItems.Add.Text = strdistinguishedName
objListItem.ListSubItems.Add.Text = strPrimary
Case "[GSG]", "[LSG]", "[USG]"
Set objListItem = objlst_groupnames.ListItems.Add
objListItem.Text = strNTName
objListItem.ListSubItems.Add.Text = intNumberOfMembers
objListItem.ListSubItems.Add.Text = strGroupType
objListItem.ListSubItems.Add.Text = strdistinguishedName
objListItem.ListSubItems.Add.Text = strPrimary
Case "[Unknown]"
Set objListItem = objlst_groupnames.ListItems.Add
objListItem.Text = strNTName
objListItem.ListSubItems.Add.Text = intNumberOfMembers
objListItem.ListSubItems.Add.Text = strGroupType
objListItem.ListSubItems.Add.Text = strdistinguishedName
objListItem.ListSubItems.Add.Text = strPrimary
End Select
strLastGroupDN = strdistinguishedName
End if
GroupMembershipDB.MoveNext
Loop
' This section is to pull subordinate names
Set objRootDSE = GetObject("LDAP://RootDSE")
strDNSDomain = objRootDSE.Get("defaultNamingContext")
Set adoConnection = CreateObject("ADODB.Connection")
Set adoCommand = CreateObject("ADODB.Command")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
Set adoCommand.ActiveConnection = adoConnection
strSearchField = "(manager=" & usersDistinguishedname & ")"
strBase = "<LDAP://" & strDNSDomain & ">"
strFilter = "(&(objectCategory=person)(objectClass=user)" & strSearchField & ")"
' Comma delimited list of attribute values to retrieve.
strAttributes = "cn,samAccountName,whenCreated,distinguishedName,userAccountControl"
' Construct the LDAP syntax query.
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 100
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False
' Run the query.
Set adoRecordset = adoCommand.Execute
Do Until adoRecordset.EOF
set newOption = document.createElement("OPTION")
newOption.Text = adoRecordset.Fields("cn").Value & " (" & GetSubordinateNumbers(adoRecordset.Fields("distinguishedName").Value) & ")"
newOption.Value = adoRecordset.Fields("samAccountName").Value & ";" & adoRecordset.Fields("distinguishedName").Value
lst_subordinates.Add newOption
adoRecordset.MoveNext
intsubordinates = intsubordinates + 1
Loop
span_groupmembership.InnerHTML = "(" & lst_groupnames.ListItems.Count & ")"
span_dgmembership.InnerHTML = "(" & lst_dgnames.ListItems.Count & ")"
span_subordinates.InnerHTML = "(" & intsubordinates & ")"
End Sub
Function ReportGroupMembershipList(usersDistinguishedname,usersPrimaryGroupToken)
GroupMembershipDB.Filter = "memberDistinguishedname = '" & usersDistinguishedname & "' OR PrimaryGroupToken = '" & usersPrimaryGroupToken & "'"
GroupMembershipDB.Sort = "SAMAccountName"
GroupMembershipDB.MoveFirst
strLastGroupDN = ""
Do Until GroupMembershipDB.EOF
strdistinguishedName = GroupMembershipDB.Fields.Item("distinguishedName").Value
if strLastGroupDN <> strdistinguishedName then
strGroupType = GroupMembershipDB.Fields.Item("samaccounttype").Value
strNTName = GroupMembershipDB.Fields.Item("samaccountname").Value
strValue = strValue & strNTName & " " & strGroupType & ";"
strLastGroupDN = strdistinguishedName
GroupMembershipDB.MoveNext
End if
Loop
strValue = mid(strValue,1,len(strValue)-1)
ReportGroupMembershipList = strValue
End Function
Function GetManagerDN(Manager)
Set objRootDSE = GetObject("LDAP://RootDSE")
strDNSDomain = objRootDSE.Get("defaultNamingContext")
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
strBase = "<LDAP://" & strDNSDomain & ">"
strFilter = "(&(objectCategory=person)(objectClass=user)(cn=*" & Manager & "*))"
strAttributes = "distinguishedName,CN"
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
Set adoRecordset = CreateObject("ADODB.Recordset")
adoRecordset.CursorLocation = 3
adoRecordset.Sort = "distinguishedname"
adoRecordset.Open strQuery, adoConnection, , , 1
strresults = ""
boolResultsFound = False
Do Until adoRecordset.EOF
strDN = adoRecordset.Fields("distinguishedName").Value
sResults = sResults & "(manager=" & strDN & ")"
boolResultsFound = True
adoRecordset.MoveNext
Loop
if boolResultsFound then
sResults = "(|" & sResults & ")"
end if
GetManagerDN = sResults
End Function
Sub FillGroupList
Set objlst_groupnames = document.getElementById( "lst_groupnames" )
objlst_groupnames.ListItems.Clear
Set objlst_dgnames = document.getElementById( "lst_dgnames" )
objlst_dgnames.ListItems.Clear
For Each objOption in lst_subordinates.Options
objOption.RemoveNode
Next
intGroupMembership = 0
intdgmembership = 0
intsubordinates = 0
for each strDomain in arrDomainNames
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(objectCategory=group)"
strAttributes = "sAMAccountName,primaryGroupToken,distinguishedName,samaccounttype,member"
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
Set adoRecordset = CreateObject("ADODB.Recordset")
adoRecordset.CursorLocation = 3
adoRecordset.Sort = "distinguishedname"
adoRecordset.Open strQuery, adoConnection, , , 1
Do Until adoRecordset.EOF
intNumberOfMembers = 0
strNTName = adoRecordset.Fields("sAMAccountName").Value
strPrimary = adoRecordset.Fields("primaryGroupToken").Value
strdistinguishedName = adoRecordset.Fields("distinguishedName").Value
strGroupType = GetSAMAccountType(adoRecordset.Fields("samaccounttype").Value)
if NOT IsNull(adoRecordset.Fields("member").Value) then
for each strMember in adoRecordset.Fields("member").Value
GroupMembershipDB.AddNew
GroupMembershipDB("sAMAccountName") = strNTName
GroupMembershipDB("primaryGroupToken") = strPrimary
GroupMembershipDB("distinguishedName") = strdistinguishedName
GroupMembershipDB("samaccounttype") = strGroupType
GroupMembershipDB("MemberDistinguishedName") = strMember
GroupMembershipDB.Update
intNumberOfMembers = intNumberOfMembers + 1
next
else
GroupMembershipDB.AddNew
GroupMembershipDB("sAMAccountName") = strNTName
GroupMembershipDB("primaryGroupToken") = strPrimary
GroupMembershipDB("distinguishedName") = strdistinguishedName
GroupMembershipDB("samaccounttype") = strGroupType
GroupMembershipDB("MemberDistinguishedName") = ""
GroupMembershipDB.Update
End if
if NOT dicGroupNumbers.Exists(strdistinguishedName) then
dicGroupNumbers.Add strdistinguishedName, intNumberOfMembers
if strPrimary = 513 then
GetUsersWithPrimaryGroupID 513, strdistinguishedName
intNumberOfMembers = dicGroupNumbers.Item(strdistinguishedName)+1
end if
end if
Select Case adoRecordset.Fields("samaccounttype").Value
Case 2,268435457,4,536870913,8,268435457 'Distribution Groups
Set objListItem = objlst_dgnames.ListItems.Add
objListItem.Text = strNTName
objListItem.ListSubItems.Add.Text = intNumberOfMembers
objListItem.ListSubItems.Add.Text = strGroupType
objListItem.ListSubItems.Add.Text = strdistinguishedName
objListItem.ListSubItems.Add.Text = strPrimary
Case -2147483646,268435456,-2147483644,536870912,-2147483640,268435456 'Security Groups
Set objListItem = objlst_groupnames.ListItems.Add
objListItem.Text = strNTName
objListItem.ListSubItems.Add.Text = intNumberOfMembers
objListItem.ListSubItems.Add.Text = strGroupType
objListItem.ListSubItems.Add.Text = strdistinguishedName
objListItem.ListSubItems.Add.Text = strPrimary
Case Else
Set objListItem = objlst_groupnames.ListItems.Add
objListItem.Text = strNTName
objListItem.ListSubItems.Add.Text = intNumberOfMembers
objListItem.ListSubItems.Add.Text = strGroupType
objListItem.ListSubItems.Add.Text = strdistinguishedName
objListItem.ListSubItems.Add.Text = strPrimary
End Select
adoRecordset.MoveNext
Loop
next
span_groupmembership.InnerHTML = "(" & lst_groupnames.ListItems.Count & ")"
span_dgmembership.InnerHTML = "(" & lst_dgnames.ListItems.Count & ")"
span_subordinates.InnerHTML = "(" & intsubordinates & ")"
End Sub
Sub FillManagerList
For Each objOption in lst_managerlist.Options
objOption.RemoveNode
Next
intManagers = 0
for each strDomain in arrDomainNames
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(&(objectCategory=user)(manager=*))"
strAttributes = "manager"
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
Set adoRecordset = CreateObject("ADODB.Recordset")
adoRecordset.CursorLocation = 3
adoRecordset.Sort = "manager"
adoRecordset.Open strQuery, adoConnection, , , 1
Do Until adoRecordset.EOF
strManager = adoRecordset.Fields("manager").Value
if dicManagerList.Exists(strManager) then
dicManagerList.Item(strManager) = dicManagerList.Item(strManager) + 1
else
dicManagerList.Add strManager, 1
intManagers = intManagers + 1
End if
adoRecordset.MoveNext
Loop
next
for each Manager in dicManagerList
set newOption = document.createElement("OPTION")
newOption.Text = mid(Manager,4,instr(Manager,",")-4) & " (" & dicManagerList.Item(Manager) & ")"
newOption.Value = Manager
lst_managerlist.Add newOption
next
span_managerlist.InnerHTML = "(" & intManagers & ")"
End Sub
Sub PopulateManagerList
For Each objOption in lst_managerlist.Options
objOption.RemoveNode
Next
intManagers = 0
for each Manager in dicManagerList
set newOption = document.createElement("OPTION")
newOption.Text = mid(Manager,4,instr(Manager,",")-4) & " (" & dicManagerList.Item(Manager) & ")"
newOption.Value = Manager
lst_managerlist.Add newOption
intManagers = intManagers + 1
next
span_managerlist.InnerHTML = "(" & intManagers & ")"
End Sub
Function GetSubordinateNumbers(manager)
intSubordinates = 0
for each strDomain in arrDomainNames
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(&(objectCategory=user)(manager=" & manager & "))"
strAttributes = "manager"
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
Set adoRecordset = CreateObject("ADODB.Recordset")
adoRecordset.CursorLocation = 3
adoRecordset.Sort = "manager"
adoRecordset.Open strQuery, adoConnection, , , 1
Do Until adoRecordset.EOF
intSubordinates = intSubordinates + 1
adoRecordset.MoveNext
Loop
next
GetSubordinateNumbers = intSubordinates
End FUnction
Function GetSAMAccountType(SAMAccountType)
Select Case SAMAccountType
Case 2, 268435457
GetSAMAccountType = "[GDG]" 'This is a global distribution group
Case 4, 536870913
GetSAMAccountType = "[LDG]" 'This is a domain local distribution group
Case 8, 268435457
GetSAMAccountType = "[UDG]" 'This is a universal distribution group
Case -2147483646, 268435456
GetSAMAccountType = "[GSG]" 'This is a global security group
Case -2147483644, 536870912
GetSAMAccountType = "[LSG]" 'This is a domain local security group
Case -2147483640, 268435456
GetSAMAccountType = "[USG]" 'This is a universal security group
Case Else
GetSAMAccountType = "[Unknown]" 'This is an unknown group type
End Select
End Function
Sub GetUsersWithPrimaryGroupID(PrimaryGroupID,distinguishedName)
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
strSearchField = "(primaryGroupID=" & PrimaryGroupID & ")"
for each strDomain in arrDomainNames
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(&(objectCategory=user)(objectCategory=contact)" & strSearchField & ")"
strAttributes = "cn,primaryGroupID"
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 100
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False
Set adoRecordset = adoCommand.Execute
If Not adoRecordset.EOF Then
Do Until adoRecordset.EOF
n = n + 1
adoRecordset.movenext
Loop
End If
next
dicGroupNumbers.Item(distinguishedName) = n
End Sub
Sub FillSubjectList
For Each objOption in txt_EmailSubject.Options
objOption.RemoveNode
Next
For each strSubjectlineText in arrSubjectText
set newOption = document.createElement("OPTION")
newOption.Text = strSubjectlineText
newOption.Value = strSubjectlineText
txt_EmailSubject.Add newOption
Next
End Sub
Sub ConvertNamesToEmailAddresses
txt_EmailToHidden.Value = GetEmailAddresses(txt_EmailTo.Value)
txt_EmailCCHidden.Value = GetEmailAddresses(txt_EmailCC.Value)
strEmailTo = txt_EmailToHidden.Value
End Sub
Function GetEmailAddresses(names)
Const adVarChar = 200
Const MaxCharacters = 255
strValidEmail = ""
arrResolve = split(names,";")
for each strResolve in arrResolve
strResolve = trim(strResolve)
if instr(strResolve,"@") then
'Treat as valid email address
strValidEmail = strValidEmail & strResolve & ";"
elseif strResolve <> "" then
Set objRoot = GetObject("LDAP://rootDSE")
strDomain = "LDAP://" & objRoot.Get("defaultNamingContext")
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.CommandText = "<" & strDomain & ">;(&(objectCategory=person)" & _
"(mail=*)(cn=*" & strResolve & "*));cn,samAccountName,mail;subtree"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 90
objCommand.Properties("Cache Results") = False
Set objRecordSet1 = objCommand.Execute
intCount = 0
While Not objRecordSet1.EOF
intCount = intCount + 1
strFullName = objRecordSet1.Fields("mail").Value
objRecordSet1.MoveNext
Wend
if intCount = 1 then
strValidEmail = strValidEmail & strFullName & ";"
end if
end if
next
GetEmailAddresses = strValidEmail
End Function
Function GetOUPath(OU)
strOU = ""
strFQDN = ""
boolFoundMatch = False
arrValues = split(OU,",")
for each strValue in arrValues
if instr(strValue,"OU=") then
strOU = strOU & replace(strValue,"OU=","") & "\"
end if
if instr(strValue,"DC=") then
strFQDN = strFQDN & replace(strValue,"DC=","") & "."
end if
if instr(strValue,"CN=") then
if boolFoundMatch then
strCN = strCN & replace(strValue,"CN=","") & "\"
else
'Skip the first match - this is always the user name
boolFoundMatch = True
end if
end if
next
if strFQDN <> "" then
strFQDN = left(strFQDN,len(strFQDN)-1)
if strOU <> "" then
strOU = left(strOU,len(strOU)-1)
else
'strOU = "{object not found in any OU}"
if strCN <> "" then
strOU = left(strCN,len(strCN)-1)
end if
end if
GetOUPath = (Split(strOU,"\")(0))
else
GetOUPath = ""
end if
End Function
Function GetComputerInfo(names)
Const adVarChar = 200
Const MaxCharacters = 255
strValidComputer = ""
strResolve = trim(names)
if strResolve <> "" then
Set objRoot = GetObject("LDAP://rootDSE")
strDomain = "LDAP://" & objRoot.Get("defaultNamingContext")
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.CommandText = "<" & strDomain & ">;(&(objectCategory=computer)" & _
"(cn=" & strResolve & "));cn,samAccountName,distinguishedName,operatingsystem,operatingsystemservicepack,whencreated,description;subtree"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 90
objCommand.Properties("Cache Results") = False
Set objRecordSet1 = objCommand.Execute
While Not objRecordSet1.EOF
if IsNull(objRecordSet1.Fields("distinguishedName").Value) then
sDN = ""
else
sDN = replace(objRecordSet1.Fields("distinguishedName").Value,vbCRLF,"")
End if
if IsNull(objRecordSet1.Fields("operatingsystem").Value) then
sOS = ""
else
sOS = replace(objRecordSet1.Fields("operatingsystem").Value,vbCRLF,"")
End if
if IsNull(objRecordSet1.Fields("operatingsystemservicepack").Value) then
sSP = ""
else
sSP = replace(objRecordSet1.Fields("operatingsystemservicepack").Value,vbCRLF,"")
End if
if IsNull(objRecordSet1.Fields("whencreated").Value) then
sWC = ""
else
sWC = replace(objRecordSet1.Fields("whencreated").Value,vbCRLF,"")
End if
if IsNull(objRecordSet1.Fields("description").Value) then
sDS = ""
else
sDS = join(objRecordSet1.Fields("description").Value)
sDS = replace(sDS,vbCRLF,"")
End if
strValidComputer = Array("""" & sDN & """","""" & sOS & """","""" & sSP & """","""" & sWC & """","""" & sDS & """")
objRecordSet1.MoveNext
Wend
end if
if isArray(strValidComputer) then
GetComputerInfo = strValidComputer
else
GetComputerInfo = ""
end if
End Function
Sub ShowSubMenu(Parent,Child)
If Child.style.display="block" Then
Parent.classname="Menuover"
Child.style.display="none"
Set LastChildMenu=Nothing
Else
Parent.classname="Menuin"
Child.style.display="block"
Set LastChildMenu=Child
End If
Set LastMenu=Parent
End Sub
Sub MenuOver(Parent,Child)
If LastChildMenu is Nothing Then
Parent.className="MenuOver"
Else
If LastMenu is Parent Then
Parent.className="MenuIn"
Else
HideMenu
ShowSubMenu Parent,Child
End If
End If
End Sub
Sub MenuOut(Menu)
If LastChildMenu is Nothing Then Menu.className="MenuOut"
End Sub
Sub HideMenu
If Not LastChildMenu is Nothing Then
LastChildMenu.style.display="none"
Set LastChildMenu=Nothing
LastMenu.classname="Menuout"
End If
End Sub
Sub SubMenuOver(Menu)
Menu.className="SubMenuOver"
End Sub
Sub SubMenuOut(Menu)
Menu.className="SubMenuOut"
End Sub
Sub SaveAs
on error resume next
Dim oDLG
Set oDLG=CreateObject("MSComDlg.CommonDialog")
if err.number > 0 then
err.clear
oDLG = window.prompt("Please enter the path and file name to save.", "C:\your-query.qry")
if oDLG <> "" then
FileName = oDLG
Save
End If
else
With oDLG
.DialogTitle = "Save As"
.Filter="Query|*.qry|Text Files|*.txt|All files|*.*"
.MaxFileSize = 255
.ShowSave
If .FileName <> "" Then
FileName = .FileName
Save
End If
End With
end if
Set oDLG=Nothing
DisplayTitle
End Sub
Sub Save()
Dim fso,f
If FileName <> "" Then
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.CreateTextFile(FileName,True)
'This is the text to get saved into the file
with f
.writeline "<root>"
.writeline "<searchfield>" & globalStrSearchField & "</searchfield>"
.writeline "<btnpush>" & globalStrSearchBtnPush & "</btnpush>"
.writeline "<to>" & txt_EmailTo.value & "</to>"
.writeline "<cc>" & txt_EmailCC.value & "</cc>"
.writeline "<bcc>" & strEmailBCC & "</bcc>"
.writeline "<subject>" & txt_EmailSubject.value & "</subject>"
.writeline "<emailbody>" & txt_EmailBody.value & "</emailbody>"
if chk_selectall.Checked then .writeline "<checkboxes>chk_selectall</checkboxes>"
if chk_seatno.Checked then .writeline "<checkboxes>chk_seatno</checkboxes>"
if chk_building.Checked then .writeline "<checkboxes>chk_building</checkboxes>"
if chk_extensionno.Checked then .writeline "<checkboxes>chk_extensionno</checkboxes>"
if chk_empid.Checked then .writeline "<checkboxes>chk_empid</checkboxes>"
if chk_department.Checked then .writeline "<checkboxes>chk_department</checkboxes>"
if chk_designation.Checked then .writeline "<checkboxes>chk_designation</checkboxes>"
if chk_name.Checked then .writeline "<checkboxes>chk_name</checkboxes>"
if chk_loginname.Checked then .writeline "<checkboxes>chk_loginname</checkboxes>"
if chk_email.Checked then .writeline "<checkboxes>chk_email</checkboxes>"
if chk_mailboxsize.Checked then .writeline "<checkboxes>chk_mailboxsize</checkboxes>"
if chk_mailboxstore.Checked then .writeline "<checkboxes>chk_mailboxstore</checkboxes>"
if chk_notes.Checked then .writeline "<checkboxes>chk_notes</checkboxes>"
if chk_computerserialno.Checked then .writeline "<checkboxes>chk_computerserialno</checkboxes>"
if chk_replacedmachine.Checked then .writeline "<checkboxes>chk_replacedmachine</checkboxes>"
if chk_replacedcomputerserialno.Checked then .writeline "<checkboxes>chk_replacedcomputerserialno</checkboxes>"
if chk_oupathcomputer.Checked then .writeline "<checkboxes>chk_oupathcomputer</checkboxes>"
if chk_computeros.Checked then .writeline "<checkboxes>chk_computeros</checkboxes>"
if chk_computerdescription.Checked then .writeline "<checkboxes>chk_computerdescription</checkboxes>"
if chk_computercreated.Checked then .writeline "<checkboxes>chk_computercreated</checkboxes>"
if chk_mobileno.Checked then .writeline "<checkboxes>chk_mobileno</checkboxes>"
if chk_company.Checked then .writeline "<checkboxes>chk_company</checkboxes>"
if chk_address.Checked then .writeline "<checkboxes>chk_address</checkboxes>"
if chk_city.Checked then .writeline "<checkboxes>chk_city</checkboxes>"
if chk_state.Checked then .writeline "<checkboxes>chk_state</checkboxes>"
if chk_zipcode.Checked then .writeline "<checkboxes>chk_zipcode</checkboxes>"
if chk_country.Checked then .writeline "<checkboxes>chk_country</checkboxes>"
if chk_homephone.Checked then .writeline "<checkboxes>chk_homephone</checkboxes>"
if chk_manager.Checked then .writeline "<checkboxes>chk_manager</checkboxes>"
if chk_whencreated.Checked then .writeline "<checkboxes>chk_whencreated</checkboxes>"
if chk_oupathuser.Checked then .writeline "<checkboxes>chk_oupathuser</checkboxes>"
if chk_lastlogintimestamp.Checked then .writeline "<checkboxes>chk_lastlogintimestamp</checkboxes>"
if chk_groupmembership.Checked then .writeline "<checkboxes>chk_groupmembership</checkboxes>"
if chk_dgmembership.Checked then .writeline "<checkboxes>chk_dgmembership</checkboxes>"
if chk_managerlist.Checked then .writeline "<checkboxes>chk_managerlist</checkboxes>"
if chk_subordinates.Checked then .writeline "<checkboxes>chk_subordinates</checkboxes>"
.writeline "</root>"
.Close
end with
Set xmlDom = CreateObject("Microsoft.XMLDOM")
XmlDom.async = False
XmlDom.Load(FileName)
xmlDom.Save(FileName)
Set f = Nothing
Set fso = Nothing
Else
SaveAs
End If
End Sub
Sub OpenIt
UnCheckAllBoxes
Set xmlDom = CreateObject("Microsoft.XMLDOM")
xmlDom.async="false"
xmlDom.load(FileName)
globalStrSearchField = xmlDom.getElementsByTagName("searchfield").item(0).text
globalStrSearchBtnPush = xmlDom.getElementsByTagName("btnpush").item(0).text
txt_EmailTo.value = xmlDom.getElementsByTagName("to").item(0).text
txt_EmailCC.value = xmlDom.getElementsByTagName("cc").item(0).text
strEmailBCC = xmlDom.getElementsByTagName("bcc").item(0).text
txt_EmailSubject.value = xmlDom.getElementsByTagName("subject").item(0).text
txt_EmailBody.value = xmlDom.getElementsByTagName("emailbody").item(0).text
for n = 0 to xmlDom.getElementsByTagName("checkboxes").Length-1
execute(xmlDom.getElementsByTagName("checkboxes").item(n).text & ".checked = True")
next
DisplayTitle
Submit_Form "FileOpen"
End Sub
Sub Open()
on error resume next
Dim oDLG
Set oDLG = CreateObject("MSComDlg.CommonDialog")
if err.number > 0 then
err.clear
oDLG = window.prompt("Please enter the path and file name to open.", "C:\your-query.qry")
if oDLG <> "" then
FileName = oDLG
OpenIt
End If
else
With oDLG
.DialogTitle = "Open"
.Filter = "Query|*.qry|Text Files|*.txt|All files|*.*"
.MaxFileSize = 255
.Flags = .Flags Or &H1000 'FileMustExist (OFN_FILEMUSTEXIST)
.ShowOpen
If .FileName <> "" Then
FileName = .FileName
OpenIt
End If
End With
end if
Set oDLG = Nothing
End Sub
Sub DisplayTitle
If FileName="" Then
document.Title="Default - " & oHTA.ApplicationName
Else
document.Title=FileName & " - " & oHTA.ApplicationName
End If
End Sub
Sub ClickTheSpecialReportButton
Submit_Form("Disabled")
End Sub
Sub SpecialReportNewUsersToday
Clear_Form ""
txt_whencreated.Value = FormatDateTime(Date(),2)
Detect_Search_Field("txt_whencreated")
Submit_Form("Main")
End Sub
Sub SpecialReportDisabledUsersToday
Clear_Form ""
txt_whencreated.Value = FormatDateTime(Date(),2)
Detect_Search_Field("txt_whencreated")
Submit_Form("DisabledToday")
End Sub
Sub SpecialReportDisabledUsersSomeDay
Clear_Form ""
sRtn = showModalDialog("Calendar.htm","","center=yes;dialogWidth=160pt;dialogHeight=180pt")
txt_whencreated.value = sRtn
Detect_Search_Field("txt_whencreated")
Submit_Form("DisabledToday")
End Sub
Sub GetChkProfiles
For Each objOption in lst_ChkProfiles.Options
objOption.RemoveNode
Next
strAnswer = fAppData & "\profile.xml"
Set objFSO = CreateObject("Scripting.FileSystemObject")
If NOT objFSO.FileExists(strAnswer) Then
'Create profile.xml
Set f = objFSO.CreateTextFile(strAnswer,True)
with f
.writeline "<root>"
.writeline "<profile val=""Default"">"
.writeline "<checkboxes val=""chk_selectall"" />"
.writeline "<checkboxes val=""chk_seatno"" />"
.writeline "<checkboxes val=""chk_replacementseatno"" />"
.writeline "<checkboxes val=""chk_building"" />"
.writeline "<checkboxes val=""chk_extensionno"" />"
.writeline "<checkboxes val=""chk_empid"" />"
.writeline "<checkboxes val=""chk_department"" />"
.writeline "<checkboxes val=""chk_designation"" />"
.writeline "<checkboxes val=""chk_name"" />"
.writeline "<checkboxes val=""chk_loginname"" />"
.writeline "<checkboxes val=""chk_email"" />"
.writeline "<checkboxes val=""chk_mailboxsize"" />"
.writeline "<checkboxes val=""chk_mailboxstore"" />"
.writeline "<checkboxes val=""chk_notes"" />"
.writeline "<checkboxes val=""chk_computerserialno"" />"
.writeline "<checkboxes val=""chk_replacedmachine"" />"
.writeline "<checkboxes val=""chk_replacedcomputerserialno"" />"
.writeline "<checkboxes val=""chk_oupathcomputer"" />"
.writeline "<checkboxes val=""chk_computeros"" />"
.writeline "<checkboxes val=""chk_computerdescription"" />"
.writeline "<checkboxes val=""chk_computercreated"" />"
.writeline "<checkboxes val=""chk_mobileno"" />"
.writeline "<checkboxes val=""chk_company"" />"
.writeline "<checkboxes val=""chk_address"" />"
.writeline "<checkboxes val=""chk_city"" />"
.writeline "<checkboxes val=""chk_state"" />"
.writeline "<checkboxes val=""chk_zipcode"" />"
.writeline "<checkboxes val=""chk_country"" />"
.writeline "<checkboxes val=""chk_homephone"" />"
.writeline "<checkboxes val=""chk_manager"" />"
.writeline "<checkboxes val=""chk_whencreated"" />"
.writeline "<checkboxes val=""chk_oupathuser"" />"
.writeline "<checkboxes val=""chk_lastlogintimestamp"" />"
.writeline "<checkboxes val=""chk_groupmembership"" />"
.writeline "<checkboxes val=""chk_dgmembership"" />"
.writeline "<checkboxes val=""chk_managerlist"" />"
.writeline "<checkboxes val=""chk_subordinates"" />"
.writeline "</profile>"
.writeline "</root>"
.Close
end with
Set xmlDom = CreateObject("Microsoft.XMLDOM")
XmlDom.async = False
XmlDom.Load(strAnswer)
xmlDom.Save(strAnswer)
End If
Set xmlDom = CreateObject("Microsoft.XMLDOM")
xmlDom.async="false"
XmlDom.Load(strAnswer)
Set oNodes = XmlDom.selectNodes("//profile")
for n = 0 to oNodes.length - 1
set newOption = document.createElement("OPTION")
newOption.Text = oNodes(n).selectSingleNode("@val").Text
newOption.Value = oNodes(n).selectSingleNode("@val").Text
lst_ChkProfiles.Add newOption
next
Set f = Nothing
Set objFSO = Nothing
End Sub
Sub lst_chkprofiles_OnChange
UnCheckAllBoxes
strAnswer = fAppData & "\profile.xml"
Set xmlDom = CreateObject("Microsoft.XMLDOM")
xmlDom.async="false"
XmlDom.Load(strAnswer)
Set oNodes = XmlDom.selectNodes("//profile[@val=""" & lst_chkprofiles.Value & """]/checkboxes")
For i = 0 To oNodes.length - 1
execute(oNodes(i).selectSingleNode("@val").Text & ".Checked = True")
Next
TestToSeeWhatLinesAreHidden
End Sub
Sub DeleteFromCheckboxProfile
if lst_chkprofiles.Value <> "Default" then
strAnswer = fAppData & "\profile.xml"
Set xmlDom = CreateObject("Microsoft.XMLDOM")
xmlDom.async="false"
XmlDom.Load(strAnswer)
Set oNodes = XmlDom.selectNodes("//profile[@val=""" & lst_chkprofiles.Value & """]")
For Each objNode in oNodes
xmlDom.documentElement.removeChild _
(objNode)
Next
XmlDom.Save(strAnswer)
For Each objOption in lst_chkprofiles.Options
If objOption.Value = lst_chkprofiles.Value Then
objOption.RemoveNode
End If
Next
msgbox "Checkbox profile deleted."
lst_chkprofiles_OnChange
else
msgbox "You cannot delete the default profile."
end if
End Sub
Sub ModifyCurrentCheckboxProfile
if lst_chkprofiles.Value <> "Default" then
strAnswer = fAppData & "\profile.xml"
Set xmlDom = CreateObject("Microsoft.XMLDOM")
xmlDom.async="false"
XmlDom.Load(strAnswer)
strProfileName = lst_chkprofiles.Value
Set oNodes = XmlDom.selectNodes("//profile[@val=""" & lst_chkprofiles.Value & """]")
For Each objNode in oNodes
xmlDom.documentElement.removeChild _
(objNode)
Next
XmlDom.Save(strAnswer)
Const ForReading = 1
Const ForWriting = 2
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(strAnswer, ForReading)
Do Until objFile.AtEndOfStream
strLine = objFile.Readline
strLine = Trim(strLine)
If strLine <> "</root>" Then
strContents = strContents & strLine & vbCrLf
End If
Loop
objFile.Close
Set f = objFSO.OpenTextFile(strAnswer, ForWriting)
with f
.writeline strContents & vbTab & "<profile val=""" & strProfileName & """>"
if chk_selectall.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_selectall"" />"
if chk_seatno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_seatno"" />"
if chk_replacementseatno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_replacementseatno"" />"
if chk_building.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_building"" />"
if chk_extensionno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_extensionno"" />"
if chk_empid.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_empid"" />"
if chk_department.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_department"" />"
if chk_designation.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_designation"" />"
if chk_name.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_name"" />"
if chk_loginname.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_loginname"" />"
if chk_email.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_email"" />"
if chk_mailboxsize.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_mailboxsize"" />"
if chk_mailboxstore.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_mailboxstore"" />"
if chk_notes.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_notes"" />"
if chk_computerserialno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_computerserialno"" />"
if chk_replacedmachine.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_replacedmachine"" />"
if chk_replacedcomputerserialno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_replacedcomputerserialno"" />"
if chk_oupathcomputer.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_oupathcomputer"" />"
if chk_computeros.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_computeros"" />"
if chk_computerdescription.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_computerdescription"" />"
if chk_computercreated.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_computercreated"" />"
if chk_mobileno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_mobileno"" />"
if chk_company.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_company"" />"
if chk_address.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_address"" />"
if chk_city.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_city"" />"
if chk_state.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_state"" />"
if chk_zipcode.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_zipcode"" />"
if chk_country.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_country"" />"
if chk_homephone.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_homephone"" />"
if chk_manager.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_manager"" />"
if chk_whencreated.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_whencreated"" />"
if chk_oupathuser.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_oupathuser"" />"
if chk_lastlogintimestamp.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_lastlogintimestamp"" />"
if chk_groupmembership.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_groupmembership"" />"
if chk_dgmembership.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_dgmembership"" />"
if chk_managerlist.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_managerlist"" />"
if chk_subordinates.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_subordinates"" />"
.writeline vbTab & "</profile>"
.writeline "</root>"
.close
end with
msgbox "Checkbox profile modified."
else
msgbox "You cannot modify the default profile."
end if
End Sub
Sub AddToCheckboxProfile
strProfileName = window.prompt("Please enter a profile name.", "My profile name")
strAnswer = fAppData & "\profile.xml"
Const ForReading = 1
Const ForWriting = 2
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(strAnswer, ForReading)
Do Until objFile.AtEndOfStream
strLine = objFile.Readline
strLine = Trim(strLine)
If strLine <> "</root>" Then
strContents = strContents & strLine & vbCrLf
End If
Loop
objFile.Close
Set f = objFSO.OpenTextFile(strAnswer, ForWriting)
with f
.writeline strContents & vbTab & "<profile val=""" & strProfileName & """>"
if chk_selectall.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_selectall"" />"
if chk_seatno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_seatno"" />"
if chk_replacementseatno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_replacementseatno"" />"
if chk_building.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_building"" />"
if chk_extensionno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_extensionno"" />"
if chk_empid.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_empid"" />"
if chk_department.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_department"" />"
if chk_designation.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_designation"" />"
if chk_name.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_name"" />"
if chk_loginname.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_loginname"" />"
if chk_email.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_email"" />"
if chk_mailboxsize.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_mailboxsize"" />"
if chk_mailboxstore.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_mailboxstore"" />"
if chk_notes.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_notes"" />"
if chk_computerserialno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_computerserialno"" />"
if chk_replacedmachine.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_replacedmachine"" />"
if chk_replacedcomputerserialno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_replacedcomputerserialno"" />"
if chk_oupathcomputer.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_oupathcomputer"" />"
if chk_computeros.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_computeros"" />"
if chk_computerdescription.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_computerdescription"" />"
if chk_computercreated.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_computercreated"" />"
if chk_mobileno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_mobileno"" />"
if chk_company.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_company"" />"
if chk_address.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_address"" />"
if chk_city.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_city"" />"
if chk_state.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_state"" />"
if chk_zipcode.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_zipcode"" />"
if chk_country.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_country"" />"
if chk_homephone.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_homephone"" />"
if chk_manager.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_manager"" />"
if chk_whencreated.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_whencreated"" />"
if chk_oupathuser.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_oupathuser"" />"
if chk_lastlogintimestamp.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_lastlogintimestamp"" />"
if chk_groupmembership.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_groupmembership"" />"
if chk_dgmembership.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_dgmembership"" />"
if chk_managerlist.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_managerlist"" />"
if chk_subordinates.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_subordinates"" />"
.writeline vbTab & "</profile>"
.writeline "</root>"
.close
end with
set newOption = document.createElement("OPTION")
newOption.Text = strProfileName
newOption.Value = strProfileName
lst_ChkProfiles.Add newOption
lst_ChkProfiles.Value = strProfileName
End Sub
Sub AddToQueryBuilder
globalstrQueryBuilder = globalstrQueryBuilder & globalstrSearchField
if NOT chk_qbrecorder.Checked then
msgbox "The query has been added."
end if
End Sub
Sub QueryBuilderRecorder
if chk_qbrecorder.Checked then
msgbox "Query Builder is now recording."
else
msgbox "Query Builder has stopped recording." & vbCrLf & "Click OK to view the combined query."
RunQueryBuilder
end if
End Sub
Sub ViewQueryBuilder
if globalstrQueryBuilder <> "" then
msgbox "(|" & globalstrQueryBuilder & ")"
else
msgbox "There are no stored queries to view."
end if
End Sub
Sub RunQueryBuilder
globalStrSearchField = "(|" & globalstrQueryBuilder & ")"
globalstrSearchBtnPush = "FileOpen"
Submit_Form "FileOpen"
End Sub
Sub ClearQueryBuilder
globalstrQueryBuilder = ""
End Sub
Sub txt_EmailSubject_OnChange
For i = 0 to (txt_EmailSubject.Options.Length - 1)
If (txt_EmailSubject.Options(i).Selected) Then
strEmailTo = arrToSpecial(i)
strEmailCC = arrCCSpecial(i)
strEmailBody = arrBodySpecial(i)
strCheckBoxProfile = arrCheckBoxSpecial(i)
txt_EmailTo.Value = strEmailTo
txt_EmailCC.Value = strEmailCC
txt_EmailBody.Value = strEmailBody
For Each objOption in lst_chkprofiles.Options
If objOption.Value = strCheckBoxProfile Then
objOption.Selected = True
lst_chkprofiles_OnChange
End If
Next
End If
Next
End Sub
Sub PingComputer(name)
if name <> "" then
strComuptername = trim(name)
'Run PING command
Set objPingResults = GetObject("winmgmts:{impersonationLevel=impersonate}//./root/cimv2"). ExecQuery("SELECT * FROM Win32_PingStatus WHERE Address = '" & strComuptername & "'")
'Take ping reults and put into variable strPingResult
strPingResult = 0
For Each oPingResult In objPingResults
strPingResult = oPingResult.ResponseTime
strIPAddress = oPingResult.ProtocolAddress
Next
'Catch PINGS that do not have a result - typically this is for unreachable devices
if IsEmpty(strPingResult) then
strPingResult = 9999
end if
if IsNULL(strPingResult) then
strPingResult = 9999
end if
' Run ping again if first attempt fails
if strPingResult = 9999 then
'Run PING command
Set objPingResults = GetObject("winmgmts:{impersonationLevel=impersonate}//./root/cimv2"). ExecQuery("SELECT * FROM Win32_PingStatus WHERE Address = '" & strComuptername & "'")
'Take ping reults and put into variable strPingResult
strPingResult = 0
For Each oPingResult In objPingResults
strPingResult = oPingResult.ResponseTime
strIPAddress = oPingResult.ProtocolAddress
Next
'Catch PINGS that do not have a result - typically this is for unreachable devices
if IsEmpty(strPingResult) then
strPingResult = 9999
end if
if IsNULL(strPingResult) then
strPingResult = 9999
end if
end if
span_computerip.innerhtml = strIPAddress
if strPingResult = 9999 then
span_computeronline.innerhtml = "Offline"
else
span_computeronline.innerhtml = "Online"
end if
else
span_computerip.innerhtml = " "
span_computeronline.innerhtml = " "
end if
End Sub
Sub bt2Go_onclick()
'** Declarations:'
Dim OPR, DM, USR, strNTName, strUserDN, strNM, objUser, TNP, DENY, POS, NEG
Dim objNetwork, objShell
'** Objects:'
Set objNetwork = CreateObject("WScript.Network")
Set objShell = CreateObject("Wscript.Shell")
'** User/Domain:'
OPR = objNetwork.UserName
DM = objNetwork.UserDomain & "\"
'** Write username for the user that needs to be enabled or disabled:'
USR = InputBox("Username:", "Enable or Disable Active Directory User", _
"Write Username Here")
if USR = "" then
exit sub
End if
'** Prevent run-time errors:'
On Error Resume Next
'** Declare NameTranslate constants:'
Const ADS_NAME_INITTYPE_GC = 3
Const ADS_NAME_TYPE_NT4 = 3
Const ADS_NAME_TYPE_1779 = 1
'** Combine the user name and domain name:'
strNTName = DM & USR
strNT2 = DM & OPR
'** Translate operator name into DN:'
Set objTrans2 = CreateObject("NameTranslate")
objTrans2.Init ADS_NAME_INITTYPE_GC, ""
objTrans2.Set ADS_NAME_TYPE_NT4, strNT2
strUserDN2 = objTrans2.Get(ADS_NAME_TYPE_1779)
Set objUser2 = GetObject("LDAP://" & strUserDN2)
strUS3 = Mid(strUserDN2,4)
strUS4 = Split(strUS3, ",")
For i = LBound(strUS4) to UBound(strUS4)
strNM2 = strUS4(i)
Exit For
Next
'** Translate name into DN:'
Set objTrans = CreateObject("NameTranslate")
objTrans.Init ADS_NAME_INITTYPE_GC, ""
objTrans.Set ADS_NAME_TYPE_NT4, strNTName
strUserDN = objTrans.Get(ADS_NAME_TYPE_1779)
'** Do LDAP bind to object:'
Set objUser = GetObject("LDAP://" & strUserDN)
'** Get full name:'
strUS1 = Mid(strUserDN,4)
strUS2 = Split(strUS1, ",")
For i = LBound(strUS2) to UBound(strUS2)
strNM = strUS2(i)
Exit For
Next
'** If no error, enable or disable user:'
If Err = 0 Then
Const ADS_UF_ACCOUNTDISABLE = 2
intUAC = objUser.Get("userAccountControl")
objUser.Put "userAccountControl", intUAC XOR ADS_UF_ACCOUNTDISABLE
objUser.SetInfo
If intUAC AND ADS_UF_ACCOUNTDISABLE Then
POS = 1
Else
NEG = 1
End If
Else
objShell.Popup UCase(USR) & " was not found. Please try again.", _
5, "Unknown Username", 48
exit sub
End If
'** If no permission, give message:'
If Err = "-2147024891" Then
DENY = 1
objShell.Popup "You can not enable or disable this user.", _
5, "Permission Denied", 48
exit sub
End If
'** If no error, show result:'
If DENY <> 1 Then
If POS = 1 Then
MsgBox UCase(USR) & " were successfully enabled.", _
64, "User enabled by " & strNM2
End If
If NEG = 1 Then
MsgBox UCase(USR) & " were successfully disabled.", _
64, "User disabled by " & strNM2
End If
End If
End Sub
Sub bt1Go_onclick()
'** Declarations:'
Dim OPR, DM, USR, strNTName, strUserDN, strNM, objUser, TNP, EROR, ABS
Dim objNetwork, objShell, objFSO
'** Objects:'
Set objNetwork = CreateObject("WScript.Network")
Set objShell = CreateObject("Wscript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
'** User/Domain:'
OPR = objNetwork.UserName
DM = objNetwork.UserDomain & "\"
'** Type username for the user that needs password change:'
USR = InputBox("Username:", "Create Temporary Active Directory User Password", _
"Write Username Here")
if USR = "" then
exit sub
End if
'** Prevent run-time errors:'
On Error Resume Next
'** NameTranslate constants:'
Const ADS_NAME_INITTYPE_GC = 3
Const ADS_NAME_TYPE_NT4 = 3
Const ADS_NAME_TYPE_1779 = 1
'** Combine the user name and domain name:'
strNTName = DM & USR
strNT2 = DM & OPR
'** Translate operator name into DN:'
Set objTrans2 = CreateObject("NameTranslate")
objTrans2.Init ADS_NAME_INITTYPE_GC, ""
objTrans2.Set ADS_NAME_TYPE_NT4, strNT2
strUserDN2 = objTrans2.Get(ADS_NAME_TYPE_1779)
Set objUser2 = GetObject("LDAP://" & strUserDN2)
strUS3 = Mid(strUserDN2,4)
strUS4 = Split(strUS3, ",")
For i = LBound(strUS4) to UBound(strUS4)
strNM2 = strUS4(i)
Exit For
Next
'** Translate username into DN:'
Set objTrans = CreateObject("NameTranslate")
objTrans.Init ADS_NAME_INITTYPE_GC, ""
objTrans.Set ADS_NAME_TYPE_NT4, strNTName
If Err <> 0 Then
ABS = 1
End If
'** Execute if object is found:'
If ABS <> 1 Then
strUserDN = objTrans.Get(ADS_NAME_TYPE_1779)
'** Do LDAP bind to object:'
Set objUser = GetObject("LDAP://" & strUserDN)
'** Get full name:'
strUS1 = Mid(strUserDN,4)
strUS2 = Split(strUS1, ",")
For i = LBound(strUS2) to UBound(strUS2)
strNM = strUS2(i)
Exit For
Next
'** Assign password and parameters:'
If strNM <> "" Then
TNP = "changeme" & Mid(objFSO.GetTempName,4,4)
objUser.SetPassword TNP
If Err <> 0 Then
EROR = 1
End If
objUser.Put "pwdLastSet", 0
objUser.IsAccountLocked = False
objUser.SetInfo
End If
'** If no error, show new temporary password:'
If EROR <> 1 Then
MsgBox "New temporary password for " & UCase(USR) & " (" & strNM & "):" & _
vbCrLf & vbCrLf & TNP & vbCrLf, 64, "New Password, configured by " & strNM2
End If
End If
'** End if object not found:'
If ABS = 1 Then
MsgBox UCase(USR) & " was not found. Please try again.", _
48, "Unknown Username"
End If
'** If no permission, give message:'
If EROR = 1 Then
MsgBox "You can not change password for this user.", _
48, "Permission Denied"
End If
End Sub
Sub ImportFromExcel
on error resume next
boolEndofFile = False
Dim oDLG
Set oDLG = CreateObject("MSComDlg.CommonDialog")
if err.number > 0 then
err.clear
oDLG = window.prompt("Please enter the path and file name to open.", "D:\your-spreadsheet.xls")
if oDLG <> "" then
globalstrQueryBuilder = ""
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open(oDLG)
intRow = 2
Do Until boolEndofFile
'According to ticket Q__23804616, these are the fields that are in the spreadsheet;
'Emp ID,Seat No,Email ID,Full Name, NT Login,Machine Name
strCell1 = objExcel.Cells(intRow, 1).Value 'Must be the "Employee ID" field
strCell2 = objExcel.Cells(intRow, 2).Value 'Must be the "Seat No" field
strCell3 = objExcel.Cells(intRow, 3).Value 'Must be the "Email Address" field
strCell4 = objExcel.Cells(intRow, 4).Value 'Must be the "Full Name" field
strCell5 = objExcel.Cells(intRow, 5).Value 'Must be the "NT Login" field
strCell6 = objExcel.Cells(intRow, 6).Value 'Must be the "Machine Name" field
if strCell1 & strCell2 & strCell3 & strCell4 & strCell5 & strCell6 = "" then
boolEndofFile = True
else
if NOT IsEmpty(strCell1) then strValue = strValue & "(description=*" & strCell1 & "*)" 'Employee ID
if NOT IsEmpty(strCell2) then strValue = strValue & "(description=*" & strCell2 & "*)" 'Seat No
if NOT IsEmpty(strCell3) then strValue = strValue & "(mail=*" & strCell3 & "*)" 'Email Address
if NOT IsEmpty(strCell4) then strValue = strValue & "(cn=*" & strCell4 & "*)" 'Full Name
if NOT IsEmpty(strCell5) then strValue = strValue & "(samAccountName=*" & strCell5 & "*)" 'NT Login
if NOT IsEmpty(strCell6) then strValue = strValue & "(description=*" & strCell6 & "*)" 'Machine Name
end if
intRow = intRow + 1
Loop
objExcel.Quit
globalstrQueryBuilder = strValue
globalStrSearchField = "(|" & globalstrQueryBuilder & ")"
globalstrSearchBtnPush = "FileOpen"
Submit_Form "FileOpen"
End If
else
With oDLG
.DialogTitle = "Open"
.Filter = "Excel Workbook|*.xls"
.MaxFileSize = 255
.Flags = .Flags Or &H1000 'FileMustExist (OFN_FILEMUSTEXIST)
.ShowOpen
If .FileName <> "" Then
globalstrQueryBuilder = ""
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open(.FileName)
intRow = 2
Do Until boolEndofFile
strCell1 = objExcel.Cells(intRow, 1).Value 'Must be the "Employee ID" field
strCell2 = objExcel.Cells(intRow, 2).Value 'Must be the "Seat No" field
strCell3 = objExcel.Cells(intRow, 3).Value 'Must be the "Email Address" field
strCell4 = objExcel.Cells(intRow, 4).Value 'Must be the "Full Name" field
strCell5 = objExcel.Cells(intRow, 5).Value 'Must be the "NT Login" field
strCell6 = objExcel.Cells(intRow, 6).Value 'Must be the "Machine Name" field
if strCell1 & strCell2 & strCell3 & strCell4 & strCell5 & strCell6 = "" then
boolEndofFile = True
else
if NOT IsEmpty(strCell1) then strValue = strValue & "(description=*" & strCell1 & "*)" 'Employee ID
if NOT IsEmpty(strCell2) then strValue = strValue & "(description=*" & strCell2 & "*)" 'Seat No
if NOT IsEmpty(strCell3) then strValue = strValue & "(mail=*" & strCell3 & "*)" 'Email Address
if NOT IsEmpty(strCell4) then strValue = strValue & "(cn=*" & strCell4 & "*)" 'Full Name
if NOT IsEmpty(strCell5) then strValue = strValue & "(samAccountName=*" & strCell5 & "*)" 'NT Login
if NOT IsEmpty(strCell6) then strValue = strValue & "(description=*" & strCell6 & "*)" 'Machine Name
end if
intRow = intRow + 1
Loop
objExcel.Quit
globalstrQueryBuilder = strValue
globalStrSearchField = "(|" & globalstrQueryBuilder & ")"
globalstrSearchBtnPush = "FileOpen"
Submit_Form "FileOpen"
End If
End With
end if
Set oDLG = Nothing
End Sub
Sub About_OnClick
'Enter names as contibuters increase.
msgbox vbCRLF & "User and Computer Account Control" & vbCRLF & vbCRLF & "Written for Sharatha and contributed by;" & vbCRLF & vbCRLF & vbtab & _
"""rejoinder""" & vbCRLF & vbtab & _
" " & vbCRLF & vbtab & _
" " & vbCRLF & vbtab & _
" " & vbCRLF & vbtab & _
" " & vbCRLF & vbtab
End Sub
Sub RunHTA(NameOfHTA)
Set objShell = CreateObject("Wscript.Shell")
objShell.Run NameOfHTA
End Sub
Sub allowpings
if chk_allowpings.Checked then
boolAllowPing = True
else
boolAllowPing = False
end if
End Sub
Sub LookupLastLogin
if chk_LookupLastLogin.Checked then
boolLookupLastLogin = True
else
boolLookupLastLogin = False
end if
End Sub
Sub TableReports
if chk_TableReports.Checked then
boolTableReports = True
else
boolTableReports = False
end if
End Sub
Sub GetMailboxDetails
on error resume next
strExchangeServerQuery = "winmgmts://" & strEmailServer & "/root/cimv2/applications/exchange"
set serverList = GetObject(strExchangeServerQuery).InstancesOf("ExchangeServerState")
For each ExchangeServer in serverList
strExchangeQuery = "winmgmts://" & ExchangeServer.Name & "/root/MicrosoftExchangeV2"
strExchangeQuery = "winmgmts://" & strEmailServer & "/root/MicrosoftExchangeV2"
Set objMailboxes = GetObject(strExchangeQuery).InstancesOf("Exchange_Mailbox")
For each mailbox in objMailboxes
MailboxList.AddNew
MailboxList("legacyExchangeDN") = mailbox.LegacyDN
MailboxList("mailboxsize") = Round(mailbox.Size / 1024)
MailboxList.Update
Next
Next
MailboxList.MoveFirst
End Sub
Sub MailboxSizeCompare
oDLG = window.prompt("Enter the mailbox size limit in MB.", "1000")
if IsNumeric(oDLG) then
Submit_Form("MailboxSize:" & oDLG)
end if
End Sub
Sub DoCal(elTarget)
sRtn = showModalDialog("Calendar.htm","","center=yes;dialogWidth=160pt;dialogHeight=180pt")
Execute(elTarget & ".value = sRtn")
Detect_Search_Field(elTarget)
End Sub
Function GetOUMembers(OU)
strValue = ""
on error resume next
GroupMembershipDB.Filter = "MemberDistinguishedName LIKE '*OU=" & OU & "*'"
GroupMembershipDB.Sort = "SAMAccountName"
GroupMembershipDB.MoveFirst
Do While Not GroupMembershipDB.EOF
strValue = strValue & "(DistinguishedName=" & GroupMembershipDB.Fields.Item("MemberDistinguishedName").Value & ")"
GroupMembershipDB.MoveNext
Loop
if err.number > 0 then
GetOUMembers = "INVALID"
else
GetOUMembers = "(|" & strValue & ")"
End if
End Function
Function GetComputersForOSQuery(OS)
strValue = ""
strSearchField = "(operatingsystem=*" & OS & "*)"
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
boolFoundRecords = False
for each strDomain in arrDomainNames
' Search entire Active Directory domain.
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(&(objectCategory=computer)" & strSearchField & ")"
' Comma delimited list of attribute values to retrieve.
strAttributes = "cn,operatingsystem"
' Construct the LDAP syntax query.
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 1000
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False
' Run the query.
Set adoRecordset = adoCommand.Execute
' Enumerate the resulting recordset.
strDetails = ""
If Not adoRecordset.EOF Then
boolFoundRecords = True
Do Until adoRecordset.EOF
strValue = strValue & "(info=*" & adoRecordset.Fields("cn").Value & "*)"
adoRecordset.MoveNext
Loop
End if
next
if NOT boolFoundRecords then
GetComputersForOSQuery = "INVALID"
else
GetComputersForOSQuery = "(|" & strValue & ")"
End if
End Function
Function GetComputersForDateCreatedQuery(CreatedDate)
strValue = ""
strWhenCreated = Year(CreatedDate) & Right("0" & Month(CreatedDate), 2) & Right("0" & Day(CreatedDate), 2)
strSearchField = "(whenCreated>=" & strWhenCreated & "000000.0Z)(whenCreated<=" & strWhenCreated & "235959.0Z)"
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
boolFoundRecords = False
for each strDomain in arrDomainNames
' Search entire Active Directory domain.
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(&(objectCategory=computer)" & strSearchField & ")"
' Comma delimited list of attribute values to retrieve.
strAttributes = "cn,operatingsystem"
' Construct the LDAP syntax query.
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 1000
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False
' Run the query.
Set adoRecordset = adoCommand.Execute
' Enumerate the resulting recordset.
strDetails = ""
If Not adoRecordset.EOF Then
boolFoundRecords = True
Do Until adoRecordset.EOF
strValue = strValue & "(info=*" & adoRecordset.Fields("cn").Value & "*)"
adoRecordset.MoveNext
Loop
End if
next
if NOT boolFoundRecords then
GetComputersForDateCreatedQuery = "INVALID"
else
GetComputersForDateCreatedQuery = "(|" & strValue & ")"
End if
End Function
Function GetComputersBasedOnOU(OU)
strValue = ""
strSearchField = "(distinguishedName=*)"
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
boolFoundRecords = False
for each strDomain in arrDomainNames
' Search entire Active Directory domain.
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(&(objectCategory=computer)" & strSearchField & ")"
' Comma delimited list of attribute values to retrieve.
strAttributes = "cn,distinguishedName"
' Construct the LDAP syntax query.
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 1000
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False
' Run the query.
Set adoRecordset = adoCommand.Execute
' Enumerate the resulting recordset.
strDetails = ""
If Not adoRecordset.EOF Then
boolFoundRecords = True
Do Until adoRecordset.EOF
if InStr(adoRecordset.Fields("distinguishedName").Value,OU) > 0 then
strValue = strValue & "(info=*" & adoRecordset.Fields("cn").Value & "*)"
End if
adoRecordset.MoveNext
Loop
End if
next
if NOT boolFoundRecords then
GetComputersBasedOnOU = "INVALID"
else
GetComputersBasedOnOU = "(|" & strValue & ")"
End if
End Function
Sub txt_filtersecuritygroup_onKeyUP
on error resume next
if txt_filtersecuritygroup.Value <> "" then
Detect_Search_Field "txt_filtersecuritygroup"
Set objlst_groupnames = document.getElementById( "lst_groupnames" )
objlst_groupnames.ListItems.Clear
GroupMembershipDB.Filter = "samaccountname LIKE '*" & txt_filtersecuritygroup.Value & "*'"
GroupMembershipDB.Sort = "SAMAccountName"
GroupMembershipDB.MoveFirst
strLastGroupDN = ""
Do Until GroupMembershipDB.EOF
strNTName = GroupMembershipDB.Fields.Item("samaccountname").Value
strGroupType = GroupMembershipDB.Fields.Item("samaccounttype").Value
strPrimary = GroupMembershipDB.Fields.Item("PrimaryGroupToken").Value
strdistinguishedName = GroupMembershipDB.Fields.Item("distinguishedName").Value
intNumberOfMembers = dicGroupNumbers.Item(strdistinguishedName)
if strLastGroupDN <> strdistinguishedName then
Select Case strGroupType
Case "[GSG]", "[LSG]", "[USG]", "[Unknown]"
Set objListItem = objlst_groupnames.ListItems.Add
objListItem.Text = strNTName
objListItem.ListSubItems.Add.Text = intNumberOfMembers
objListItem.ListSubItems.Add.Text = strGroupType
objListItem.ListSubItems.Add.Text = strdistinguishedName
objListItem.ListSubItems.Add.Text = strPrimary
End Select
strLastGroupDN = strdistinguishedName
End if
GroupMembershipDB.MoveNext
Loop
span_GroupMembership.InnerHTML = "(" & lst_groupnames.ListItems.Count & ")"
end if
End Sub
Sub txt_filterdgmembership_onKeyUP
on error resume next
if txt_filterdgmembership.Value <> "" then
Detect_Search_Field "txt_filterdgmembership"
Set objlst_dgnames = document.getElementById( "lst_dgnames" )
objlst_dgnames.ListItems.Clear
GroupMembershipDB.Filter = "samaccountname LIKE '*" & txt_filterdgmembership.Value & "*'"
GroupMembershipDB.Sort = "SAMAccountName"
GroupMembershipDB.MoveFirst
strLastGroupDN = ""
Do Until GroupMembershipDB.EOF
strGroupType = GroupMembershipDB.Fields.Item("samaccounttype").Value
strNTName = GroupMembershipDB.Fields.Item("samaccountname").Value
strPrimary = GroupMembershipDB.Fields.Item("PrimaryGroupToken").Value
strdistinguishedName = GroupMembershipDB.Fields.Item("distinguishedName").Value
intNumberOfMembers = dicGroupNumbers.Item(strdistinguishedName)
if strLastGroupDN <> strdistinguishedName then
Select Case strGroupType
Case "[GDG]", "[LDG]", "[UDG]"
Set objListItem = objlst_dgnames.ListItems.Add
objListItem.Text = strNTName
objListItem.ListSubItems.Add.Text = intNumberOfMembers
objListItem.ListSubItems.Add.Text = strGroupType
objListItem.ListSubItems.Add.Text = strdistinguishedName
objListItem.ListSubItems.Add.Text = strPrimary
End Select
strLastGroupDN = strdistinguishedName
End if
GroupMembershipDB.MoveNext
Loop
span_groupmembership.InnerHTML = "(" & lst_dgnames.ListItems.Count & ")"
end if
End Sub
Sub txt_filtermanagerlist_onKeyUP
if txt_filtermanagerlist.Value <> "" then
Detect_Search_Field "txt_filtermanagerlist"
For Each objOption in lst_managerlist.Options
objOption.RemoveNode
Next
intManagers = 0
for each Manager in dicManagerList
if InStr(UCase(Manager),UCase(txt_filtermanagerlist.Value)) then
set newOption = document.createElement("OPTION")
newOption.Text = mid(Manager,4,instr(Manager,",")-4) & " (" & dicManagerList.Item(Manager) & ")"
newOption.Value = Manager
lst_managerlist.Add newOption
intManagers = intManagers + 1
end if
next
span_managerlist.InnerHTML = "(" & intManagers & ")"
end if
End Sub
Function GetMailboxStore(MailboxStore)
if MailboxStore <> "" OR NOT IsNull(MailboxStore) then
arrMailboxStoreString = Split(MailboxStore,"CN=")
GetMailboxStore = replace(arrMailboxStoreString(2),",","")
else
GetMailboxStore = ""
End if
End Function
Sub FillDomainComputers
On Error Resume Next
Const ADS_SCOPE_SUBTREE = 2
Set objlst_domaincomputers = document.getElementById( "lst_domaincomputers" )
objlst_domaincomputers.ListItems.Clear
Set objRootDSE = GetObject("LDAP://RootDSE")
strDNSDomain = objRootDSE.Get("defaultNamingContext")
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
adoCommand.Properties("Page Size") = 1000
adoCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
adoCommand.CommandText = "SELECT ADsPath FROM 'LDAP://" & strDNSDomain & "' WHERE objectCategory='organizationalUnit'"
Set objRecordSet = adoCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Set objOU = GetObject(objRecordSet.Fields("ADsPath").Value)
objOU.Filter = Array("Computer")
For Each objItem in objOU
strCN = objItem.CN
strDN = objItem.distinguishedName
DomainComputersDB.AddNew
DomainComputersDB("CN") = strCN
DomainComputersDB("DistinguishedName") = strDN
DomainComputersDB.Update
Set objListItem = objlst_domaincomputers.ListItems.Add
objListItem.Text = strCN
objListItem.ListSubItems.Add.Text = strDN
Next
objRecordSet.MoveNext
Loop
span_domaincomputers.InnerHTML = "(" & lst_domaincomputers.ListItems.Count & ")"
End Sub
Sub lst_domaincomputers_onDblClick
strComputer = lst_domaincomputers.SelectedItem.Text
txt_notes.Value = strComputer
Detect_Search_Field "txt_notes"
Submit_Form "Main"
End Sub
Sub txt_filterdomaincomputers_onKeyUP
on error resume next
if txt_filterdomaincomputers.Value <> "" then
Detect_Search_Field "txt_filterdomaincomputers"
Set objlst_domaincomputers = document.getElementById( "lst_domaincomputers" )
objlst_domaincomputers.ListItems.Clear
intDomainComputers = 0
DomainComputersDB.Filter = "CN LIKE '*" & txt_filterdomaincomputers.Value & "*'"
DomainComputersDB.Sort = "CN"
DomainComputersDB.MoveFirst
Do Until DomainComputersDB.EOF
strCN = DomainComputersDB.Fields.Item("CN").Value
strDN = DomainComputersDB.Fields.Item("DistinguishedName").Value
Set objListItem = objlst_domaincomputers.ListItems.Add
objListItem.Text = strCN
objListItem.ListSubItems.Add.Text = strDN
DomainComputersDB.MoveNext
Loop
span_domaincomputers.InnerHTML = "(" & lst_domaincomputers.ListItems.Count & ")"
else
populatedomaincomputers
end if
End Sub
Sub populatedomaincomputers
on error resume next
Set objlst_domaincomputers = document.getElementById( "lst_domaincomputers" )
objlst_domaincomputers.ListItems.Clear
intDomainComputers = 0
DomainComputersDB.Filter = ""
DomainComputersDB.Sort = "CN"
DomainComputersDB.MoveFirst
Do Until DomainComputersDB.EOF
strCN = DomainComputersDB.Fields.Item("CN").Value
strDN = DomainComputersDB.Fields.Item("DistinguishedName").Value
Set objListItem = objlst_domaincomputers.ListItems.Add
objListItem.Text = strCN
objListItem.ListSubItems.Add.Text = strDN
DomainComputersDB.MoveNext
Loop
span_domaincomputers.InnerHTML = "(" & lst_domaincomputers.ListItems.Count & ")"
End Sub
Sub ResetComputerPassword
if txt_notes.value <> "" then
DomainComputersDB.Filter = "CN='" & txt_notes.value & "'"
DomainComputersDB.MoveFirst
strLDAP = "LDAP://" & DomainComputersDB.Fields.Item("DistinguishedName").Value
set objComputer = GetObject(strLDAP)
objComputer.SetPassword txt_notes.value & "$"
else
msgbox "Please enter a valid computer name."
End if
End Sub
</script>
<script language ='javascript' for ='lst_groupnames' event ='ColumnClick(ColumnHeader)'>
if(ColumnHeader.SubItemIndex == lst_groupnames.SortKey)
{
if(lst_groupnames.SortOrder == 0) lst_groupnames.SortOrder = 1
else lst_groupnames.SortOrder = 0
}
else
{
lst_groupnames.SortKey = ColumnHeader.SubItemIndex
if(lst_groupnames.SortOrder == 0) lst_groupnames.SortOrder = 1
else lst_groupnames.SortOrder == 0
}
</script>
<script language ='javascript' for ='lst_groupnames' event ='DblClick'>
var theValue = ""
theValue = SelectedItem.Text + SelectedItem.Key
for(i = 1; i <= SelectedItem.ListSubItems.Count; i ++) theValue = theValue + "\n" + SelectedItem.ListSubItems(i).Text
Submit_Form('Group')
</script>
<script language ='javascript' for ='lst_dgnames' event ='ColumnClick(ColumnHeader)'>
if(ColumnHeader.SubItemIndex == lst_dgnames.SortKey)
{
if(lst_dgnames.SortOrder == 0) lst_dgnames.SortOrder = 1
else lst_dgnames.SortOrder = 0
}
else
{
lst_dgnames.SortKey = ColumnHeader.SubItemIndex
if(lst_dgnames.SortOrder == 0) lst_dgnames.SortOrder = 1
else lst_dgnames.SortOrder == 0
}
</script>
<script language ='javascript' for ='lst_dgnames' event ='DblClick'>
var theValue = ""
theValue = SelectedItem.Text + SelectedItem.Key
for(i = 1; i <= SelectedItem.ListSubItems.Count; i ++) theValue = theValue + "\n" + SelectedItem.ListSubItems(i).Text
Submit_Form('DistributionGroup')
</script>
<script language ='javascript' for ='lst_domaincomputers' event ='ColumnClick(ColumnHeader)'>
if(ColumnHeader.SubItemIndex == lst_domaincomputers.SortKey)
{
if(lst_domaincomputers.SortOrder == 0) lst_domaincomputers.SortOrder = 1
else lst_domaincomputers.SortOrder = 0
}
else
{
lst_domaincomputers.SortKey = ColumnHeader.SubItemIndex
if(lst_domaincomputerss.SortOrder == 0) lst_domaincomputers.SortOrder = 1
else lst_domaincomputers.SortOrder == 0
}
</script>
<script language ='javascript' for ='lst_domaincomputers' event ='DblClick'>
var theValue = ""
theValue = SelectedItem.Text + SelectedItem.Key
for(i = 1; i <= SelectedItem.ListSubItems.Count; i ++) theValue = theValue + "\n" + SelectedItem.ListSubItems(i).Text
lst_domaincomputers_onDblClick()
</script>
<STYLE TYPE="text/css">
<!--
body {background-color: menu;color: menutext;}
td {font-family: MS Sans Serif;font-size: 8pt;}
input {font-family: MS Sans Serif;font-size: 8pt;}
button {font-family: MS Sans Serif;font-size: 8pt;}
option {font-family: MS Sans Serif;font-size: 8pt;}
select {font-family: MS Sans Serif;font-size: 8pt;}
.submenu {position:absolute;top=35;
background-color:Menu;
border="1px outset";}
.MenuIn {border:"1px inset";cursor:default;}
.Menuover {border:"1px outset";cursor:default;}
.Menuout {}
.Submenuover {background-color:highlight;color:highlighttext;cursor:default;}
.Submenuout {background-color:Menu;color:MenuText;cursor:default;}
.HideFromGUI {display:none;}
-->
</STYLE>
<body>
<!-- Main menu -->
<TABLE id=MenuTable height=25><TR>
<TD onclick='ShowSubMenu Me,MyFileMenu'
onmouseover='MenuOver Me,MyFileMenu'
onmouseout='MenuOut Me'> Query </TD>
<TD >|</TD>
<TD onclick='ShowSubMenu Me,MyEditMenu'
onmouseover='MenuOver Me,MyEditMenu'
onmouseout='MenuOut Me'> Reports </TD>
<TD >|</TD>
<TD onclick='ShowSubMenu Me,QueryBuilderMenu'
onmouseover='MenuOver Me,QueryBuilderMenu'
onmouseout='MenuOut Me'> Query Builder </TD>
<TD >|</TD>
<TD onclick='ShowSubMenu Me,ToolsMenu'
onmouseover='MenuOver Me,ToolsMenu'
onmouseout='MenuOut Me'> Tools </TD>
<TD >|</TD>
<TD > Checkbox Profile <select id="lst_chkprofiles" name="lst_chkprofiles">
</select>
</TD>
<!-- Main menu, Checkbox profile tools -->
<TD onclick='AddToCheckboxProfile'
onmouseover='MenuOver Me,MyFileMenu'
onmouseout='MenuOut Me' NOWRAP> [+]Add</TD>
<TD onclick='DeleteFromCheckboxProfile'
onmouseover='MenuOver Me,MyFileMenu'
onmouseout='MenuOut Me' NOWRAP> [-]Delete</TD>
<TD onclick='ModifyCurrentCheckboxProfile'
onmouseover='MenuOver Me,MyFileMenu'
onmouseout='MenuOut Me' NOWRAP> [!]Modify</TD>
<TD >|</TD>
<TD onclick='About_OnClick'
onmouseover='MenuOver Me,MyFileMenu'
onmouseout='MenuOut Me'> About</TD>
<TD >|</TD>
<TD onclick="HideMenu" width="100%" border="2"></TD>
</TR></TABLE>
<!-- Drop down for QUery -->
<TABLE ID=MyFileMenu class=submenu style="left=10;display:none;">
<TR><TD onclick="HideMenu:open"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Open</TD></TR>
<TR><TD onclick="HideMenu:importfromexcel"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Import from Excel</TD></TR>
<TR><TD onclick="HideMenu:save"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Save</TD></TR>
<TR><TD onclick="HideMenu:saveAs"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Save As</TD></TR>
<TR><TD><HR></TD></TR>
<TR><TD onclick="HideMenu:window.close"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Quit</TD></TR>
</TABLE>
<!-- Drop down for Reports -->
<TABLE ID=MyEditMenu class=submenu style="left=50;display:none;">
<TR><TD onclick="HideMenu:Email_This_Record"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Email This Record</TD></TR>
<TR><TD onclick="HideMenu:Email_All_Records"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Email All Records</TD></TR>
<TR><TD onclick="HideMenu:Email_As_Attachment"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Email as Attachment</TD></TR>
<TR><TD><HR></TD></TR>
<TR><TD onclick="HideMenu:RunScript"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Save to</TD></TR>
<TR><TD><HR></TD></TR>
<TR><TD onclick="HideMenu:ClickTheSpecialReportButton"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> All Disabled Users</TD></TR>
<TR><TD onclick="HideMenu:SpecialReportDisabledUsersToday"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Disabled Users Last Modified Today</TD></TR>
<TR><TD onclick="HideMenu:SpecialReportDisabledUsersSomeDay"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Disabled Users Last Modified...</TD></TR>
<TR><TD onclick="HideMenu:SpecialReportNewUsersToday"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> New Users Created Today</TD></TR>
<TR><TD><HR></TD></TR>
<TR><TD onclick="HideMenu:Submit_Form('Logon:7')"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Not logged in for 1 week</TD></TR>
<TR><TD onclick="HideMenu:Submit_Form('Logon:30')"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Not logged in for 1 month</TD></TR>
<TR><TD onclick="HideMenu:Submit_Form('Logon:60')"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Not logged in for 2 months</TD></TR>
<TR><TD><HR></TD></TR>
<TR><TD onclick="HideMenu:MailboxSizeCompare"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Users with mailbox size over...</TD></TR>
</TABLE>
<!-- Drop down for Query Builder -->
<TABLE ID=QueryBuilderMenu class=submenu style="left=97;display:none;">
<TR><TD onclick="HideMenu:AddToQueryBuilder"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Add recent query to Query Builder</TD></TR>
<TR><TD onclick="HideMenu:QueryBuilderRecorder"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Query Builder Recorder<input type="checkbox" id="chk_qbrecorder" name="chk_qbrecorder"></TD></TR>
<TR><TD onclick="HideMenu:ViewQueryBuilder"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> View Query Builder</TD></TR>
<TR><TD onclick="HideMenu:RunQueryBuilder"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Run Query Builder</TD></TR>
<TR><TD onclick="HideMenu:ClearQueryBuilder"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Clear Query Builder</TD></TR>
</TABLE>
<!-- Drop down for Tools -->
<TABLE ID=ToolsMenu class=submenu style="left=170;display:none;">
<TR><TD onclick="HideMenu:allowpings"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Allow Pings<input type="checkbox" id="chk_allowpings" name="chk_allowpings"></TD></TR>
<TR><TD onclick="HideMenu:LookupLastLogin"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Look up last login<input type="checkbox" id="chk_LookupLastLogin" name="chk_LookupLastLogin"></TD></TR>
<TR><TD onclick="HideMenu:tablereports"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Invert emails to table format<input type="checkbox" id="chk_tablereports" name="chk_tablereports"></TD></TR>
<TR><TD><HR></TD></TR>
<TR><TD onclick="HideMenu:RunHTA('HTA1.HTA')"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Launch HTA 1</TD></TR>
<TR><TD onclick="HideMenu:RunHTA('HTA2.HTA')"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Launch HTA 2</TD></TR>
<TR><TD onclick="HideMenu:RunHTA('Q_23768297.hta')"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Add Users to Groups</TD></TR>
</TABLE>
<hr>
<table width="100%" border="0" onclick="HideMenu">
<tr>
<td align="left" colspan="2" valign="top">
<table border="0" padding="1">
<tr>
<td>
<fieldset>
<LEGEND>Email Settings</LEGEND>
<table border="0">
<tr><td>To:</td><td><button onclick="ShowDialogTo">Resolve</button></td><td><input type="text" id="txt_EmailTo" name="txt_EmailTo" size="50"><input type="hidden" id="txt_EmailToHidden" name="txt_EmailToHidden" size="50"><br></td></td><td rowspan="4" valign="top">Email Body:</td><td rowspan="3" valign="top"><textarea id="txt_EmailBody" name="txt_EmailBody" rows=5 cols=40></TEXTAREA></td></tr>
<tr><td>CC:</td><td><button onclick="ShowDialogCC">Resolve</button></td><td><input type="text" id="txt_EmailCC" name="txt_EmailCC" size="50"><input type="hidden" id="txt_EmailCCHidden" name="txt_EmailCCHidden" size="50"><br></td></tr>
<tr><td>Email Subject:</td><td></td><td><select id="txt_EmailSubject" name="txt_EmailSubject"></select></td></tr>
</table>
</fieldset>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="left" valign="top" width="38%">
<table border="0">
<tr>
<td>
</td>
<td>
<input type="checkbox" id="chk_selectall" name="chk_selectall" checked=True onclick="vbs:SelectAllCheck">Select/Deselect All
</td>
</tr>
<tr id=tr_seatno>
<td>
Seat No:
</td>
<td>
<input type="checkbox" id="chk_seatno" name="chk_seatno" checked=True><input type="text" size="40" id="txt_seatno" name="txt_seatno" onkeypress="vbs:Detect_Search_Field('txt_seatno')">
</td>
</tr>
<tr id=tr_replacementseatno>
<td>
Replacement Seat No:
</td>
<td>
<input type="checkbox" id="chk_replacementseatno" name="chk_replacementseatno" checked=True><input type="text" size="40" id="txt_replacementseatno" name="txt_replacementseatno">
</td>
</tr>
<tr id=tr_building>
<td>
Building:
</td>
<td>
<input type="checkbox" id="chk_building" name="chk_building" checked=True><input type="text" size="40" id="txt_building" name="txt_building" onkeypress="vbs:Detect_Search_Field('txt_building')">
</td>
</tr>
<tr id=tr_extensionno>
<td>
Extension No:
</td>
<td>
<input type="checkbox" id="chk_extensionno" name="chk_extensionno" checked=True><input type="text" size="40" id="txt_extensionno" name="txt_extensionno" onkeypress="vbs:Detect_Search_Field('txt_extensionno')">
</td>
</tr>
<tr id=tr_empid>
<td>
Emp ID:
</td>
<td>
<input type="checkbox" id="chk_empid" name="chk_empid" checked=True><input type="text" size="10" id="txt_empid" name="txt_empid" onkeypress="vbs:Detect_Search_Field('txt_empid')">
</td>
</tr>
<tr id=tr_department>
<td>
Department:
</td>
<td>
<input type="checkbox" id="chk_department" name="chk_department" checked=True><input type="text" size="50" id="txt_department" name="txt_department" onkeypress="vbs:Detect_Search_Field('txt_department')">
</td>
</tr>
<tr id=tr_designation>
<td>
Designation:
</td>
<td>
<input type="checkbox" id="chk_designation" name="chk_designation" checked=True><input type="text" size="50" id="txt_designation" name="txt_designation" onkeypress="vbs:Detect_Search_Field('txt_designation')">
</td>
</tr>
<tr id=tr_name>
<td>
User Name:
</td>
<td>
<input type="checkbox" id="chk_name" name="chk_name" checked=True><input type="text" size="40" id="txt_name" name="txt_name" onkeypress="vbs:Detect_Search_Field('txt_name')">
<span id="span_userorcontact">
</span>
</td>
</tr>
<tr id=tr_loginname>
<td>
Login Name:
</td>
<td>
<input type="checkbox" id="chk_loginname" name="chk_loginname" checked=True><input type="text" size="40" id="txt_loginname" name="txt_loginname" onkeypress="vbs:Detect_Search_Field('txt_loginname')">
<span id="span_enabled">
</span>
</td>
</tr>
<tr id=tr_email>
<td>
Email Address:
</td>
<td>
<input type="checkbox" id="chk_email" name="chk_email" checked=True><input type="text" size="50" id="txt_email" name="txt_email" onkeypress="vbs:Detect_Search_Field('txt_email')">
</td>
</tr>
<tr id=tr_mailboxsize>
<td>
Mailbox Size (MB):
</td>
<td>
<input type="checkbox" id="chk_mailboxsize" name="chk_mailboxsize" checked=True><input type="text" size="20" id="txt_mailboxsize" name="txt_mailboxsize" onkeypress="vbs:Detect_Search_Field('txt_mailboxsize')">
</td>
</tr>
<tr id=tr_mailboxstore>
<td>
Mailbox Store:
</td>
<td>
<input type="checkbox" id="chk_mailboxstore" name="chk_mailboxstore" checked=True><input type="text" size="50" id="txt_mailboxstore" name="txt_mailboxstore" onkeypress="vbs:Detect_Search_Field('txt_mailboxstore')">
</td>
</tr>
<tr id=tr_mobileno>
<td>
Mobile Number:
</td>
<td>
<input type="checkbox" id="chk_mobileno" name="chk_mobileno" checked=True><input type="text" size="20" id="txt_mobileno" name="txt_mobileno" onkeypress="vbs:Detect_Search_Field('txt_mobileno')">
</td>
</tr>
<tr id=tr_company>
<td>
Company:
</td>
<td>
<input type="checkbox" id="chk_company" name="chk_company" checked=True><input type="text" size="20" id="txt_company" name="txt_company" onkeypress="vbs:Detect_Search_Field('txt_company')">
</td>
</tr>
<tr id=tr_address>
<td>
Address:
</td>
<td>
<input type="checkbox" id="chk_address" name="chk_address" checked=True><input type="text" size="20" id="txt_address" name="txt_address" onkeypress="vbs:Detect_Search_Field('txt_address')">
</td>
</tr>
<tr id=tr_city>
<td>
City:
</td>
<td>
<input type="checkbox" id="chk_city" name="chk_city" checked=True><input type="text" size="20" id="txt_city" name="txt_city" onkeypress="vbs:Detect_Search_Field('txt_city')">
</td>
</tr>
<tr id=tr_state>
<td>
State:
</td>
<td>
<input type="checkbox" id="chk_state" name="chk_state" checked=True><input type="text" size="20" id="txt_state" name="txt_state" onkeypress="vbs:Detect_Search_Field('txt_state')">
</td>
</tr>
<tr id=tr_zipcode>
<td>
Zip Code:
</td>
<td>
<input type="checkbox" id="chk_zipcode" name="chk_zipcode" checked=True><input type="text" size="20" id="txt_zipcode" name="txt_zipcode" onkeypress="vbs:Detect_Search_Field('txt_zipcode')">
</td>
</tr>
<tr id=tr_country>
<td>
Country:
</td>
<td>
<input type="checkbox" id="chk_country" name="chk_country" checked=True><input type="text" size="20" id="txt_country" name="txt_country" onkeypress="vbs:Detect_Search_Field('txt_country')">
  Must search by 2 letter country code
</td>
</tr>
<tr id=tr_homephone>
<td>
Home Phone:
</td>
<td>
<input type="checkbox" id="chk_homephone" name="chk_homephone" checked=True><input type="text" size="20" id="txt_homephone" name="txt_homephone" onkeypress="vbs:Detect_Search_Field('txt_homephone')">
</td>
</tr>
<tr id=tr_manager>
<td>
Manager:
</td>
<td>
<input type="checkbox" id="chk_manager" name="chk_manager" checked=True><input type="hidden" size="20" id="txt_manager" name="txt_manager"><input type="text" size="20" id="txt_managerseen" name="txt_managerseen" onkeypress="vbs:Detect_Search_Field('txt_managerseen')">
</td>
</tr>
<tr id=tr_whencreated>
<td>
Date Created:
</td>
<td>
<input type="checkbox" id="chk_whencreated" name="chk_whencreated" checked=True><input type="text" size="40" id="txt_whencreated" name="txt_whencreated" onkeypress="vbs:Detect_Search_Field('txt_whencreated')"><input type=button value="Pick" onclick="DoCal('txt_whencreated')">
</td>
</tr>
<tr id=tr_oupathuser>
<td>
OU Path:
</td>
<td>
<input type="checkbox" id="chk_oupathuser" name="chk_oupathuser" checked=True><input type="text" size="50" id="txt_oupathuser" name="txt_oupathuser" onkeypress="vbs:Detect_Search_Field('txt_oupathuser')">
</td>
</tr>
<tr id=tr_lastlogintimestamp>
<td>
Last Login:
</td>
<td>
<input type="checkbox" id="chk_lastlogintimestamp" name="chk_lastlogintimestamp" checked=True><input type="text" size="50" id="txt_lastlogintimestamp" name="txt_lastlogintimestamp" onkeypress="vbs:Detect_Search_Field('txt_lastlogintimestamp')">
</td>
</tr>
<tr>
<td colspan="2" align="center">
<br>Showing record 
<span id="span_currentrecord">
0
</span>
of
<span id="span_totalrecords">
0
</span>
<br><br>
<input type="button" value='||< First' name='btnFirstEvent' onClick='vbs:First_Event'>
<input type="button" value='<< Previous' name='btnPreviousEvent' onClick='vbs:Previous_Event'>
<input type="button" value='Next >>' name='btnNextEvent' onClick='vbs:Next_Event'>
<input type="button" value='Last >||' name='btnLastEvent' onClick='vbs:Last_Event'><br><br>
<input type="button" value='Email this record' name='btnEmailThisRecord' onClick='vbs:Email_This_Record'>
<input type="button" value='Email all records' name='btnEmailAllRecords' onClick='vbs:Email_All_Records'>
<input type="button" value='Email as attachment' name='btnEmailAsAttachment' onClick='vbs:Email_As_Attachment'><br><br>
<input type="button" value='Clear Form' name='btnClearForm' onClick='vbs:Clear_Form("resetGroupLists")'>
<input type="submit" value="Submit" name="btn_submit" onClick="vbs:Submit_Form('Main')">
<input id="runbutton" class="button" type="button" value="Save to" name="run_button" onClick="Runscript">
<input id="runbutton" class="button" type="button" value="Change PWD" name="bt1go">
<input id="runbutton" class="button" type="button" value="Enable/Disable User" name="bt2go">
</td>
</tr>
</table>
</td>
<td align="left" valign="top" width="31%">
<fieldset>
<LEGEND>Computer Information</LEGEND>
<table>
<tr id=tr_notes>
<td valign="top">
Machine Name:
</td>
<td>
<input type="checkbox" id="chk_notes" name="chk_notes" checked=True><input type="text" size="40" id="txt_notes" name="txt_notes" onkeypress="vbs:Detect_Search_Field('txt_notes')"><input type="button" value='Reset' name='btnResetComputerPassword' onClick='vbs:ResetComputerPassword'>
<br>IP: <span id="span_computerip"> </span><br>
Status: <span id="span_computeronline"> </span>
</td>
</tr>
<tr id=tr_computerserialno>
<td>
Serial No:
</td>
<td>
<input type="checkbox" id="chk_computerserialno" name="chk_computerserialno" checked=True><input type="text" size="40" id="txt_computerserialno" name="txt_computerserialno" onkeypress="vbs:Detect_Search_Field('txt_computerserialno')">
</td>
</tr>
<tr id=tr_replacedmachine>
<td>
Replaced Machine:
</td>
<td>
<input type="checkbox" id="chk_replacedmachine" name="chk_replacedmachine" checked=True><input type="text" size="40" id="txt_replacedmachine" name="txt_replacedmachine">
</td>
</tr>
<tr id=tr_replacedcomputerserialno>
<td>
Replaced Serial No:
</td>
<td>
<input type="checkbox" id="chk_replacedcomputerserialno" name="chk_replacedcomputerserialno" checked=True><input type="text" size="40" id="txt_replacedcomputerserialno" name="txt_replacedcomputerserialno">
</td>
</tr>
<tr id=tr_oupathcomputer>
<td>
OU Path:
</td>
<td>
<input type="checkbox" id="chk_oupathcomputer" name="chk_oupathcomputer" checked=True><input type="text" size="40" id="txt_oupathcomputer" name="txt_oupathcomputer" onkeypress="vbs:Detect_Search_Field('txt_oupathcomputer')">
</td>
</tr>
<tr id=tr_computeros>
<td>
Computer OS:
</td>
<td>
<input type="checkbox" id="chk_computeros" name="chk_computeros" checked=True><input type="text" size="19" id="txt_computeros" name="txt_computeros" onkeypress="vbs:Detect_Search_Field('txt_computeros')">
<input type="text" size="18" id="txt_computerservicepack" name="txt_computerservicepack" onkeypress="vbs:Detect_Search_Field('txt_computerservicepack')">
</td>
</tr>
<tr id=tr_computerdescription>
<td>
Description:
</td>
<td>
<input type="checkbox" id="chk_computerdescription" name="chk_computerdescription" checked=True><input type="text" size="40" id="txt_computerdescription" name="txt_computerdescription" onkeypress="vbs:Detect_Search_Field('txt_computerdescription')">
</td>
</tr>
<tr id=tr_computercreated>
<td>
Created:
</td>
<td>
<input type="checkbox" id="chk_computercreated" name="chk_computercreated" checked=True><input type="text" size="40" id="txt_computercreated" name="txt_computercreated" onkeypress="vbs:Detect_Search_Field('txt_computercreated')"><input type=button value="Pick" onclick="DoCal('txt_computercreated')">
</td>
</tr>
</table>
</fieldset>
<br><br>
<fieldset id=tr_domaincomputers>
<LEGEND><!--<input type="checkbox" id="chk_domaincomputers" name="chk_domaincomputers" checked=True>-->Domain Computers <span id="span_domaincomputers"></span></LEGEND>
<OBJECT id="lst_domaincomputers" name="lst_domaincomputers" classid="clsid:BDD1F04B-858B-11D1-B16A-00C0F0283628"></OBJECT>
</select>
<br>Filter: <input type="text" size="40" id="txt_filterdomaincomputers" name="txt_filterdomaincomputers">
</fieldset>
<br><br>
</td>
<td align="left" valign="top" width="31%">
<fieldset id=tr_groupmembership>
<LEGEND><input type="checkbox" id="chk_groupmembership" name="chk_groupmembership" checked=True>Group Membership <span id="span_groupmembership"></span></LEGEND>
<OBJECT id="lst_groupnames" name="lst_groupnames" classid="clsid:BDD1F04B-858B-11D1-B16A-00C0F0283628"></OBJECT>
</select>
<br>Filter: <input type="text" size="40" id="txt_filtersecuritygroup" name="txt_filtersecuritygroup">
</fieldset>
<br><br>
<fieldset id=tr_dgmembership>
<LEGEND><input type="checkbox" id="chk_dgmembership" name="chk_dgmembership" checked=True>Distribution Group Membership <span id="span_dgmembership"></span></LEGEND>
<OBJECT id="lst_dgnames" name="lst_dgnames" classid="clsid:BDD1F04B-858B-11D1-B16A-00C0F0283628"></OBJECT>
</select>
<br>Filter: <input type="text" size="40" id="txt_filterdgmembership" name="txt_filterdgmembership">
</fieldset>
<br><br>
<fieldset id=tr_managerlist>
<LEGEND><input type="checkbox" id="chk_managerlist" name="chk_managerlist" checked=True>Manager <span id="span_managerlist"></span></LEGEND>
<select size="8" id="lst_managerlist" name="lst_managerlist" onDblClick="vbs:Submit_Form('ManagerList')">
</select>
<br>Filter: <input type="text" size="40" id="txt_filtermanagerlist" name="txt_filtermanagerlist">
</fieldset>
<br><br>
<fieldset id=tr_subordinates>
<LEGEND><input type="checkbox" id="chk_subordinates" name="chk_subordinates" checked=True>Subordinates <span id="span_subordinates"></span></LEGEND>
<select size="8" id="lst_subordinates" name="lst_subordinates" onDblClick="vbs:Submit_Form('Subordinate')">
</select>
</fieldset>
</td>
</tr>
</table>
</body>
1. You gave me a code that can add users to Distribution and security groups. Can that code be added to the below. Code. So i can do both in one.
Done.
Added menu item under Tools to Add Users to Groups. This points to the script attached. Please name the script below as "Q_23768297.hta".
Done.
Added menu item under Tools to Add Users to Groups. This points to the script attached. Please name the script below as "Q_23768297.hta".
<head>
<title>User Information</title>
<HTA:APPLICATION
APPLICATIONNAME="User Information"
BORDER="thin"
SCROLL="yes"
ID="oHTAAddUserToGroups"
>
<APPLICATION:HTA>
</head>
<script language="VBScript">
Dim strOU, strDomain, arrDomainNames
'Enter the OU you want to get groups from
strOU = "OU=Some OU,DC=xyz,DC=com"
'Enter the domain name where the users can be found
strDomain = "YOURDOMAIN"
Sub Window_OnLoad
if strOU = "" then GetDomainNames
FillGroupMembershipList
End Sub
Sub GetDomainNames
set objRootDSE = GetObject("LDAP://RootDSE")
strBase = "<LDAP://cn=Partitions," & _
objRootDSE.Get("ConfigurationNamingContext") & ">;"
strFilter = "(&(objectcategory=crossRef)(systemFlags=3));"
strAttrs = "name,trustParent,nCName,dnsRoot,distinguishedName;"
strScope = "onelevel"
set objConn = CreateObject("ADODB.Connection")
objConn.Provider = "ADsDSOObject"
objConn.Open "Active Directory Provider"
set objRS = objConn.Execute(strBase & strFilter & strAttrs & strScope)
objRS.MoveFirst
set arrDomainNames = CreateObject("Scripting.Dictionary")
set dicDomainHierarchy = CreateObject("Scripting.Dictionary")
set dicDomainRoot = CreateObject("Scripting.Dictionary")
while not objRS.EOF
dicDomainRoot.Add objRS.Fields("name").Value, objRS.Fields("nCName").Value
if objRS.Fields("trustParent").Value <> "" then
arrDomainNames.Add objRS.Fields("name").Value, 0
set objDomainParent = GetObject("LDAP://" & objRS.Fields("trustParent").Value)
dicDomainHierarchy.Add objRS.Fields("name").Value,objDomainParent.Get("name")
else
arrDomainNames.Add objRS.Fields("name").Value, 1
end if
objRS.MoveNext
wend
for each strDomain in arrDomainNames
'msgbox strDomain
next
End Sub
Sub FillGroupMembershipList
set newOption = document.createElement("OPTION")
newOption.Text = ""
newOption.Value = ""
lst_distributiongroupnames.Add newOption
set newOption = document.createElement("OPTION")
newOption.Text = ""
newOption.Value = ""
lst_groupnames.Add newOption
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
strSearchField = "(distinguishedname=*)"
if strOU = "" then
for each Domain in arrDomainNames
strBase = "<LDAP://" & Domain & ">"
strFilter = "(&(objectCategory=group)" & strSearchField & ")"
strAttributes = "cn,distinguishedName,primaryGroupID,samaccounttype"
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 100
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False
adoCommand.Properties("Sort On") = "cn"
Set adoRecordset = adoCommand.Execute
If Not adoRecordset.EOF Then
Do Until adoRecordset.EOF
strNTName = adoRecordset.Fields("cn").Value
strGroupType = adoRecordset.Fields("samaccounttype").Value
strPrimary = adoRecordset.Fields("primaryGroupID").Value
strdistinguishedName = adoRecordset.Fields("distinguishedname").Value
Select Case strGroupType
Case 2,268435457,4,536870913,8,268435457 'Distribution Groups
set newOption = document.createElement("OPTION")
newOption.Text = strNTName
newOption.Value = strPrimary & ";" & strdistinguishedName
lst_distributiongroupnames.Add newOption
Case -2147483646,268435456,-2147483644,536870912,-2147483640,268435456 'Security Groups
set newOption = document.createElement("OPTION")
newOption.Text = strNTName
newOption.Value = strPrimary & ";" & strdistinguishedName
lst_groupnames.Add newOption
End Select
adoRecordset.MoveNext
Loop
End If
next
else
strBase = "<LDAP://" & strOU & ">"
strFilter = "(&(objectCategory=group)" & strSearchField & ")"
strAttributes = "cn,distinguishedName,primaryGroupID,samaccounttype"
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 100
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False
adoCommand.Properties("Sort On") = "cn"
Set adoRecordset = adoCommand.Execute
If Not adoRecordset.EOF Then
Do Until adoRecordset.EOF
strNTName = adoRecordset.Fields("cn").Value
strGroupType = adoRecordset.Fields("samaccounttype").Value
strPrimary = adoRecordset.Fields("primaryGroupID").Value
strdistinguishedName = adoRecordset.Fields("distinguishedname").Value
Select Case strGroupType
Case 2,268435457,4,536870913,8,268435457 'Distribution Groups
set newOption = document.createElement("OPTION")
newOption.Text = strNTName
newOption.Value = strPrimary & ";" & strdistinguishedName
lst_distributiongroupnames.Add newOption
Case -2147483646,268435456,-2147483644,536870912,-2147483640,268435456 'Security Groups
set newOption = document.createElement("OPTION")
newOption.Text = strNTName
newOption.Value = strPrimary & ";" & strdistinguishedName
lst_groupnames.Add newOption
End Select
adoRecordset.MoveNext
Loop
End If
End if
adoRecordset.Close
Set adoRecordset = Nothing
adoConnection.Close
End Sub
Sub Submit_Form
on error resume next
strUserNames = txt_usernames.Value
if strUserNames = "" then
msgbox "Cannot proceed - please input user name(s)"
else
For i = 1 to (lst_distributiongroupnames.Options.Length - 1)
If (lst_distributiongroupnames.Options(i).Selected) Then
arrGroupNames = split(lst_distributiongroupnames.Options(i).Value,";")
strprimaryGroupID = arrGroupNames(0)
strGroupDN = arrGroupNames(1)
End If
Next
if NOT IsArray(arrGroupNames) then
For i = 1 to (lst_groupnames.Options.Length - 1)
If (lst_groupnames.Options(i).Selected) Then
arrGroupNames = split(lst_groupnames.Options(i).Value,";")
strprimaryGroupID = arrGroupNames(0)
strGroupDN = arrGroupNames(1)
End If
Next
End if
arrUserNames = split(strUserNames,";")
for each strUser in arrUserNames
strUser = trim(strUser)
strUserDN = GetDistinguishedNameofUser(strUser)
if strUserDN <> "" then
Set objUser = GetObject("LDAP://"& strUserDN)
Set objGroup = GetObject("LDAP://"& strGroupDN)
objGroup.add(objUser.ADsPath)
else
msgbox "Error: Could not find """ & strUser & """"
end if
next
End if
txt_usernames.Value = ""
msgbox "Done."
End Sub
Function GetDistinguishedNameofUser(Name)
on error resume next
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
strSearchField = "(SAMAccountName=" & Name & ")"
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(&(objectCategory=user)" & strSearchField & ")"
strAttributes = "distinguishedName"
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 100
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False
Set adoRecordset = adoCommand.Execute
strdistinguishedName = adoRecordset.Fields("distinguishedname").Value
GetDistinguishedNameofUser = strdistinguishedName
End Function
</script>
<body>
<table border="0" padding="1">
<tr><td>Distribution Groups:</td><td></td><td><select id="lst_distributiongroupnames" name="lst_distributiongroupnames"></select></td></tr>
<tr><td>Security Groups:</td><td></td><td><select id="lst_groupnames" name="lst_groupnames"></select></td></tr>
<tr><td>Users to add:</td><td></td><td><input type="text" size="50" id="txt_usernames" name="txt_usernames"></td></tr>
<tr><td colspan="2"><input type="submit" value="Submit" name="btn_submit" onClick="vbs:Submit_Form"></td></tr>
</table>
</body>
ASKER
The New feel is really great... Thank U....
1. When i double click the computer it checks if available in Notes if not says no record found. Can this be changed as if not found then check the computers properties for Os,Sp,OU Path,Desc,Created Date atleast so i get such info to the screen. First search notes if not found then search the computers properties...
2. What does the Primary ID mean? in the groups box.
3. After i double click on the group and get the info say 6 users. When clicked next for some users get the info just in a sec and for some it takes 1 + Min
4. No matter which Distinguised group i double click i just get this...(I just found that this happens only for Dis groups that are in the Root Domain. All local Domain distribution groups are fetched correctly)
-------------------------- -
-------------------------- -
No records were found
-------------------------- -
OK
-------------------------- -
For each of these boxes can i have a button as Save. So i can get all that displays to a csv or txt or xls file. That would be real useful for me...
5. The Domain Computer machine name that i have queried stays intact even when the other data changes while quering other groups or users.
6. When click the button send without a email id i get the below error. Can this be changed to a box asking for an input. Instead of this error.
-------------------------- -
Error
-------------------------- -
A Runtime Error has occurred.
Do you wish to Debug?
Line: 2097
Error: At least one recipient is required, but none were found.
-------------------------- -
Yes No
-------------------------- -
I really wanted to thank you for all the help.... :-))))
1. When i double click the computer it checks if available in Notes if not says no record found. Can this be changed as if not found then check the computers properties for Os,Sp,OU Path,Desc,Created Date atleast so i get such info to the screen. First search notes if not found then search the computers properties...
2. What does the Primary ID mean? in the groups box.
3. After i double click on the group and get the info say 6 users. When clicked next for some users get the info just in a sec and for some it takes 1 + Min
4. No matter which Distinguised group i double click i just get this...(I just found that this happens only for Dis groups that are in the Root Domain. All local Domain distribution groups are fetched correctly)
--------------------------
--------------------------
No records were found
--------------------------
OK
--------------------------
For each of these boxes can i have a button as Save. So i can get all that displays to a csv or txt or xls file. That would be real useful for me...
5. The Domain Computer machine name that i have queried stays intact even when the other data changes while quering other groups or users.
6. When click the button send without a email id i get the below error. Can this be changed to a box asking for an input. Instead of this error.
--------------------------
Error
--------------------------
A Runtime Error has occurred.
Do you wish to Debug?
Line: 2097
Error: At least one recipient is required, but none were found.
--------------------------
Yes No
--------------------------
I really wanted to thank you for all the help.... :-))))
ASKER
The New feel is really great... Thank U....
1. When i double click the computer it checks if available in Notes if not says no record found. Can this be changed as if not found then check the computers properties for Os,Sp,OU Path,Desc,Created Date atleast so i get such info to the screen. First search notes if not found then search the computers properties...
2. What does the Primary ID mean? in the groups box.
3. After i double click on the group and get the info say 6 users. When clicked next for some users get the info just in a sec and for some it takes 1 + Min
4. No matter which Distinguised group i double click i just get this...(I just found that this happens only for Dis groups that are in the Root Domain. All local Domain distribution groups are fetched correctly)
-------------------------- -
-------------------------- -
No records were found
-------------------------- -
OK
-------------------------- -
For each of these boxes can i have a button as Save. So i can get all that displays to a csv or txt or xls file. That would be real useful for me...
5. The Domain Computer machine name that i have queried stays intact even when the other data changes while quering other groups or users.
6. When click the button send without a email id i get the below error. Can this be changed to a box asking for an input. Instead of this error.
-------------------------- -
Error
-------------------------- -
A Runtime Error has occurred.
Do you wish to Debug?
Line: 2097
Error: At least one recipient is required, but none were found.
-------------------------- -
Yes No
-------------------------- -
I really wanted to thank you for all the help.... :-))))
1. When i double click the computer it checks if available in Notes if not says no record found. Can this be changed as if not found then check the computers properties for Os,Sp,OU Path,Desc,Created Date atleast so i get such info to the screen. First search notes if not found then search the computers properties...
2. What does the Primary ID mean? in the groups box.
3. After i double click on the group and get the info say 6 users. When clicked next for some users get the info just in a sec and for some it takes 1 + Min
4. No matter which Distinguised group i double click i just get this...(I just found that this happens only for Dis groups that are in the Root Domain. All local Domain distribution groups are fetched correctly)
--------------------------
--------------------------
No records were found
--------------------------
OK
--------------------------
For each of these boxes can i have a button as Save. So i can get all that displays to a csv or txt or xls file. That would be real useful for me...
5. The Domain Computer machine name that i have queried stays intact even when the other data changes while quering other groups or users.
6. When click the button send without a email id i get the below error. Can this be changed to a box asking for an input. Instead of this error.
--------------------------
Error
--------------------------
A Runtime Error has occurred.
Do you wish to Debug?
Line: 2097
Error: At least one recipient is required, but none were found.
--------------------------
Yes No
--------------------------
I really wanted to thank you for all the help.... :-))))
First off, you are welcome :-)
#1 this sounds possible - I will see what needs to get changed in the morning.
#2 Each group that is created gets an ID. This is generated by the system at the time it is created. The ID number is a link for users primary group. You know when you are looking at a user in AD and you have the groups up top and there is a section below stating the primary group. This is the link. For whatever reason, the primary group is linked by an ID number and not the actual group distinguished name. AD is even worse because at the other end, the groups that have users and they are linked as primary ID's are not displayed as members. This means that there is some extra queries that need to be used to display the actual users of groups. Sad fact of AD.
I don't know where the slow times are coming from. Most of the information is pulled at the startup of the app. It could be due to the large amount to data in memory. Can you check the mshta process to see how it handles system resources. Now that I think of it... the managers field is always queried when moving back and forth through the record set. This might slow things down. I can try to cache the results before the results are displayed that way, the query is a little slower but moving between the results will be better.
#3 I found that the numbers associated with some groups is incorect. The numbers are showing both users and sub groups. A group that has only sub groups in it will give you the message that no users were found. Groups with sub groups and users might display 6 users but if two objects that are members happen to be groups, then only 4 users will show. I will tidy this up later. For your distribution groups from the root domain, how are users members of those groups? Are they in groups or are they actually attached to the distribution group directly?
#4 I think that I put something like that for when the app was first opened and no queries were made, you coul hit the save to button to grab the boxes. I will expand this to include the new boxes.
#5 I thought that this would be available at all times for ease of access. There wasn't much use cutting out computer names since the section above contains the computer information such as name, OS etc.
#6 I can do this but it might not be necessary once you fill in the email addresses in the array at the beginning - the one linked to the subject drop down.
#1 this sounds possible - I will see what needs to get changed in the morning.
#2 Each group that is created gets an ID. This is generated by the system at the time it is created. The ID number is a link for users primary group. You know when you are looking at a user in AD and you have the groups up top and there is a section below stating the primary group. This is the link. For whatever reason, the primary group is linked by an ID number and not the actual group distinguished name. AD is even worse because at the other end, the groups that have users and they are linked as primary ID's are not displayed as members. This means that there is some extra queries that need to be used to display the actual users of groups. Sad fact of AD.
I don't know where the slow times are coming from. Most of the information is pulled at the startup of the app. It could be due to the large amount to data in memory. Can you check the mshta process to see how it handles system resources. Now that I think of it... the managers field is always queried when moving back and forth through the record set. This might slow things down. I can try to cache the results before the results are displayed that way, the query is a little slower but moving between the results will be better.
#3 I found that the numbers associated with some groups is incorect. The numbers are showing both users and sub groups. A group that has only sub groups in it will give you the message that no users were found. Groups with sub groups and users might display 6 users but if two objects that are members happen to be groups, then only 4 users will show. I will tidy this up later. For your distribution groups from the root domain, how are users members of those groups? Are they in groups or are they actually attached to the distribution group directly?
#4 I think that I put something like that for when the app was first opened and no queries were made, you coul hit the save to button to grab the boxes. I will expand this to include the new boxes.
#5 I thought that this would be available at all times for ease of access. There wasn't much use cutting out computer names since the section above contains the computer information such as name, OS etc.
#6 I can do this but it might not be necessary once you fill in the email addresses in the array at the beginning - the one linked to the subject drop down.
ASKER
#3 Users are added to the group directly in most of the cases only rarely the groups are added.
#6 Yes but just in case.
Ok Thank U....
#6 Yes but just in case.
Ok Thank U....
ASKER
#3 Users are added to the group directly in most of the cases only rarely the groups are added.
#6 Yes but just in case.
Ok Thank U....
#6 Yes but just in case.
Ok Thank U....
When searching for computers and no match is found for a user, the computer info will be displayed on its own.
There is now a button to save the currently shown results from Domain Computers, Security Groups and Distribution Groups.
There is now a button to save the currently shown results from Domain Computers, Security Groups and Distribution Groups.
<head>
<title>User Information</title>
<HTA:APPLICATION
APPLICATIONNAME="User Information"
BORDER="thin"
SCROLL="yes"
SINGLEINSTANCE="yes"
WINDOWSTATE="MAXIMIZE"
ID="oHTA"
>
<APPLICATION:HTA>
</head>
<script language="VBScript">
Const adVarChar = 200
Const VarCharMaxCharacters = 255
Const adFldIsNullable = 32
'http://www.experts-exchange.com/Programming/Languages/Q_23807915.html
Dim strEmailBCC
Dim strEmailServer
Dim arrSubjectText
Dim arrDomainNames
strEmailBCC = "" 'Enter the BCC field as "Your Name <youremail@yourdomain.com>"
strEmailServer = "MAILSERVER" 'Exchange server name
arrSubjectText = array("This is subject text #1","This is subject text #2","This is subject text #3","This is subject text #4","This is subject text #5","This is subject text #6","This is subject text #7","This is subject text #8")
arrToSpecial = array("","","","","","","","") 'Fill in the names (to email) so as to match with the subject lines above. Seperate names with a ; eg. "john Doe;Jane Doe"
arrCCSpecial = array("","","","","","","","") 'Fill in the names (to email) so as to match with the subject lines above. Seperate names with a ; eg. "john Doe;Jane Doe"
arrBodySpecial = array("Enter text here","Enter text here","Enter text here","Enter text here","Enter text here","Enter text here","Enter text here","Enter text here") 'Fill in the body text which will match the order the subject lines above.
arrCheckBoxSpecial = array("Default","Default","Default","Default","Default","Default","Default","Default") 'Use the checkbox profile name to have the script match up the subject line to the checkbox profile you have stored.
strEmailFrom = "" 'Leave Blank if the HTA should determine email address automatically
'Uncomment the next line to input your own domain names
'arrDomainNames = array("DOMAIN","DC=subdomain1,DC=domain,DC=com")
boolAllowPing = False 'Set to true to allow the interface to ping computers.
boolLookupLastLogin = False 'Set to true to allow the interface to query last logons
boolTableReports = False 'Set to true to allow the interface to use table format reports
Dim arrRows
Dim strEmailFrom
Dim strEmailTo
Dim strEmailCC
Dim DataList
Dim globalstrSearchField
Dim globalstrSearchBtnPush
Dim FileName
Dim fModif
Dim LastChildMenu
Dim LastMenu
Dim globalstrQueryBuilder
if NOT IsArray(arrDomainNames) then
GetDomainNames
End If
If strEmailFrom = "" Then
strEmailFrom = mid(GetEmailAddresses(GetUsersEmailAddress),1,len(GetEmailAddresses(GetUsersEmailAddress))-1)
strEmailFrom = GetUsersEmailAddress & " <" & strEmailFrom & ">" 'Getting email address from logged on user
End if
strEmailTo = GetUsersEmailAddress 'Get user name of logged on user so there is a default value when launched
strEmailCC = ""
DisplayTitle
Set LastChildMenu = Nothing
Set LastMenu = Nothing
Set oShell = CreateObject("WScript.Shell")
fTemp = oShell.ExpandEnvironmentStrings("%TEMP%")
fAppData = oShell.ExpandEnvironmentStrings("%APPDATA%")
Set MailboxList = CreateObject("ADOR.Recordset")
MailboxList.Fields.Append "legacyExchangeDN", adVarChar, VarCharMaxCharacters
MailboxList.Fields.Append "mailboxsize", adVarChar, VarCharMaxCharacters
MailboxList.Open
Set GroupMembershipDB = CreateObject("ADOR.Recordset")
GroupMembershipDB.Fields.Append "SAMAccountName", adVarChar, VarCharMaxCharacters, adFldIsNullable
GroupMembershipDB.Fields.Append "PrimaryGroupToken", adVarChar, VarCharMaxCharacters, adFldIsNullable
GroupMembershipDB.Fields.Append "DistinguishedName", adVarChar, VarCharMaxCharacters, adFldIsNullable
GroupMembershipDB.Fields.Append "SAMAccountType", adVarChar, VarCharMaxCharacters, adFldIsNullable
GroupMembershipDB.Fields.Append "MemberDistinguishedName", adVarChar, VarCharMaxCharacters, adFldIsNullable
GroupMembershipDB.Open
Set DomainComputersDB = CreateObject("ADOR.Recordset")
DomainComputersDB.Fields.Append "CN", adVarChar, VarCharMaxCharacters, adFldIsNullable
DomainComputersDB.Fields.Append "DistinguishedName", adVarChar, VarCharMaxCharacters, adFldIsNullable
DomainComputersDB.Open
set dicGroupNumbers = CreateObject("Scripting.Dictionary")
set dicManagerList = CreateObject("Scripting.Dictionary")
Sub GetDomainNames
set objRootDSE = GetObject("LDAP://RootDSE")
strBase = "<LDAP://cn=Partitions," & objRootDSE.Get("ConfigurationNamingContext") & ">;"
strFilter = "(&(objectcategory=crossRef)(systemFlags=3));"
strAttrs = "name,trustParent,nCName,dnsRoot,distinguishedName;"
strScope = "onelevel"
set objConn = CreateObject("ADODB.Connection")
objConn.Provider = "ADsDSOObject"
objConn.Open "Active Directory Provider"
set objRS = objConn.Execute(strBase & strFilter & strAttrs & strScope)
objRS.MoveFirst
set arrDomainNames = CreateObject("Scripting.Dictionary")
set dicDomainHierarchy = CreateObject("Scripting.Dictionary")
set dicDomainRoot = CreateObject("Scripting.Dictionary")
while not objRS.EOF
dicDomainRoot.Add objRS.Fields("name").Value, objRS.Fields("nCName").Value
if objRS.Fields("trustParent").Value <> "" then
arrDomainNames.Add objRS.Fields("name").Value, 0
set objDomainParent = GetObject("LDAP://" & objRS.Fields("trustParent").Value)
dicDomainHierarchy.Add objRS.Fields("name").Value,objDomainParent.Get("name")
else
arrDomainNames.Add objRS.Fields("name").Value, 1
end if
objRS.MoveNext
wend
for each strDomain in arrDomainNames
'msgbox strDomain
next
End Sub
Sub Window_OnLoad
'Uncomment the following lines to hide them from the GUI
'tr_seatno.classname="HideFromGUI"
'tr_replacementseatno.classname="HideFromGUI"
'tr_building.classname="HideFromGUI"
'tr_extensionno.classname="HideFromGUI"
'tr_empid.classname="HideFromGUI"
'tr_department.classname="HideFromGUI"
'tr_designation.classname="HideFromGUI"
'tr_name.classname="HideFromGUI"
'tr_loginname.classname="HideFromGUI"
'tr_email.classname="HideFromGUI"
'tr_mailboxsize.classname="HideFromGUI"
'tr_mailboxstore.classname="HideFromGUI"
'tr_mobileno.classname="HideFromGUI"
'tr_company.classname="HideFromGUI"
'tr_address.classname="HideFromGUI"
'tr_city.classname="HideFromGUI"
'tr_state.classname="HideFromGUI"
'tr_zipcode.classname="HideFromGUI"
'tr_country.classname="HideFromGUI"
'tr_homephone.classname="HideFromGUI"
'tr_manager.classname="HideFromGUI"
'tr_whencreated.classname="HideFromGUI"
'tr_oupathuser.classname="HideFromGUI"
'tr_lastlogintimestamp.classname="HideFromGui"
'tr_notes.classname="HideFromGUI"
'tr_computerserialno.classname="HideFromGUI"
'tr_replacedmachine.classname="HideFromGUI"
'tr_replacedcomputerserialno.classname="HideFromGUI"
'tr_oupathcomputer.classname="HideFromGUI"
'tr_computeros.classname="HideFromGUI"
'tr_computerdescription.classname="HideFromGUI"
'tr_computercreated.classname="HideFromGUI"
'tr_groupmembership.classname="HideFromGUI"
'tr_dgmembership.classname="HideFromGUI"
'tr_managerlist.classname="HideFromGUI"
'tr_subordinates.classname="HideFromGUI"
'tr_domaincomputers.classname="HideFromGUI"
TestToSeeWhatLinesAreHidden
Set objlst_groupnames = document.getElementById( "lst_groupnames" )
If objlst_groupnames Is Nothing Then
MsgBox "A problem was encountered while creating the listview." & vbCRLF & "Please see your administrator."
Else
With objlst_groupnames
.View = 3
.Width = 360
.Height = 150
.SortKey = 0
.Arrange = 0
.LabelEdit = 1
.SortOrder = 0
.Sorted = 1
.MultiSelect = 0
.LabelWrap = -1
.HideSelection = -1
.HideColumnHeaders = 0
.OLEDragMode = 0
.OLEDropMode = 0
.Checkboxes = 0
.FlatScrollBar = 0
.FullRowSelect = 1
.GridLines = 0
.HotTracking = 0
.HoverSelection = 0
.PictureAlignment = 0
.TextBackground = 0
.ForeColor = -2147483640
.BackColor = -2147483643
.BorderStyle = 1
.Appearance = 1
.MousePointer = 0
.Enabled = 1
.ColumnHeaders.Clear
.ColumnHeaders.Add , , "Group Name", 150
.ColumnHeaders.Add , , "Users", 50
.ColumnHeaders.Add , , "Type", 50
.ColumnHeaders.Add , , "Distinguished Name", 100
.ColumnHeaders.Add , , "Primary ID", 50
.ListItems.Clear
End With
End If
Set objlst_dgnames = document.getElementById( "lst_dgnames" )
If objlst_dgnames Is Nothing Then
MsgBox "A problem was encountered while creating the listview." & vbCRLF & "Please see your administrator."
Else
With objlst_dgnames
.View = 3
.Width = 360
.Height = 150
.SortKey = 0
.Arrange = 0
.LabelEdit = 1
.SortOrder = 0
.Sorted = 1
.MultiSelect = 0
.LabelWrap = -1
.HideSelection = -1
.HideColumnHeaders = 0
.OLEDragMode = 0
.OLEDropMode = 0
.Checkboxes = 0
.FlatScrollBar = 0
.FullRowSelect = 1
.GridLines = 0
.HotTracking = 0
.HoverSelection = 0
.PictureAlignment = 0
.TextBackground = 0
.ForeColor = -2147483640
.BackColor = -2147483643
.BorderStyle = 1
.Appearance = 1
.MousePointer = 0
.Enabled = 1
.ColumnHeaders.Clear
.ColumnHeaders.Add , , "Group Name", 150
.ColumnHeaders.Add , , "Users", 50
.ColumnHeaders.Add , , "Type", 50
.ColumnHeaders.Add , , "Distinguished Name", 100
.ColumnHeaders.Add , , "Primary ID", 50
.ListItems.Clear
End With
End If
Set objlst_domaincomputers = document.getElementById( "lst_domaincomputers" )
If objlst_dgnames Is Nothing Then
MsgBox "A problem was encountered while creating the listview." & vbCRLF & "Please see your administrator."
Else
With objlst_domaincomputers
.View = 3
.Width = 360
.Height = 150
.SortKey = 0
.Arrange = 0
.LabelEdit = 1
.SortOrder = 0
.Sorted = 1
.MultiSelect = 0
.LabelWrap = -1
.HideSelection = -1
.HideColumnHeaders = 0
.OLEDragMode = 0
.OLEDropMode = 0
.Checkboxes = 0
.FlatScrollBar = 0
.FullRowSelect = 1
.GridLines = 0
.HotTracking = 0
.HoverSelection = 0
.PictureAlignment = 0
.TextBackground = 0
.ForeColor = -2147483640
.BackColor = -2147483643
.BorderStyle = 1
.Appearance = 1
.MousePointer = 0
.Enabled = 1
.ColumnHeaders.Clear
.ColumnHeaders.Add , , "Computer", 150
.ColumnHeaders.Add , , "Distinguished Name", 185
.ListItems.Clear
End With
End If
btnFirstEvent.Disabled = True
btnPreviousEvent.Disabled = True
btnNextEvent.Disabled = True
btnLastEvent.Disabled = True
btnEmailThisRecord.Disabled = True
btnEMailAllRecords.Disabled = True
btnEmailAsAttachment.Disabled = True
txt_EmailTo.Value = strEmailTo
btnFirstEvent.Style.Visibility = "Hidden"
btnPreviousEvent.Style.Visibility = "Hidden"
btnNextEvent.Style.Visibility = "Hidden"
btnLastEvent.Style.Visibility = "Hidden"
btnEmailThisRecord.Style.Visibility = "Hidden"
btnEMailAllRecords.Style.Visibility = "Hidden"
btnEmailAsAttachment.Style.Visibility = "Hidden"
For Each objOption in lst_subordinates.Options
objOption.RemoveNode
Next
FillGroupList
FillManagerList
FillSubjectList
FillDomainComputers
GetChkProfiles
GetMailboxDetails
chk_TableReports.Checked = boolTableReports
chk_LookupLastLogin.Checked = boolLookupLastLogin
chk_AllowPings.Checked = boolAllowPing
txt_EmailSubject_OnChange
End Sub
Sub TestToSeeWhatLinesAreHidden
'Test to see what lines are hidden and uncheck the boxes
if tr_seatno.classname="HideFromGUI" then chk_seatno.Checked = False
if tr_replacementseatno.classname="HideFromGUI" then chk_replacementseatno.Checked = False
if tr_building.classname="HideFromGUI" then chk_building.Checked = False
if tr_extensionno.classname="HideFromGUI" then chk_extensionno.Checked = False
if tr_empid.classname="HideFromGUI" then chk_empid.Checked = False
if tr_department.classname="HideFromGUI" then chk_department.Checked = False
if tr_designation.classname="HideFromGUI" then chk_designation.Checked = False
if tr_name.classname="HideFromGUI" then chk_name.Checked = False
if tr_loginname.classname="HideFromGUI" then chk_loginname.Checked = False
if tr_email.classname="HideFromGUI" then chk_email.Checked = False
if tr_mailboxsize.classname="HideFromGUI" then chk_mailboxsize.Checked = False
if tr_mailboxstore.classname="HideFromGUI" then chk_mailboxstore.Checked = False
if tr_mobileno.classname="HideFromGUI" then chk_mobileno.Checked = False
if tr_company.classname="HideFromGUI" then chk_company.Checked = False
if tr_address.classname="HideFromGUI" then chk_address.Checked = False
if tr_city.classname="HideFromGUI" then chk_city.Checked = False
if tr_state.classname="HideFromGUI" then chk_state.Checked = False
if tr_zipcode.classname="HideFromGUI" then chk_zipcode.Checked = False
if tr_country.classname="HideFromGUI" then chk_country.Checked = False
if tr_homephone.classname="HideFromGUI" then chk_homephone.Checked = False
if tr_manager.classname="HideFromGUI" then chk_manager.Checked = False
if tr_whencreated.classname="HideFromGUI" then chk_whencreated.Checked = False
if tr_oupathuser.classname="HideFromGUI" then chk_oupathuser.Checked = False
if tr_lastlogintimestamp.classname="HideFromGUI" then chk_lastlogintimestamp.Checked = False
if tr_notes.classname="HideFromGUI" then chk_notes.Checked = False
if tr_computerserialno.classname="HideFromGUI" then chk_computerserialno.Checked = False
if tr_replacedmachine.classname="HideFromGUI" then chk_replacedmachine.Checked = False
if tr_replacedcomputerserialno.classname="HideFromGUI" then chk_replacedcomputerserialno.Checked = False
if tr_oupathcomputer.classname="HideFromGUI" then chk_oupathcomputer.Checked = False
if tr_computeros.classname="HideFromGUI" then chk_computeros.Checked = False
if tr_computerdescription.classname="HideFromGUI" then chk_computerdescription.Checked = False
if tr_computercreated.classname="HideFromGUI" then chk_computercreated.Checked = False
if tr_groupmembership.classname="HideFromGUI" then chk_groupmembership.Checked = False
if tr_dgmembership.classname="HideFromGUI" then chk_dgmembership.Checked = False
if tr_managerlist.classname="HideFromGUI" then chk_managerlist.Checked = False
if tr_subordinates.classname="HideFromGUI" then chk_subordinates.Checked = False
End sub
Sub Clear_Form(resetGroupLists)
txt_seatno.Value = ""
txt_seatno.style.backgroundColor="#FFFFFF"
txt_seatno.Disabled = False
txt_replacementseatno.Value = ""
txt_replacementseatno.style.backgroundColor="#FFFFFF"
txt_replacementseatno.Disabled = False
txt_building.Value = ""
txt_building.style.backgroundColor="#FFFFFF"
txt_building.Disabled = False
txt_extensionno.Value = ""
txt_extensionno.style.backgroundColor="#FFFFFF"
txt_extensionno.Disabled = False
txt_empid.Value = ""
txt_empid.style.backgroundColor="#FFFFFF"
txt_empid.Disabled = False
txt_department.Value = ""
txt_department.style.backgroundColor="#FFFFFF"
txt_department.Disabled = False
txt_designation.Value = ""
txt_designation.style.backgroundColor="#FFFFFF"
txt_designation.Disabled = False
txt_name.Value = ""
txt_name.style.backgroundColor="#FFFFFF"
txt_name.Disabled = False
txt_loginname.Value = ""
txt_loginname.style.backgroundColor="#FFFFFF"
txt_loginname.Disabled = False
txt_email.Value = ""
txt_email.style.backgroundColor="#FFFFFF"
txt_email.Disabled = False
txt_mailboxsize.Value = ""
txt_mailboxsize.style.backgroundColor="#FFFFFF"
txt_mailboxsize.Disabled = False
txt_mailboxstore.Value = ""
txt_mailboxstore.style.backgroundColor="#FFFFFF"
txt_mailboxstore.Disabled = False
txt_notes.Value = ""
txt_notes.style.backgroundColor="#FFFFFF"
txt_notes.Disabled = False
txt_computerserialno.Value = ""
txt_computerserialno.style.backgroundColor="#FFFFFF"
txt_computerserialno.Disabled = False
txt_replacedmachine.Value = ""
txt_replacedmachine.Disabled = False
txt_replacedmachine.style.backgroundcolor="#FFFFFF"
txt_replacedcomputerserialno.value = ""
txt_replacedcomputerserialno.Disabled = False
txt_replacedcomputerserialno.Style.backgroundcolor="#FFFFFF"
txt_oupathcomputer.Value = ""
txt_oupathcomputer.style.backgroundColor="#FFFFFF"
txt_oupathcomputer.Disabled = False
txt_computeros.Value = ""
txt_computeros.Style.backgroundColor="#FFFFFF"
txt_computeros.Disabled = False
txt_computerservicepack.Value = ""
txt_computerservicepack.Style.backgroundColor="#FFFFFF"
txt_computerservicepack.Disabled = False
txt_computercreated.Value = ""
txt_computercreated.Style.backgroundColor="#FFFFFF"
txt_computercreated.Disabled = False
txt_computerdescription.Value = ""
txt_computerdescription.Style.backgroundColor="#FFFFFF"
txt_computerdescription.Disabled = False
txt_mobileno.Value = ""
txt_mobileno.style.backgroundColor="#FFFFFF"
txt_mobileno.Disabled = False
txt_company.Value = ""
txt_company.style.backgroundColor="#FFFFFF"
txt_company.Disabled = False
txt_address.Value = ""
txt_address.style.backgroundColor="#FFFFFF"
txt_address.Disabled = False
txt_city.Value = ""
txt_city.style.backgroundColor="#FFFFFF"
txt_city.Disabled = False
txt_state.Value = ""
txt_state.style.backgroundColor="#FFFFFF"
txt_state.Disabled = False
txt_zipcode.Value = ""
txt_zipcode.style.backgroundColor="#FFFFFF"
txt_zipcode.Disabled = False
txt_country.Value = ""
txt_country.style.backgroundColor="#FFFFFF"
txt_country.Disabled = False
txt_homephone.Value = ""
txt_homephone.style.backgroundColor="#FFFFFF"
txt_homephone.Disabled = False
txt_manager.Value = ""
txt_manager.style.backgroundColor="#FFFFFF"
txt_manager.Disabled = False
txt_managerseen.Value = ""
txt_managerseen.style.backgroundColor="#FFFFFF"
txt_managerseen.Disabled = False
txt_whencreated.Value = ""
txt_whencreated.style.backgroundColor="#FFFFFF"
txt_whencreated.Disabled = False
txt_oupathuser.Value = ""
txt_oupathuser.style.backgroundColor="#FFFFFF"
txt_oupathuser.Disabled = False
txt_lastlogintimestamp.Value = ""
txt_lastlogintimestamp.style.backgroundcolor="#FFFFFF"
txt_lastlogintimestamp.Disabled = False
txt_FilterSecurityGroup.Value = ""
txt_FilterSecurityGroup.style.backgroundcolor="#FFFFFF"
txt_FilterSecurityGroup.Disabled = False
txt_filterdgmembership.Value = ""
txt_filterdgmembership.style.backgroundcolor="#FFFFFF"
txt_filterdgmembership.Disabled = False
txt_filtermanagerlist.Value = ""
txt_filtermanagerlist.style.backgroundcolor="#FFFFFF"
txt_filtermanagerlist.Disabled = False
txt_filterdomaincomputers.Value = ""
txt_filterdomaincomputers.style.backgroundcolor="#FFFFFF"
txt_filterdomaincomputers.Disabled = False
btnFirstEvent.Style.Visibility = "Hidden"
btnPreviousEvent.Style.Visibility = "Hidden"
btnNextEvent.Style.Visibility = "Hidden"
btnLastEvent.Style.Visibility = "Hidden"
btnEmailThisRecord.Style.Visibility = "Hidden"
btnEMailAllRecords.Style.Visibility = "Hidden"
btnEmailAsAttachment.Style.Visibility = "Hidden"
span_currentrecord.InnerHTML = "0"
span_totalrecords.InnerHTML = "0"
span_computerip.InnerHTML = ""
span_computerOnline.InnerHTML = ""
span_enabled.InnerHTML = ""
span_userorcontact.InnerHTML = ""
if lcase(resetGroupLists) = lcase("resetGroupLists") then
GroupMembershipDB.Filter = ""
GroupMembershipDB.MoveFirst
Do While Not GroupMembershipDB.EOF
GroupMembershipDB.Delete
GroupMembershipDB.MoveNext
Loop
FillGroupList
populatedomaincomputers
end if
For Each objOption in lst_subordinates.Options
objOption.RemoveNode
Next
PopulateManagerList
End Sub
Sub Submit_Form(btnPush)
arrFields = Array(_
"txt_seatno", _
"txt_building", _
"txt_extensionno", _
"txt_empid", _
"txt_department", _
"txt_designation", _
"txt_name", _
"txt_loginname", _
"txt_email", _
"txt_notes", _
"txt_mobileno", _
"txt_company", _
"txt_address", _
"txt_city", _
"txt_state", _
"txt_zipcode", _
"txt_country", _
"txt_homephone", _
"txt_managerseen", _
"txt_oupathuser", _
"txt_computerserialno", _
"txt_whencreated", _
"txt_oupathcomputer", _
"txt_computeros", _
"txt_computercreated", _
"txt_filtersecuritygroup", _
"txt_filterdgmembership", _
"txt_filtermanagerlist", _
"txt_filterdomaincomputers" _
)
boolValid = False
For Each strField In arrFields
If Eval(strField & ".Disabled") = True Then
boolValid = True
End If
If Eval(strField & ".Disabled") = False Then
strCurrentField = strField
End If
Next
If boolValid = False Then strCurrentField = "INVALID"
Select Case strCurrentField
Case "txt_seatno"
If txt_seatno.Value = "" Then
strSearchField = "(info=*)"
Else
strSearchField = "(info=*" & txt_seatno.Value & "*)"
End If
Case "txt_building"
If txt_building.Value = "" Then
strSearchField = "(physicalDeliveryOfficeName=*)"
Else
strSearchField = "(physicalDeliveryOfficeName=*" & txt_building.Value & "*)"
End If
Case "txt_extensionno"
If txt_extensionno.Value = "" Then
strSearchField = "(telephoneNumber=*)"
Else
strSearchField = "(telephoneNumber=*" & txt_extensionno.Value & "*)"
End If
Case "txt_empid"
If txt_empid.Value = "" Then
strSearchField = "(description=*)"
Else
strSearchField = "(description=*" & txt_empid.Value & "*)"
End If
Case "txt_department"
If txt_department.Value = "" Then
strSearchField = "(department=*)"
Else
strSearchField = "(department=*" & txt_department.Value & "*)"
End If
Case "txt_designation"
If txt_designation.Value = "" Then
strSearchField = "(title=*)"
Else
strSearchField = "(title=*" & txt_designation.Value & "*)"
End If
Case "txt_name"
If txt_name.Value = "" Then
strSearchField = "(cn=*)"
Else
strSearchField = "(cn=*" & txt_name.Value & "*)"
End If
Case "txt_loginname"
If txt_loginname.Value = "" Then
strSearchField = "(samAccountName=*)"
Else
strSearchField = "(samAccountName=*" & txt_loginname.Value & "*)"
End If
Case "txt_email"
If txt_email.Value = "" Then
strSearchField = "(mail=*)"
Else
strSearchField = "(mail=*" & txt_email.Value & "*)"
End If
Case "txt_notes"
If txt_notes.Value = "" Then
strSearchField = "(info=*)"
Else
strSearchField = "(info=*" & txt_notes.Value & "*)"
btnPush = "Computer"
End If
Case "txt_mobileno"
If txt_mobileno.Value = "" Then
strSearchField = "(mobile=*)"
Else
strSearchField = "(mobile=*" & txt_mobileno.Value & "*)"
End If
Case "txt_company"
If txt_company.Value = "" Then
strSearchField = "(company=*)"
Else
strSearchField = "(company=*" & txt_company.Value & "*)"
End If
Case "txt_address"
If txt_address.Value = "" Then
strSearchField = "(streetAddress=*)"
Else
strSearchField = "(streetAddress=*" & txt_address.Value & "*)"
End If
Case "txt_city"
If txt_city.Value = "" Then
strSearchField = "(l=*)"
Else
strSearchField = "(l=*" & txt_city.Value & "*)"
End If
Case "txt_state"
If txt_state.Value = "" Then
strSearchField = "(st=*)"
Else
strSearchField = "(st=*" & txt_state.Value & "*)"
End If
Case "txt_zipcode"
If txt_zipcode.Value = "" Then
strSearchField = "(postalCode=*)"
Else
strSearchField = "(postalCode=*" & txt_zipcode.Value & "*)"
End If
Case "txt_country"
If txt_country.Value = "" Then
strSearchField = "(c=*)"
Else
strSearchField = "(c=*" & txt_country.Value & "*)"
End If
Case "txt_homephone"
If txt_homephone.Value = "" Then
strSearchField = "(homePhone=*)"
Else
strSearchField = "(homePhone=*" & txt_homephone.Value & "*)"
End If
Case "txt_managerseen"
If txt_managerseen.Value = "" Then
strSearchField = "(manager=*)"
Else
strSearchField = GetManagerDN(txt_managerseen.Value)
End If
Case "txt_oupathuser"
If txt_oupathuser.Value <> "" Then
strSearchField = GetOUMembers(txt_oupathuser.Value)
End If
Case "txt_whencreated"
If txt_whencreated.Value = "" Then
strSearchField = "(whenCreated=*)"
Else
if NOT IsDate(txt_whencreated.Value) then
msgbox "Invalid date - enter as dd/mm/yyyy"
strSearchField = "INVALID"
else
strWhenCreated = Year(txt_whencreated.Value) & Right("0" & Month(txt_whencreated.Value), 2) & Right("0" & Day(txt_whencreated.Value), 2)
strSearchField = "(whenCreated>=" & strWhenCreated & "000000.0Z)(whenCreated<=" & strWhenCreated & "235959.0Z)"
end if
End If
Case "txt_computerserialno"
If txt_notes.Value = "" Then
strSearchField = "(info=*)"
Else
strSearchField = "(info=*" & txt_computerserialno.Value & "*)"
End If
Case "txt_oupathcomputer"
If txt_oupathcomputer.Value = "" then
strSearchField = "INVALID"
else
strSearchField = GetComputersBasedOnOU(txt_oupathcomputer.Value)
end if
Case "txt_computeros"
If txt_computeros.Value = "" Then
strSearchField = "INVALID"
else
strSearchField = GetComputersForOSQuery(txt_computeros.Value)
End If
Case "txt_computercreated"
If txt_computercreated.Value = "" Then
strSearchField = "INVALID"
else
if NOT IsDate(txt_computercreated.Value) then
msgbox "Invalid date - enter as dd/mm/yyyy"
strSearchField = "INVALID"
else
strSearchField = GetComputersForDateCreatedQuery(txt_computercreated.Value)
End If
End If
Case "txt_filtersecuritygroup"
if lst_groupnames.ListItems.Count = 1 then
lst_groupnames.ListItems(1).Selected = True
btnPush = "Group"
else
strSearchField = "INVALID"
end if
Case "txt_filterdgmembership"
if lst_dgnames.ListItems.Count = 1 then
lst_dgnames.ListItems(1).Selected = True
btnPush = "DistributionGroup"
else
strSearchField = "INVALID"
end if
Case "txt_filtermanagerlist"
if lst_managerlist.Options.Length = 1 then
lst_managerlist.Options(0).Selected = True
btnPush = "ManagerList"
else
strSearchField = "INVALID"
end if
Case "txt_filterdomaincomputers"
if lst_domaincomputers.ListItems.Count = 1 then
lst_domaincomputers.ListItems(1).Selected = True
strSearchField = "(info=*" & lst_domaincomputers.SelectedItem.Text & "*)"
else
strSearchField = "INVALID"
end if
Case Else
strSearchField = "INVALID"
End Select
if btnPush = "Disabled" then
strSearchField = "(userAccountControl:1.2.840.113556.1.4.803:=2)"
end if
if btnPush = "Group" then
sMemberOf = lst_groupnames.SelectedItem.ListSubItems(3).Text
sprimaryGroupID = lst_groupnames.SelectedItem.ListSubItems(4).Text
strSearchField = "(|(memberOf=" & sMemberOf & ")(primaryGroupID=" & sprimaryGroupID & "))"
end if
if btnPush = "DistributionGroup" then
sMemberOf = lst_dgnames.SelectedItem.ListSubItems(3).Text
sprimaryGroupID = lst_dgnames.SelectedItem.ListSubItems(4).Text
strSearchField = "(|(memberOf=" & sMemberOf & ")(primaryGroupID=" & sprimaryGroupID & "))"
end if
if btnPush = "ManagerList" then
For n = 0 to (lst_ManagerList.Options.Length - 1)
If (lst_ManagerList.Options(n).Selected) Then
strSearchField = "(distinguishedname=" & lst_ManagerList.Options(n).Value & ")"
End If
Next
end if
if btnPush = "Subordinate" then
For n = 0 to (lst_subordinates.Options.Length - 1)
If (lst_subordinates.Options(n).Selected) Then
arrSubordinateNames = split(lst_subordinates.Options(n).Value,";")
strSearchField = "(samAccountName=*" & arrSubordinateNames(0) & "*)"
End If
Next
end if
if btnPush = "DisabledToday" then
strWhenChanged = Year(txt_whencreated.Value) & Right("0" & Month(txt_whencreated.Value), 2) & Right("0" & Day(txt_whencreated.Value), 2)
strSearchField = "(userAccountControl:1.2.840.113556.1.4.803:=2)(whenChanged>=" & strWhenChanged & "000000.0Z)(whenChanged<=" & strWhenChanged & "235959.0Z)"
end if
if btnPush = "FileOpen" then
strSearchField = globalStrSearchField
btnPush = globalStrSearchBtnPush
End if
boolLogonSearch = False
dmtDateToCompare = Date()
if InStr(btnPush,"Logon:") > 0 then
strSearchField = "(samAccountName=*)"
boolLogonSearch = True
intNumberOfDays = right(btnPush,Len(btnPush)-InStr(btnPush,":"))
dmtDateToCompare = Date() - intNumberOfDays
if NOT chk_LookupLastLogin.Checked then
chk_LookupLastLogin.Checked = True
boolLookupLastLogin = True
end if
end if
boolMailboxSizeSearch = False
if InStr(btnPush,"MailboxSize:") > 0 then
strSearchField = "(samAccountName=*)"
boolMailboxSizeSearch = True
intMailboxSizeToCompare = right(btnPush,Len(btnPush)-InStr(btnPush,":"))
end if
Clear_Form ""
If strSearchField <> "INVALID" Then
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
boolFoundRecords = False
for each strDomain in arrDomainNames
' Search entire Active Directory domain.
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(&(objectCategory=user)(objectCategory=contact)" & strSearchField & ")"
' Comma delimited list of attribute values to retrieve.
if boolLookupLastLogin then
strAttributes = "physicalDeliveryOfficeName,TelephoneNumber,description,Department,Title,cn,samAccountName,mail,Info,Mobile,company,streetAddress,l,st,postalCode,c,homePhone,manager,whenCreated,distinguishedName,userAccountControl,legacyExchangeDN,homeMDB,primaryGroupID,lastLogon"
else
strAttributes = "physicalDeliveryOfficeName,TelephoneNumber,description,Department,Title,cn,samAccountName,mail,Info,Mobile,company,streetAddress,l,st,postalCode,c,homePhone,manager,whenCreated,distinguishedName,userAccountControl,legacyExchangeDN,homeMDB,primaryGroupID"
end if
' Construct the LDAP syntax query.
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 100
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False
adoCommand.Properties("Sort On") = "cn"
' Run the query.
Set adoRecordset = adoCommand.Execute
' Enumerate the resulting recordset.
strDetails = ""
If Not adoRecordset.EOF Then
boolFoundRecords = True
Do Until adoRecordset.EOF
mailboxlist.filter = "legacyExchangeDN = '" & adoRecordset.Fields("legacyExchangeDN").Value & "'"
if NOT mailboxlist.EOF then
intMailboxSize = mailboxlist.fields.Item("mailboxsize")
else
intMailboxSize = "0"
End if
if boolLookupLastLogin then
if NOT IsNull(adoRecordset.Fields("lastLogon").Value) then
Set objLastLogon = adoRecordset.Fields("lastLogon").Value
intLastLogonTime = objLastLogon.HighPart * (2^32) + objLastLogon.LowPart
intLastLogonTime = intLastLogonTime / (60 * 10000000)
intLastLogonTime = intLastLogonTime / 1440
intLastLogonTime = intLastLogonTime + #1/1/1601#
if intLastLogonTime = #1/1/1601# then
intLastLogonTime = ""
end if
else
intLastLogonTime = ""
end if
else
intLastLogonTime = ""
end if
if NOT IsDate(intLastLogonTime) then
dmtDateToCompareTo = dmtDateToCompare
else
dmtDateToCompareTo = intLastLogonTime
end if
if (CDate(dmtDateToCompareTo) >= CDate(dmtDateToCompare)) AND boolLogonSearch then
'Do nothing
else
if (CInt(intMailboxSize) < CInt(intMailboxSizeToCompare)) AND boolMailboxSizeSearch then
'Do nothing
else
If strDetails <> "" Then strDetails = strDetails & "|TR|"
if adoRecordset.Fields("userAccountControl").Value AND 2 then
strEnabled = "Disabled"
else
strEnabled = "Enabled"
End If
strMachineName = ""
strBuilding = ""
strSerialNumber = ""
If IsNull(adoRecordset.Fields("Info").Value) = False Then
arrNotesField = Split(adoRecordset.Fields("Info").Value,vbCRLF)
for each strLine in arrNotesField
if InStr(UCase(strLine),"MACHINE NAME : ") then
strMachineName = trim(mid(strLine,15))
End if
if InStr(UCase(strLine),"LOCATION : ") then
strBuilding = trim(mid(strLine,11))
End if
if InStr(UCase(strLine),"SERIAL NO : ") then
strSerialNumber = trim(mid(strLine,12))
End if
next
strDetails = strDetails & replace(strBuilding,vbCRLF,"")
End If
strDetails = strDetails & "|TD|" & adoRecordset.Fields("physicalDeliveryOfficeName").Value &_
"|TD|" & adoRecordset.Fields("TelephoneNumber").Value
If IsNull(adoRecordset.Fields("Description").Value) = False Then
strDetails = strDetails & "|TD|" & Join(adoRecordset.Fields("description").Value)
Else
strDetails = strDetails & "|TD|"
End If
strDetails = strDetails & "|TD|" & adoRecordset.Fields("Department").Value &_
"|TD|" & adoRecordset.Fields("Title").Value &_
"|TD|" & Replace(adoRecordset.Fields("cn").Value, "CN=", "") &_
"|TD|" & adoRecordset.Fields("samAccountName").Value &_
"|TD|" & adoRecordset.Fields("mail").Value &_
"|TD|" & strMachineName &_
"|TD|" & adoRecordset.Fields("Mobile").Value &_
"|TD|" & adoRecordset.Fields("company").Value &_
"|TD|" & adoRecordset.Fields("streetAddress").Value &_
"|TD|" & adoRecordset.Fields("l").Value &_
"|TD|" & adoRecordset.Fields("st").Value &_
"|TD|" & adoRecordset.Fields("postalCode").Value &_
"|TD|" & adoRecordset.Fields("c").Value &_
"|TD|" & adoRecordset.Fields("homePhone").Value &_
"|TD|" & adoRecordset.Fields("manager").Value &_
"|TD|" & adoRecordset.Fields("whenCreated").Value &_
"|TD|" & adoRecordset.Fields("samAccountName").Value &_
"|TD|" & adoRecordset.Fields("distinguishedName").Value &_
"|TD|" & intLastLogonTime &_
"|TD|" & strSerialNumber &_
"|TD|" & UCASE(strEnabled) &_
"|TD|" & intMailboxSize &_
"|TD|" & GetMailboxStore(adoRecordset.Fields("homeMDB").Value) &_
"|TD|" & adoRecordset.Fields("primaryGroupID").Value
strDetails = replace(strDetails,vbCRLF,"")
end if
end if
adoRecordset.MoveNext
Loop
End If
next
if NOT boolFoundRecords then
if btnPush = "Computer" then
'No records found and was a computer search - display computer details anyway
arrTemp = GetComputerInfo(lst_domaincomputers.SelectedItem.Text)
if IsArray(arrTemp) then
txt_notes.Value = lst_domaincomputers.SelectedItem.Text
txt_oupathcomputer.value = GetOUPath(replace(arrTemp(0),"""",""))
txt_computeros.value = replace(arrTemp(1),"""","")
txt_computerservicepack.value = replace(arrTemp(2),"""","")
txt_computerdescription.value = replace(arrTemp(4),"""","")
txt_computercreated.value = replace(arrTemp(3),"""","")
else
txt_notes.Value = ""
txt_oupathcomputer.value = ""
txt_computeros.value = ""
txt_computerservicepack.value = ""
txt_computerdescription.value = ""
txt_computercreated.value = ""
MsgBox "No records were found"
End if
else
'No records found and was not a computer search
MsgBox "No records were found"
End if
span_currentrecord.InnerHTML = 0
span_totalrecords.InnerHTML = 0
else
arrRows = ""
arrRows = Split(strDetails, "|TR|")
If UBound(arrRows) < 0 Then
span_currentrecord.InnerHTML = 0
span_totalrecords.InnerHTML = 0
Else
span_currentrecord.InnerHTML = 1
Get_Event
span_totalrecords.InnerHTML = UBound(arrRows)+1
End If
End if
' Clean up.
adoRecordset.Close
Set adoRecordset = Nothing
adoConnection.Close
If strDetails = "" Then
btnFirstEvent.Disabled = True
btnPreviousEvent.Disabled = True
btnNextEvent.Disabled = True
btnLastEvent.Disabled = True
btnEmailThisRecord.Disabled = True
btnEMailAllRecords.Disabled = True
btnEmailAsAttachment.Disabled = True
btnFirstEvent.Style.Visibility = "Hidden"
btnPreviousEvent.Style.Visibility = "Hidden"
btnNextEvent.Style.Visibility = "Hidden"
btnLastEvent.Style.Visibility = "Hidden"
btnEmailThisRecord.Style.Visibility = "Hidden"
btnEMailAllRecords.Style.Visibility = "Hidden"
btnEmailAsAttachment.Style.Visibility = "Hidden"
ElseIf UBound(arrRows) = 0 Then
btnFirstEvent.Disabled = True
btnPreviousEvent.Disabled = True
btnNextEvent.Disabled = True
btnLastEvent.Disabled = True
btnEmailThisRecord.Disabled = False
btnEMailAllRecords.Disabled = False
btnEmailAsAttachment.Disabled = False
btnFirstEvent.Style.Visibility = "Hidden"
btnPreviousEvent.Style.Visibility = "Hidden"
btnNextEvent.Style.Visibility = "Hidden"
btnLastEvent.Style.Visibility = "Hidden"
btnEmailThisRecord.Style.Visibility = "Visible"
btnEMailAllRecords.Style.Visibility = "Visible"
btnEmailAsAttachment.Style.Visibility = "Visible"
Else
btnFirstEvent.Disabled = False
btnPreviousEvent.Disabled = False
btnNextEvent.Disabled = False
btnLastEvent.Disabled = False
btnEmailThisRecord.Disabled = False
btnEMailAllRecords.Disabled = False
btnEmailAsAttachment.Disabled = False
btnFirstEvent.Style.Visibility = "Visible"
btnPreviousEvent.Style.Visibility = "Visible"
btnNextEvent.Style.Visibility = "Visible"
btnLastEvent.Style.Visibility = "Visible"
btnEmailThisRecord.Style.Visibility = "Visible"
btnEMailAllRecords.Style.Visibility = "Visible"
btnEmailAsAttachment.Style.Visibility = "Visible"
End If
globalStrSearchBtnPush = BtnPush
globalstrSearchField = strSearchField
if chk_qbrecorder.Checked then
AddToQueryBuilder
end if
Else
MsgBox "Please type a search request into one of the fields, then click Submit."
End If
if InStr(Join(arrFields),strCurrentField) then
if strSearchField <> "INVALID" then
execute(strCurrentField & ".focus")
execute(strCurrentField & ".select()")
end if
end if
End Sub
Sub Get_Event
arrData = Split(arrRows(span_currentrecord.InnerHTML - 1), "|TD|")
txt_seatno.Value = arrData(0)
txt_building.Value = arrData(1)
txt_extensionno.Value = arrData(2)
txt_empid.Value = arrData(3)
txt_department.Value = arrData(4)
txt_designation.Value = arrData(5)
txt_name.Value = arrData(6)
txt_loginname.Value = arrData(7)
txt_email.Value = arrData(8)
txt_mailboxsize.Value = arrData(25)
txt_mailboxstore.Value = arrData(26)
txt_notes.Value = arrData(9)
if boolAllowPing then PingComputer arrData(9)
txt_computerserialno.Value = arrData(23)
arrTemp = GetComputerInfo(arrData(9))
if IsArray(arrTemp) then
txt_oupathcomputer.value = GetOUPath(replace(arrTemp(0),"""",""))
txt_computeros.value = replace(arrTemp(1),"""","")
txt_computerservicepack.value = replace(arrTemp(2),"""","")
txt_computerdescription.value = replace(arrTemp(4),"""","")
txt_computercreated.value = replace(arrTemp(3),"""","")
else
txt_oupathcomputer.value = ""
txt_computeros.value = ""
txt_computerservicepack.value = ""
txt_computerdescription.value = ""
txt_computercreated.value = ""
End if
txt_mobileno.Value = arrData(10)
txt_company.Value = arrData(11)
txt_address.Value = arrData(12)
txt_city.Value = arrData(13)
txt_state.Value = arrData(14)
txt_zipcode.Value = arrData(15)
txt_country.Value = arrData(16)
txt_homephone.Value = arrData(17)
txt_manager.Value = arrData(18)
For Each objOption in lst_managerlist.Options
objOption.RemoveNode
Next
span_managerlist.InnerHTML = "(0)"
if txt_manager.Value <> "" then
txt_managerseen.Value = mid(txt_manager.Value,4,instr(txt_manager.Value,",")-4)
set newOption = document.createElement("OPTION")
newOption.Text = txt_managerseen.Value & " (" & GetSubordinateNumbers(txt_manager.Value) & ")"
newOption.Value = txt_manager.Value
lst_managerlist.Add newOption
span_managerlist.InnerHTML = "(1)"
else
txt_managerseen.Value = txt_manager.Value
end if
txt_whencreated.Value = arrData(19)
txt_oupathuser.value = GetOUPath(arrData(21))
txt_lastlogintimestamp.value = arrData(22)
span_enabled.InnerHTML = arrData(24)
if txt_loginname.Value <> "" then
span_userorcontact.InnerHTML = "USER"
else
span_userorcontact.InnerHTML = "CONTACT"
end if
FillGroupMembershipList arrData(21), arrData(27)
End Sub
Sub First_Event
If IsArray(arrRows) = False Then
MsgBox "There are no records to display."
Else
If span_totalrecords.InnerHTML < 1 Then
MsgBox "There are no records to display"
ElseIf span_currentrecord.InnerHTML = 1 Then
MsgBox "You are already viewing the first record."
Else
span_currentrecord.InnerHTML = 1
Get_Event
End If
End If
End Sub
Sub Previous_Event
If IsArray(arrRows) = False Then
MsgBox "There are no records to display."
Else
If span_currentrecord.InnerHTML > 1 Then
span_currentrecord.InnerHTML = span_currentrecord.InnerHTML - 1
Get_Event
ElseIf span_currentrecord.InnerHTML = 1 Then
MsgBox "You are already viewing the first record."
Else
MsgBox "There are no records to display"
End If
End If
End Sub
Sub Next_Event
If IsArray(arrRows) = False Then
MsgBox "There are no records to display."
Else
If span_totalrecords.InnerHTML = 0 Then
MsgBox "There are no records for to display"
ElseIf span_currentrecord.InnerHTML = span_totalrecords.InnerHTML Then
MsgBox "You are already viewing the last record."
Else
span_currentrecord.InnerHTML = span_currentrecord.InnerHTML + 1
Get_Event
End If
End If
End Sub
Sub Last_Event
If IsArray(arrRows) = False Then
MsgBox "There are no records to display."
Else
If span_totalrecords.InnerHTML = 0 Then
MsgBox "There are no records to display"
ElseIf span_currentrecord.InnerHTML = span_totalrecords.InnerHTML Then
MsgBox "You are already viewing the last record."
Else
span_currentrecord.InnerHTML = span_totalrecords.InnerHTML
Get_Event
End If
End If
End Sub
Sub Detect_Search_Field(strCurrentField)
arrFields = Array(_
"txt_seatno", _
"txt_replacementseatno", _
"txt_building", _
"txt_extensionno", _
"txt_empid", _
"txt_department", _
"txt_designation", _
"txt_name", _
"txt_loginname", _
"txt_email", _
"txt_mailboxsize", _
"txt_mailboxstore", _
"txt_notes", _
"txt_computerserialno", _
"txt_replacedmachine", _
"txt_replacedcomputerserialno", _
"txt_oupathcomputer", _
"txt_computeros", _
"txt_computerservicepack", _
"txt_computerdescription", _
"txt_computercreated", _
"txt_mobileno", _
"txt_company", _
"txt_address", _
"txt_city", _
"txt_state", _
"txt_zipcode", _
"txt_country", _
"txt_homephone", _
"txt_managerseen", _
"txt_whencreated", _
"txt_oupathuser", _
"txt_lastlogintimestamp", _
"txt_filtersecuritygroup", _
"txt_filterdgmembership", _
"txt_filtermanagerlist", _
"txt_filterdomaincomputers" _
)
For Each strField In arrFields
If LCase(strField) <> LCase(strCurrentField) Then
Execute strField & ".style.backgroundColor=""#D3D3D3"""
Execute strField & ".Disabled = True"
End If
Next
End Sub
Function CreateHeaderRow(CSVorTABLE)
Dim arrHeader()
x = 0
if chk_seatno.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Seat No"""
x = x + 1
end if
if chk_building.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Building"""
x = x + 1
end if
if chk_extensionno.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Extension"""
x = x + 1
end if
if chk_empid.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Emp ID"""
x = x + 1
end if
if chk_department.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Department"""
x = x + 1
end if
if chk_designation.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Designation"""
x = x + 1
end if
if chk_name.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """User Name"""
x = x + 1
end if
if chk_loginname.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Login Name"""
x = x + 1
end if
if chk_email.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Email Address"""
x = x + 1
end if
if chk_mailboxsize.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Mailbox Size (MB)"""
x = x + 1
end if
if chk_mailboxstore.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Mailbox Store"""
x = x + 1
end if
if chk_notes.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Computer"""
x = x + 1
end if
if chk_computerserialno.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Serial No"""
x = x + 1
end if
if chk_oupathcomputer.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """OU Path - Computer"""
x = x + 1
end if
if chk_computeros.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Computer OS"""
x = x + 1
end if
if chk_computeros.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Service Pack"""
x = x + 1
end if
if chk_computerdescription.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Computer Description"""
x = x + 1
end if
if chk_computercreated.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Computer Account Created"""
x = x + 1
end if
if chk_mobileno.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Mobile"""
x = x + 1
end if
if chk_company.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Company"""
x = x + 1
end if
if chk_address.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Address"""
x = x + 1
end if
if chk_city.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """City"""
x = x + 1
end if
if chk_state.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """State"""
x = x + 1
end if
if chk_zipcode.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Zip Code"""
x = x + 1
end if
if chk_country.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Country"""
x = x + 1
end if
if chk_homephone.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Home Phone"""
x = x + 1
end if
if chk_manager.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Manager"""
x = x + 1
end if
if chk_subordinates.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Subordinates"""
x = x + 1
end if
if chk_whencreated.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Date Created"""
x = x + 1
end if
if chk_oupathuser.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """OU Path - User"""
x = x + 1
end if
if chk_lastlogintimestamp.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Last Logon"""
x = x + 1
end if
if chk_groupmembership.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Group Membership"""
x = x + 1
end if
if CSVorTABLE <> "" then
strHeader = strHeader & "<tr>"
for n = 0 to UBound(arrHeader)-1
strHeader = strHeader & "<td valign=""top"" align=""left""><b>" & replace(arrHeader(n),"""","") & "</b></td>"
next
strHeader = strHeader & "</tr>" & vbCRLF
else
strHeader = Join(arrHeader,",")
end if
CreateHeaderRow = strHeader
End Function
Function PopulateTableForCSV(CSVorTABLE)
For intRow = LBound(arrRows) To UBound(arrRows)
arrData = Split(arrRows(intRow), "|TD|")
x = 0
if chk_seatno.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(0) & """"
x = x + 1
end if
if chk_building.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(1) & """"
x = x + 1
end if
if chk_extensionno.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(2) & """"
x = x + 1
end if
if chk_empid.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(3) & """"
x = x + 1
end if
if chk_department.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(4) & """"
x = x + 1
end if
if chk_designation.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(5) & """"
x = x + 1
end if
if chk_name.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(6) & """"
x = x + 1
end if
if chk_loginname.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(7) & """"
x = x + 1
end if
if chk_email.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(8) & """"
x = x + 1
end if
if chk_mailboxsize.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(25) & """"
x = x + 1
end if
if chk_mailboxstore.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(26) & """"
x = x + 1
end if
if chk_notes.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(9) & """"
x = x + 1
end if
if chk_computerserialno.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(23) & """"
x = x + 1
end if
arrTemp = GetComputerInfo(arrData(9))
if IsArray(arrTemp) then
if chk_oupathcomputer.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & GetOUPath(replace(arrTemp(0),"""","")) & """"
x = x + 1
end if
if chk_computeros.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & replace(arrTemp(1),"""","") & """"
x = x + 1
end if
if chk_computeros.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & replace(arrTemp(2),"""","") & """"
x = x + 1
end if
if chk_computerdescription.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & replace(arrTemp(4),"""","") & """"
x = x + 1
end if
if chk_computercreated.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & replace(arrTemp(3),"""","") & """"
x = x + 1
end if
else
if chk_oupathcomputer.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & """"
x = x + 1
end if
if chk_computeros.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & """"
x = x + 1
end if
if chk_computeros.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & """"
x = x + 1
end if
if chk_computerdescription.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & """"
x = x + 1
end if
if chk_computercreated.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & """"
x = x + 1
end if
end if
if chk_mobileno.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(10) & """"
x = x + 1
end if
if chk_company.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(11) & """"
x = x + 1
end if
if chk_address.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(12) & """"
x = x + 1
end if
if chk_city.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(13) & """"
x = x + 1
end if
if chk_state.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(14) & """"
x = x + 1
end if
if chk_zipcode.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(15) & """"
x = x + 1
end if
if chk_country.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(16) & """"
x = x + 1
end if
if chk_homephone.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(17) & """"
x = x + 1
end if
if chk_manager.Checked then
ReDim Preserve arrFileData(x)
if arrData(18) <> "" then
arrFileData(x) = """" & mid(arrData(18),4,instr(arrData(18),",")-4) & """"
else
arrFileData(x) = """" & """"
end if
x = x + 1
end if
if chk_subordinates.Checked then
for each strDomain in arrDomainNames
strSearchField = "(manager=" & arrData(21) & ")"
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(&(objectCategory=person)(objectClass=user)" & strSearchField & ")"
' Comma delimited list of attribute values to retrieve.
strAttributes = "cn,samAccountName,whenCreated,distinguishedName,userAccountControl"
Set adoConnection = CreateObject("ADODB.Connection")
Set adoCommand = CreateObject("ADODB.Command")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
Set adoCommand.ActiveConnection = adoConnection
' Construct the LDAP syntax query.
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 100
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False
' Run the query.
Set adoRecordset = adoCommand.Execute
boolFoundFirst = False
str_subordinates = ""
Do Until adoRecordset.EOF
strField = adoRecordset.Fields("cn").Value
if boolFoundFirst then
str_subordinates = str_subordinates & ", " & strField
else
boolFoundFirst = True
str_subordinates = str_subordinates & strField
end if
adoRecordset.MoveNext
Loop
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & str_subordinates & """"
x = x + 1
next
end if
if chk_whencreated.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(19) & """"
x = x + 1
end if
if chk_oupathuser.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & GetOUPath(arrData(21)) & """"
x = x + 1
end if
if chk_lastlogintimestamp.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(22) & """"
x = x + 1
end if
if chk_groupmembership.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & ReportGroupMemberShipList(arrData(21), arrData(27)) & """"
x = x + 1
end if
if CSVorTABLE <> "" then
strFileData = strFileData & "<tr>"
for n = 0 to UBound(arrFileData)-1
strEntry = replace(arrFileData(n),"""","")
if strEntry = "" then strEntry = " "
strFileData = strFileData & "<td valign=""top"" align=""left"">" & strEntry & "</td>"
next
strFileData = strFileData & "</tr>" & vbCRLF
else
strFileData = strFileData & Join(arrFileData,",") & vbCRLF
end if
Next
PopulateTableForCSV = strFileData
End Function
Sub RunScript
on error resume next
Dim oDLG
Set oDLG=CreateObject("MSComDlg.CommonDialog")
if err.number > 0 then
err.clear
oDLG = window.prompt("Please enter the path and file name to save.", "D:\HTA-Result-Set.csv")
if oDLG <> "" then
strAnswer = oDLG
End If
else
With oDLG
.DialogTitle = "Save As"
.Filter="CSV File|*.csv"
.MaxFileSize = 255
.ShowSave
If .FileName <> "" Then
strAnswer = .FileName
End If
End With
end if
Set oDLG=Nothing
If IsNull(strAnswer) or strAnswer = "" Then
'Do nothing
Else
if globalstrSearchBtnPush <> "" then
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(strAnswer) = True Then
objFSO.DeleteFile strAnswer, True
end if
Set objFile = objFSO.CreateTextFile(strAnswer, True)
objFile.Write CreateHeaderRow("") & vbCRLF
objFile.Write PopulateTableForCSV("")
objFile.Close
MsgBox "Saved."
else
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(strAnswer) = True Then
objFSO.DeleteFile strAnswer, True
Else
' do nothing
end if
Set objFile = objFSO.CreateTextFile(strAnswer, True)
objFile.Write """Security Groups""" & VbCrLf
For Each objOption in lst_groupnames.Options
objFile.Write """" & objOption.Text & """" & VbCrLf
Next
objFile.Write """Distribution Groups""" & VbCrLf
For Each objOption in lst_dgnames.Options
objFile.Write """" & objOption.Text & """" & VbCrLf
Next
objFile.Close
MsgBox "Saved."
End if
End If
End Sub
Sub Email_This_Record
ShowDialogTo
ShowDialogCC
ConvertNamesToEmailAddresses
arrData = Split(arrRows(span_currentrecord.InnerHTML - 1), "|TD|")
if chk_seatno.Checked then
str_seatno = "<b>Seat No: </b>" & txt_seatno.value & "<br>" & vbCRLF
else
str_seatno = ""
end if
if chk_replacementseatno.Checked then
str_replacementseatno = "<b>These are the replacement details</b><br><b>Seat No: </b>" & txt_replacementseatno.value & "<br>" & vbCRLF
else
str_replacementseatno = ""
end if
if chk_building.Checked then
str_building = "<b>Building: </b>" & txt_building.value & "<br>" & vbCRLF
else
str_building = ""
end if
if chk_extensionno.Checked then
str_extensionno = "<b>Extension No: </b>" & txt_extensionno.value & "<br>" & vbCRLF
else
str_extensionno = ""
end if
if chk_empid.Checked then
str_empid = "<b>Emp ID: </b>" & txt_empid.value & "<br>" & vbCRLF
else
str_empid = ""
end if
if chk_department.Checked then
str_department = "<b>Department: </b>" & txt_department.value & "<br>" & vbCRLF
else
str_department = ""
end if
if chk_designation.Checked then
str_designation = "<b>Designation: </b>" & txt_designation.value & "<br>" & vbCRLF
else
str_designation = ""
end if
if chk_name.Checked then
str_name = "<b>User Name: </b>" & txt_name.value & "<br>" & vbCRLF
else
str_name = ""
end if
if chk_loginname.Checked then
str_loginname = "<b>Login Name: </b>" & txt_loginname.value & "<br>" & vbCRLF
else
str_loginname = ""
end if
if chk_email.Checked then
str_email = "<b>Email Address: </b>" & txt_email.value & "<br>" & vbCRLF
else
str_email = ""
end if
if chk_mailboxsize.Checked then
str_mailboxsize = "<b>Mailbox Size (MB): </b>" & txt_mailboxsize.value & "<br>" & vbCRLF
else
str_mailboxsize = ""
end if
if chk_mailboxstore.Checked then
str_mailboxstore = "<b>Mailbox Store: </b>" & txt_mailboxstore.value & "<br>" & vbCRLF
else
str_mailboxstore = ""
end if
if chk_notes.Checked then
str_notes = "<b>Machine Name: </b>" & txt_notes.value & "<br>" & vbCRLF
else
str_notes = ""
end if
if chk_computerserialno.Checked then
str_computerserialno = "<b>Serial No: </b>" & txt_computerserialno.value & "<br>" & vbCRLF
else
str_computerserialno = ""
end if
if chk_replacedmachine.Checked then
str_replacedmachine = "<b>These are the replacement details</b><br><b>Machine Name: </b>" & txt_replacedmachine.value & "<br>" & vbCRLF
else
str_replacedmachine = ""
end if
if chk_replacedcomputerserialno.Checked then
str_replacedcomputerserialno = "<b>Replaced Serial No: </b>" & txt_replacedcomputerserialno.value & "<br>" & vbCRLF
else
str_replacedcomputerserialno = ""
end if
arrTemp = GetComputerInfo(arrData(9))
if IsArray(arrTemp) then
if chk_oupathcomputer.Checked then
str_oupathcomputer = "<b>OU Path - Computer: </b>" & txt_oupathcomputer.value & "<br>" & vbCRLF
else
str_oupathcomputer = ""
end if
if chk_computeros.Checked then
str_computeros = "<b>Computer OS: </b>" & txt_computeros.value & "<br>" & vbCRLF
else
str_computeros = ""
end if
if chk_computeros.Checked then
str_computerservicepack = "<b>Service Pack: </b>" & txt_computerservicepack.value & "<br>" & vbCRLF
else
str_computerservicepack = ""
end if
if chk_computerdescription.Checked then
str_computerdescription = "<b>Computer Description: </b>" & txt_computerdescription.value & "<br>" & vbCRLF
else
str_computerdescription = ""
end if
if chk_computercreated.Checked then
str_computercreated = "<b>Computer Account Created: </b>" & txt_computercreated.value & "<br>" & vbCRLF
else
str_computercreated = ""
end if
else
if chk_oupathcomputer.Checked then
str_oupathcomputer = "<b>OU Path - Computer: </b>" & "<br>" & vbCRLF
else
str_oupathcomputer = ""
end if
if chk_computeros.Checked then
str_computeros = "<b>Computer OS: </b>" & "<br>" & vbCRLF
else
str_computeros = ""
end if
if chk_computeros.Checked then
str_computerservicepack = "<b>Service Pack: </b>" & "<br>" & vbCRLF
else
str_computerservicepack = ""
end if
if chk_computerdescription.Checked then
str_computerdescription = "<b>Computer Description: </b>" & "<br>" & vbCRLF
else
str_computerdescription = ""
end if
if chk_computercreated.Checked then
str_computercreated = "<b>Computer Account Created: </b>" & "<br>" & vbCRLF
else
str_computercreated = ""
end if
end if
if chk_mobileno.Checked then
str_mobileno = "<b>Mobile Number: </b>" & txt_mobileno.value & "<br>" & vbCRLF
else
str_mobileno = ""
end if
if chk_company.Checked then
str_company = "<b>Company: </b>" & txt_company.value & "<br>" & vbCRLF
else
str_company = ""
end if
if chk_address.Checked then
str_address = "<b>Address: </b>" & txt_address.value & "<br>" & vbCRLF
else
str_address = ""
end if
if chk_city.Checked then
str_city = "<b>City: </b>" & txt_city.value & "<br>" & vbCRLF
else
str_city = ""
end if
if chk_state.Checked then
str_state = "<b>State: </b>" & txt_state.value & "<br>" & vbCRLF
else
str_state = ""
end if
if chk_zipcode.Checked then
str_zipcode = "<b>Zip Code: </b>" & txt_zipcode.value & "<br>" & vbCRLF
else
str_zipcode = ""
end if
if chk_country.Checked then
str_country = "<b>Country: </b>" & txt_country.value & "<br>" & vbCRLF
else
str_country = ""
end if
if chk_homephone.Checked then
str_homephone = "<b>Home Phone: </b>" & txt_homephone.value & "<br>" & vbCRLF
else
str_homephone = ""
end if
if chk_manager.Checked then
if arrData(18) <> "" then
str_manager = "<b>Manager: </b>" & mid(arrData(18),4,instr(arrData(18),",")-4) & "<br>" & vbCRLF
else
str_manager = ""
end if
else
str_manager = ""
end if
if chk_subordinates.Checked then
str_subordinates = "<b>Subordinates: </b>"
boolFoundFirst = False
str_subordinates = ""
For Each objOption in lst_subordinates.Options
if boolFoundFirst then
str_subordinates = str_subordinates & ", " & objOption.Text
else
boolFoundFirst = True
str_subordinates = str_subordinates & objOption.Text
end if
Next
str_subordinates = str_subordinates & "<br>" & vbCRLF
else
str_subordinates = ""
end if
if chk_whencreated.Checked then
str_whencreated = "<b>Date Created: </b>" & txt_whencreated.value & "<br>" & vbCRLF
else
str_whencreated = ""
end if
if chk_oupathuser.Checked then
str_oupathuser = "<b>OU Path - User: </b>" & txt_oupathuser.value & "<br>" & vbCRLF
else
str_oupathuser = ""
end if
if chk_lastlogintimestamp.Checked then
str_lastlogintimestamp = "<b>Last Logon: </b>" & txt_lastlogintimestamp.value & "<br>" & vbCRLF
else
str_lastlogintimestamp = ""
end if
if chk_groupmembership.Checked then
str_groupmembership = "<b>Group Membership: </b>" & ReportGroupMemberShipList(arrData(21), arrData(27)) & "<br>" & vbCRLF
else
str_groupmembership = ""
end if
str_message = str_seatno & _
str_replacementseatno & _
str_building & _
str_extensionno & _
str_empid & _
str_department & _
str_designation & _
str_name & _
str_loginname & _
str_email & _
str_mailboxsize & _
str_mailboxstore & _
str_notes & _
str_computerserialno & _
str_replacedmachine & _
str_replacedcomputerserialno & _
str_oupathcomputer & _
str_computeros & _
str_computerservicepack & _
str_computerdescription & _
str_computercreated & _
str_mobileno & _
str_company & _
str_address & _
str_city & _
str_state & _
str_zipcode & _
str_country & _
str_homephone & _
str_manager & _
str_subordinates & _
str_whencreated & _
str_oupathuser & _
str_lastlogintimestamp & _
str_groupmembership
if trim(txt_EmailSubject.value) = "" then
strEmailSubject = "Active Directory Detail Report"
else
strEmailSubject = trim(txt_EmailSubject.value)
end if
Set objMessage = CreateObject("CDO.Message")
objMessage.From = strEmailFrom
objMessage.To = strEmailTo
objMessage.CC = strEmailCC
objMessage.BCC = strEmailBCC
objMessage.Subject = strEmailSubject
objMessage.HTMLBody = trim(txt_EmailBody.value) & "<br><br>" & vbCRLF & vbCRLF & str_message
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strEmailServer
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objMessage.Configuration.Fields.Update
objMessage.Send
MsgBox "An email has been sent"
End Sub
Sub Email_All_Records
ShowDialogTo
ShowDialogCC
ConvertNamesToEmailAddresses
str_message = ""
if boolTableReports then
str_message = str_message & "<table width=""100%"" border=""1"">" & vbCRLF
str_message = str_message & CreateHeaderRow("Table") & vbCRLF
str_message = str_message & PopulateTableForCSV("Table") & vbCRLF
str_message = str_message & "</table>" & vbCRLF
else
for n = 0 to UBound(arrRows)
arrData = Split(arrRows(n), "|TD|")
if chk_seatno.Checked then
str_seatno = "<b>Seat No: </b>" & arrData(0) & "<br>" & vbCRLF
else
str_seatno = ""
end if
if chk_building.Checked then
str_building = "<b>Building: </b>" & arrData(1) & "<br>" & vbCRLF
else
str_building = ""
end if
if chk_extensionno.Checked then
str_extensionno = "<b>Extension No: </b>" & arrData(2) & "<br>" & vbCRLF
else
str_extensionno = ""
end if
if chk_empid.Checked then
str_empid = "<b>Emp ID: </b>" & arrData(3) & "<br>" & vbCRLF
else
str_empid = ""
end if
if chk_department.Checked then
str_department = "<b>Department: </b>" & arrData(4) & "<br>" & vbCRLF
else
str_department = ""
end if
if chk_designation.Checked then
str_designation = "<b>Designation: </b>" & arrData(5) & "<br>" & vbCRLF
else
str_designation = ""
end if
if chk_name.Checked then
str_name = "<b>User Name: </b>" & arrData(6) & "<br>" & vbCRLF
else
str_name = ""
end if
if chk_loginname.Checked then
str_loginname = "<b>Login Name: </b>" & arrData(7) & "<br>" & vbCRLF
else
str_loginname = ""
end if
if chk_email.Checked then
str_email = "<b>Email Address: </b>" & arrData(8) & "<br>" & vbCRLF
else
str_email = ""
end if
if chk_mailboxsize.Checked then
str_mailboxsize = "<b>Mailbox Size (MB): </b>" & arrData(25) & "<br>" & vbCRLF
else
str_mailboxsize = ""
end if
if chk_mailboxstore.Checked then
str_mailboxstore = "<b>Mailbox Store: </b>" & arrData(26) & "<br>" & vbCRLF
else
str_mailboxstore = ""
end if
if chk_notes.Checked then
str_notes = "<b>Machine Name: </b>" & arrData(9) & "<br>" & vbCRLF
else
str_notes = ""
end if
if chk_computerserialno.Checked then
str_computerserialno = "<b>Serial No: </b>" & arrData(23) & "<br>" & vbCRLF
else
str_computerserialno = ""
end if
arrTemp = GetComputerInfo(arrData(9))
if IsArray(arrTemp) then
if chk_oupathcomputer.Checked then
str_oupathcomputer = "<b>OU Path - Computer: </b>" & GetOUPath(replace(arrTemp(0),"""","")) & "<br>" & vbCRLF
else
str_oupathcomputer = ""
end if
if chk_computeros.Checked then
str_computeros = "<b>Computer OS: </b>" & replace(arrTemp(1),"""","") & "<br>" & vbCRLF
else
str_computeros = ""
end if
if chk_computeros.Checked then
str_computerservicepack = "<b>Service Pack: </b>" & replace(arrTemp(2),"""","") & "<br>" & vbCRLF
else
str_computerservicepack = ""
end if
if chk_computerdescription.Checked then
str_computerdescription = "<b>Computer Description: </b>" & replace(arrTemp(4),"""","") & "<br>" & vbCRLF
else
str_computerdescription = ""
end if
if chk_computercreated.Checked then
str_computercreated = "<b>Computer Account Created: </b>" & replace(arrTemp(3),"""","") & "<br>" & vbCRLF
else
str_computercreated = ""
end if
else
if chk_oupathcomputer.Checked then
str_oupathcomputer = "<b>OU Path - Computer: </b>" & "<br>" & vbCRLF
else
str_oupathcomputer = ""
end if
if chk_computeros.Checked then
str_computeros = "<b>Computer OS: </b>" & "<br>" & vbCRLF
else
str_computeros = ""
end if
if chk_computeros.Checked then
str_computerservicepack = "<b>Service Pack: </b>" & "<br>" & vbCRLF
else
str_computerservicepack = ""
end if
if chk_computerdescription.Checked then
str_computerdescription = "<b>Computer Description: </b>" & "<br>" & vbCRLF
else
str_computerdescription = ""
end if
if chk_computercreated.Checked then
str_computercreated = "<b>Computer Account Created: </b>" & "<br>" & vbCRLF
else
str_computercreated = ""
end if
end if
if chk_mobileno.Checked then
str_mobileno = "<b>Mobile Number: </b>" & arrData(10) & "<br>" & vbCRLF
else
str_mobileno = ""
end if
if chk_company.Checked then
str_company = "<b>Company: </b>" & arrData(11) & "<br>" & vbCRLF
else
str_company = ""
end if
if chk_address.Checked then
str_address = "<b>Address: </b>" & arrData(12) & "<br>" & vbCRLF
else
str_address = ""
end if
if chk_city.Checked then
str_city = "<b>City: </b>" & arrData(13) & "<br>" & vbCRLF
else
str_city = ""
end if
if chk_state.Checked then
str_state = "<b>State: </b>" & arrData(14) & "<br>" & vbCRLF
else
str_state = ""
end if
if chk_zipcode.Checked then
str_zipcode = "<b>Zip Code: </b>" & arrData(15) & "<br>" & vbCRLF
else
str_zipcode = ""
end if
if chk_country.Checked then
str_country = "<b>Country: </b>" & arrData(16) & "<br>" & vbCRLF
else
str_country = ""
end if
if chk_homephone.Checked then
str_homephone = "<b>Home Phone: </b>" & arrData(17) & "<br>" & vbCRLF
else
str_homephone = ""
end if
if chk_manager.Checked then
if arrData(18) <> "" then
str_manager = "<b>Manager: </b>" & mid(arrData(18),4,instr(arrData(18),",")-4) & "<br>" & vbCRLF
else
str_manager = ""
end if
else
str_manager = ""
end if
if chk_subordinates.Checked then
for each strDomain in arrDomainNames
strSearchField = "(manager=" & arrData(21) & ")"
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(&(objectCategory=person)(objectClass=user)" & strSearchField & ")"
' Comma delimited list of attribute values to retrieve.
strAttributes = "cn,samAccountName,whenCreated,distinguishedName,userAccountControl"
Set adoConnection = CreateObject("ADODB.Connection")
Set adoCommand = CreateObject("ADODB.Command")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
Set adoCommand.ActiveConnection = adoConnection
' Construct the LDAP syntax query.
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 100
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False
' Run the query.
Set adoRecordset = adoCommand.Execute
boolFoundFirst = False
str_subordinates = "<b>Subordinates: </b>"
Do Until adoRecordset.EOF
strField = adoRecordset.Fields("cn").Value
if boolFoundFirst then
str_subordinates = str_subordinates & ", " & strField
else
boolFoundFirst = True
str_subordinates = str_subordinates & strField
end if
adoRecordset.MoveNext
Loop
str_subordinates = str_subordinates & "<br>" & vbCRLF
next
else
str_subordinates = ""
end if
if chk_whencreated.Checked then
str_whencreated = "<b>Date Created: </b>" & arrData(19) & "<br>" & vbCRLF
else
str_whencreated = ""
end if
if chk_oupathuser.Checked then
str_oupathuser = "<b>OU Path - User: </b>" & GetOUPath(arrData(21)) & "<br>" & vbCRLF
else
str_oupathuser = ""
end if
if chk_lastlogintimestamp.Checked then
str_lastlogintimestamp = "<b>Last Logon: </b>" & arrData(22) & "<br>" & vbCRLF
else
str_lastlogintimestamp = ""
end if
if chk_groupmembership.Checked then
str_groupmembership = "<b>Group Membership: </b>" & ReportGroupMemberShipList(arrData(21), arrData(27)) & "<br>" & vbCRLF
else
str_groupmembership = ""
end if
str_message = str_message & _
str_seatno & _
str_building & _
str_extensionno & _
str_empid & _
str_department & _
str_designation & _
str_name & _
str_loginname & _
str_email & _
str_mailboxsize & _
str_mailboxstore & _
str_notes & _
str_computerserialno & _
str_oupathcomputer & _
str_computeros & _
str_computerservicepack & _
str_computerdescription & _
str_computercreated & _
str_mobileno & _
str_company & _
str_address & _
str_city & _
str_state & _
str_zipcode & _
str_country & _
str_homephone & _
str_manager & _
str_subordinates & _
str_whencreated & _
str_oupathuser & _
str_lastlogintimestamp & _
str_groupmembership & VbCrLf & "<br><hr><br><br>" & vbCRLF
next
end if
if trim(txt_EmailSubject.value) = "" then
strEmailSubject = "Active Directory Detail Report"
else
strEmailSubject = trim(txt_EmailSubject.value)
end if
Set objMessage = CreateObject("CDO.Message")
objMessage.From = strEmailFrom
objMessage.To = strEmailTo
objMessage.CC = strEmailCC
objMessage.BCC = strEmailBCC
objMessage.Subject = strEmailSubject
objMessage.HTMLBody = trim(txt_EmailBody.value) & "<br><br>" & vbCRLF & vbCRLF & str_message
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strEmailServer
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objMessage.Configuration.Fields.Update
objMessage.Send
MsgBox "An email has been sent"
End Sub
Sub Email_As_Attachment
ShowDialogTo
ShowDialogCC
ConvertNamesToEmailAddresses
strAnswer = fTemp & "\HTAResults.csv"
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(strAnswer) = True Then
objFSO.DeleteFile strAnswer, True
end if
Set objFile = objFSO.CreateTextFile(strAnswer, True)
objFile.Write CreateHeaderRow("") & vbCRLF
objFile.Write PopulateTableForCSV("")
objFile.Close
if trim(txt_EmailSubject.value) = "" then
strEmailSubject = "Active Directory Detail Report"
else
strEmailSubject = trim(txt_EmailSubject.value)
end if
Set objMessage = CreateObject("CDO.Message")
objMessage.From = strEmailFrom
objMessage.To = strEmailTo
objMessage.CC = strEmailCC
objMessage.BCC = strEmailBCC
objMessage.Subject = strEmailSubject
objMessage.TextBody = trim(txt_EmailBody.value) & vbCRLF & vbCRLF
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strEmailServer
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objMessage.Configuration.Fields.Update
objMessage.AddAttachment strAnswer
objMessage.Send
MsgBox "An email has been sent"
objFSO.DeleteFile strAnswer, True
End Sub
Sub SelectAllCheck
If chk_selectall.Checked then
CheckAllBoxes
TestToSeeWhatLinesAreHidden
else
UnCheckAllBoxes
end if
End Sub
Sub UnCheckAllBoxes
chk_selectall.Checked = False
chk_seatno.Checked = False
chk_replacementseatno.Checked = False
chk_building.Checked = False
chk_extensionno.Checked = False
chk_seatno.Checked = False
chk_empid.Checked = False
chk_department.Checked = False
chk_designation.Checked = False
chk_name.Checked = False
chk_loginname.Checked = False
chk_email.Checked = False
chk_mailboxsize.Checked = False
chk_mailboxstore.Checked = False
chk_notes.Checked = False
chk_computerserialno.Checked = False
chk_replacedmachine.Checked = False
chk_replacedcomputerserialno.Checked = False
chk_oupathcomputer.Checked = False
chk_computeros.Checked = False
chk_computerdescription.Checked = False
chk_computercreated.Checked = False
chk_mobileno.Checked = False
chk_company.Checked = False
chk_address.Checked = False
chk_city.Checked = False
chk_state.Checked = False
chk_zipcode.Checked = False
chk_country.Checked = False
chk_homephone.Checked = False
chk_manager.Checked = False
chk_whencreated.Checked = False
chk_oupathuser.Checked = False
chk_lastlogintimestamp.Checked = False
chk_groupmembership.Checked = False
chk_dgmembership.Checked = False
chk_managerlist.Checked = False
chk_subordinates.Checked = False
End Sub
Sub CheckAllBoxes
chk_selectall.Checked = True
chk_seatno.Checked = True
chk_replacementseatno.Checked = True
chk_building.Checked = True
chk_extensionno.Checked = True
chk_empid.Checked = True
chk_department.Checked = True
chk_designation.Checked = True
chk_name.Checked = True
chk_loginname.Checked = True
chk_email.Checked = True
chk_mailboxsize.Checked = True
chk_mailboxstore.Checked = True
chk_notes.Checked = True
chk_computerserialno.Checked = True
chk_replacedmachine.Checked = True
chk_replacedcomputerserialno.Checked = True
chk_oupathcomputer.Checked = True
chk_computeros.Checked = True
chk_computerdescription.Checked = True
chk_computercreated.Checked = True
chk_mobileno.Checked = True
chk_company.Checked = True
chk_address.Checked = True
chk_city.Checked = True
chk_state.Checked = True
chk_zipcode.Checked = True
chk_country.Checked = True
chk_homephone.Checked = True
chk_manager.Checked = True
chk_whencreated.Checked = True
chk_oupathuser.Checked = True
chk_lastlogintimestamp.Checked = True
chk_groupmembership.Checked = True
chk_dgmembership.Checked = True
chk_managerlist.Checked = True
chk_subordinates.Checked = True
End Sub
Function GetUsersEmailAddress
Set oNet = CreateObject("WScript.NetWork")
sSearchField = "(samAccountName=*" & oNet.UserName & "*)"
Set objRootDSE = GetObject("LDAP://RootDSE")
sDNSDomain = objRootDSE.Get("defaultNamingContext")
sBase = "<LDAP://" & sDNSDomain & ">"
sFilter = "(&(objectCategory=person)(objectClass=user)" & sSearchField & ")"
sAttributes = "cn,samAccountName,mail"
sQuery = sBase & ";" & sFilter & ";" & sAttributes & ";subtree"
Set aCommand = CreateObject("ADODB.Command")
Set aConnection = CreateObject("ADODB.Connection")
aConnection.Provider = "ADsDSOObject"
aConnection.Open "Active Directory Provider"
aCommand.ActiveConnection = aConnection
aCommand.CommandText = sQuery
aCommand.Properties("Page Size") = 100
aCommand.Properties("Timeout") = 30
aCommand.Properties("Cache Results") = False
Set aRecordset = aCommand.Execute
GetUsersEmailAddress = aRecordset.Fields("cn").Value
End Function
Sub ShowDialogCC
Const adVarChar = 200
Const MaxCharacters = 255
strValidEmail = ""
arrResolve = split(txt_EmailCC.Value,";")
for each strResolve in arrResolve
strResolve = trim(strResolve)
if instr(strResolve,"@") then
'Treat as valid email address
strValidEmail = strValidEmail & strResolve & ";"
elseif strResolve <> "" then
Set objRoot = GetObject("LDAP://rootDSE")
strDomain = "LDAP://" & objRoot.Get("defaultNamingContext")
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.CommandText = "<" & strDomain & ">;(&(objectCategory=person)" & _
"(mail=*)(cn=*" & strResolve & "*));cn,samAccountName,mail;subtree"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 90
objCommand.Properties("Cache Results") = False
Set objRecordSet1 = objCommand.Execute
intCount = 0
While Not objRecordSet1.EOF
intCount = intCount + 1
strFullName = objRecordSet1.Fields("cn").Value
objRecordSet1.MoveNext
Wend
if intCount = 0 then
msgbox "The name """ & strResolve & """ could not be found. The name has been removed from the field."
end if
if intCount = 1 then
strValidEmail = strValidEmail & strFullName & ";"
end if
if intCount > 1 then
strSample = ShowModalDialog("modaldialog.hta",strResolve)
strValidEmail = strValidEmail & strSample & ";"
end if
end if
next
txt_EmailCC.Value = strValidEmail
End Sub
Sub ShowDialogTo
Const adVarChar = 200
Const MaxCharacters = 255
strValidEmail = ""
arrResolve = split(txt_EmailTo.Value,";")
for each strResolve in arrResolve
strResolve = trim(strResolve)
if instr(strResolve,"@") then
'Treat as valid email address
strValidEmail = strValidEmail & strResolve & ";"
elseif strResolve <> "" then
Set objRoot = GetObject("LDAP://rootDSE")
strDomain = "LDAP://" & objRoot.Get("defaultNamingContext")
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.CommandText = "<" & strDomain & ">;(&(objectCategory=person)" & _
"(mail=*)(cn=*" & strResolve & "*));cn,samAccountName,mail;subtree"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 90
objCommand.Properties("Cache Results") = False
Set objRecordSet1 = objCommand.Execute
intCount = 0
While Not objRecordSet1.EOF
intCount = intCount + 1
strFullName = objRecordSet1.Fields("cn").Value
objRecordSet1.MoveNext
Wend
if intCount = 0 then
msgbox "The name """ & strResolve & """ could not be found. The name has been removed from the field."
end if
if intCount = 1 then
strValidEmail = strValidEmail & strFullName & ";"
end if
if intCount > 1 then
strSample = ShowModalDialog("modaldialog.hta",strResolve)
strValidEmail = strValidEmail & strSample & ";"
end if
end if
next
txt_EmailTo.Value = strValidEmail
End Sub
Sub ShowDialogFrom
Const adVarChar = 200
Const MaxCharacters = 255
strValidEmail = ""
arrResolve = split(txt_EmailFrom.Value,";")
for each strResolve in arrResolve
strResolve = trim(strResolve)
if instr(strResolve,"@") then
'Treat as valid email address
strValidEmail = strValidEmail & strResolve & ";"
elseif strResolve <> "" then
Set objRoot = GetObject("LDAP://rootDSE")
strDomain = "LDAP://" & objRoot.Get("defaultNamingContext")
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.CommandText = "<" & strDomain & ">;(&(objectCategory=person)" & _
"(mail=*)(cn=*" & strResolve & "*));cn,samAccountName,mail;subtree"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 90
objCommand.Properties("Cache Results") = False
Set objRecordSet1 = objCommand.Execute
intCount = 0
While Not objRecordSet1.EOF
intCount = intCount + 1
strFullName = objRecordSet1.Fields("cn").Value
objRecordSet1.MoveNext
Wend
if intCount = 0 then
msgbox "The name """ & strResolve & """ could not be found. The name has been removed from the field."
end if
if intCount = 1 then
strValidEmail = strValidEmail & strFullName & ";"
end if
if intCount > 1 then
strSample = ShowModalDialog("modaldialog.hta",strResolve)
strValidEmail = strValidEmail & strSample & ";"
end if
end if
next
txt_EmailFrom.Value = strValidEmail
End Sub
Sub FillGroupMembershipList(usersDistinguishedname,usersPrimaryGroupToken)
on error resume next
Set objlst_groupnames = document.getElementById( "lst_groupnames" )
objlst_groupnames.ListItems.Clear
Set objlst_dgnames = document.getElementById( "lst_dgnames" )
objlst_dgnames.ListItems.Clear
For Each objOption in lst_subordinates.Options
objOption.RemoveNode
Next
intGroupMembership = 0
intdgmembership = 0
intsubordinates = 0
' This section is to pull group membership names
GroupMembershipDB.Filter = "memberDistinguishedname = '" & usersDistinguishedname & "' OR PrimaryGroupToken = '" & usersPrimaryGroupToken & "'"
GroupMembershipDB.Sort = "SAMAccountName"
GroupMembershipDB.MoveFirst
strLastGroupDN = ""
Do Until GroupMembershipDB.EOF
strGroupType = GroupMembershipDB.Fields.Item("samaccounttype").Value
strNTName = GroupMembershipDB.Fields.Item("samaccountname").Value
strPrimary = GroupMembershipDB.Fields.Item("PrimaryGroupToken").Value
strdistinguishedName = GroupMembershipDB.Fields.Item("distinguishedName").Value
intNumberOfMembers = dicGroupNumbers.Item(strdistinguishedName)
if strLastGroupDN <> strdistinguishedName then
Select Case strGroupType
Case "[GDG]", "[LDG]", "[UDG]"
Set objListItem = objlst_dgnames.ListItems.Add
objListItem.Text = strNTName
objListItem.ListSubItems.Add.Text = intNumberOfMembers
objListItem.ListSubItems.Add.Text = strGroupType
objListItem.ListSubItems.Add.Text = strdistinguishedName
objListItem.ListSubItems.Add.Text = strPrimary
Case "[GSG]", "[LSG]", "[USG]"
Set objListItem = objlst_groupnames.ListItems.Add
objListItem.Text = strNTName
objListItem.ListSubItems.Add.Text = intNumberOfMembers
objListItem.ListSubItems.Add.Text = strGroupType
objListItem.ListSubItems.Add.Text = strdistinguishedName
objListItem.ListSubItems.Add.Text = strPrimary
Case "[Unknown]"
Set objListItem = objlst_groupnames.ListItems.Add
objListItem.Text = strNTName
objListItem.ListSubItems.Add.Text = intNumberOfMembers
objListItem.ListSubItems.Add.Text = strGroupType
objListItem.ListSubItems.Add.Text = strdistinguishedName
objListItem.ListSubItems.Add.Text = strPrimary
End Select
strLastGroupDN = strdistinguishedName
End if
GroupMembershipDB.MoveNext
Loop
' This section is to pull subordinate names
Set objRootDSE = GetObject("LDAP://RootDSE")
strDNSDomain = objRootDSE.Get("defaultNamingContext")
Set adoConnection = CreateObject("ADODB.Connection")
Set adoCommand = CreateObject("ADODB.Command")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
Set adoCommand.ActiveConnection = adoConnection
strSearchField = "(manager=" & usersDistinguishedname & ")"
strBase = "<LDAP://" & strDNSDomain & ">"
strFilter = "(&(objectCategory=person)(objectClass=user)" & strSearchField & ")"
' Comma delimited list of attribute values to retrieve.
strAttributes = "cn,samAccountName,whenCreated,distinguishedName,userAccountControl"
' Construct the LDAP syntax query.
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 100
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False
' Run the query.
Set adoRecordset = adoCommand.Execute
Do Until adoRecordset.EOF
set newOption = document.createElement("OPTION")
newOption.Text = adoRecordset.Fields("cn").Value & " (" & GetSubordinateNumbers(adoRecordset.Fields("distinguishedName").Value) & ")"
newOption.Value = adoRecordset.Fields("samAccountName").Value & ";" & adoRecordset.Fields("distinguishedName").Value
lst_subordinates.Add newOption
adoRecordset.MoveNext
intsubordinates = intsubordinates + 1
Loop
span_groupmembership.InnerHTML = "(" & lst_groupnames.ListItems.Count & ")"
span_dgmembership.InnerHTML = "(" & lst_dgnames.ListItems.Count & ")"
span_subordinates.InnerHTML = "(" & intsubordinates & ")"
End Sub
Function ReportGroupMembershipList(usersDistinguishedname,usersPrimaryGroupToken)
GroupMembershipDB.Filter = "memberDistinguishedname = '" & usersDistinguishedname & "' OR PrimaryGroupToken = '" & usersPrimaryGroupToken & "'"
GroupMembershipDB.Sort = "SAMAccountName"
GroupMembershipDB.MoveFirst
strLastGroupDN = ""
Do Until GroupMembershipDB.EOF
strdistinguishedName = GroupMembershipDB.Fields.Item("distinguishedName").Value
if strLastGroupDN <> strdistinguishedName then
strGroupType = GroupMembershipDB.Fields.Item("samaccounttype").Value
strNTName = GroupMembershipDB.Fields.Item("samaccountname").Value
strValue = strValue & strNTName & " " & strGroupType & ";"
strLastGroupDN = strdistinguishedName
GroupMembershipDB.MoveNext
End if
Loop
strValue = mid(strValue,1,len(strValue)-1)
ReportGroupMembershipList = strValue
End Function
Function GetManagerDN(Manager)
Set objRootDSE = GetObject("LDAP://RootDSE")
strDNSDomain = objRootDSE.Get("defaultNamingContext")
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
strBase = "<LDAP://" & strDNSDomain & ">"
strFilter = "(&(objectCategory=person)(objectClass=user)(cn=*" & Manager & "*))"
strAttributes = "distinguishedName,CN"
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
Set adoRecordset = CreateObject("ADODB.Recordset")
adoRecordset.CursorLocation = 3
adoRecordset.Sort = "distinguishedname"
adoRecordset.Open strQuery, adoConnection, , , 1
strresults = ""
boolResultsFound = False
Do Until adoRecordset.EOF
strDN = adoRecordset.Fields("distinguishedName").Value
sResults = sResults & "(manager=" & strDN & ")"
boolResultsFound = True
adoRecordset.MoveNext
Loop
if boolResultsFound then
sResults = "(|" & sResults & ")"
end if
GetManagerDN = sResults
End Function
Sub FillGroupList
Set objlst_groupnames = document.getElementById( "lst_groupnames" )
objlst_groupnames.ListItems.Clear
Set objlst_dgnames = document.getElementById( "lst_dgnames" )
objlst_dgnames.ListItems.Clear
For Each objOption in lst_subordinates.Options
objOption.RemoveNode
Next
intGroupMembership = 0
intdgmembership = 0
intsubordinates = 0
for each strDomain in arrDomainNames
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(objectCategory=group)"
strAttributes = "sAMAccountName,primaryGroupToken,distinguishedName,samaccounttype,member"
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
Set adoRecordset = CreateObject("ADODB.Recordset")
adoRecordset.CursorLocation = 3
adoRecordset.Sort = "distinguishedname"
adoRecordset.Open strQuery, adoConnection, , , 1
Do Until adoRecordset.EOF
intNumberOfMembers = 0
strNTName = adoRecordset.Fields("sAMAccountName").Value
strPrimary = adoRecordset.Fields("primaryGroupToken").Value
strdistinguishedName = adoRecordset.Fields("distinguishedName").Value
strGroupType = GetSAMAccountType(adoRecordset.Fields("samaccounttype").Value)
if NOT IsNull(adoRecordset.Fields("member").Value) then
for each strMember in adoRecordset.Fields("member").Value
GroupMembershipDB.AddNew
GroupMembershipDB("sAMAccountName") = strNTName
GroupMembershipDB("primaryGroupToken") = strPrimary
GroupMembershipDB("distinguishedName") = strdistinguishedName
GroupMembershipDB("samaccounttype") = strGroupType
GroupMembershipDB("MemberDistinguishedName") = strMember
GroupMembershipDB.Update
intNumberOfMembers = intNumberOfMembers + 1
next
else
GroupMembershipDB.AddNew
GroupMembershipDB("sAMAccountName") = strNTName
GroupMembershipDB("primaryGroupToken") = strPrimary
GroupMembershipDB("distinguishedName") = strdistinguishedName
GroupMembershipDB("samaccounttype") = strGroupType
GroupMembershipDB("MemberDistinguishedName") = ""
GroupMembershipDB.Update
End if
if NOT dicGroupNumbers.Exists(strdistinguishedName) then
dicGroupNumbers.Add strdistinguishedName, intNumberOfMembers
if strPrimary = 513 then
GetUsersWithPrimaryGroupID 513, strdistinguishedName
intNumberOfMembers = dicGroupNumbers.Item(strdistinguishedName)+1
end if
end if
Select Case adoRecordset.Fields("samaccounttype").Value
Case 2,268435457,4,536870913,8,268435457 'Distribution Groups
Set objListItem = objlst_dgnames.ListItems.Add
objListItem.Text = strNTName
objListItem.ListSubItems.Add.Text = intNumberOfMembers
objListItem.ListSubItems.Add.Text = strGroupType
objListItem.ListSubItems.Add.Text = strdistinguishedName
objListItem.ListSubItems.Add.Text = strPrimary
Case -2147483646,268435456,-2147483644,536870912,-2147483640,268435456 'Security Groups
Set objListItem = objlst_groupnames.ListItems.Add
objListItem.Text = strNTName
objListItem.ListSubItems.Add.Text = intNumberOfMembers
objListItem.ListSubItems.Add.Text = strGroupType
objListItem.ListSubItems.Add.Text = strdistinguishedName
objListItem.ListSubItems.Add.Text = strPrimary
Case Else
Set objListItem = objlst_groupnames.ListItems.Add
objListItem.Text = strNTName
objListItem.ListSubItems.Add.Text = intNumberOfMembers
objListItem.ListSubItems.Add.Text = strGroupType
objListItem.ListSubItems.Add.Text = strdistinguishedName
objListItem.ListSubItems.Add.Text = strPrimary
End Select
adoRecordset.MoveNext
Loop
next
span_groupmembership.InnerHTML = "(" & lst_groupnames.ListItems.Count & ")"
span_dgmembership.InnerHTML = "(" & lst_dgnames.ListItems.Count & ")"
span_subordinates.InnerHTML = "(" & intsubordinates & ")"
End Sub
Sub FillManagerList
For Each objOption in lst_managerlist.Options
objOption.RemoveNode
Next
intManagers = 0
for each strDomain in arrDomainNames
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(&(objectCategory=user)(manager=*))"
strAttributes = "manager"
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
Set adoRecordset = CreateObject("ADODB.Recordset")
adoRecordset.CursorLocation = 3
adoRecordset.Sort = "manager"
adoRecordset.Open strQuery, adoConnection, , , 1
Do Until adoRecordset.EOF
strManager = adoRecordset.Fields("manager").Value
if dicManagerList.Exists(strManager) then
dicManagerList.Item(strManager) = dicManagerList.Item(strManager) + 1
else
dicManagerList.Add strManager, 1
intManagers = intManagers + 1
End if
adoRecordset.MoveNext
Loop
next
for each Manager in dicManagerList
set newOption = document.createElement("OPTION")
newOption.Text = mid(Manager,4,instr(Manager,",")-4) & " (" & dicManagerList.Item(Manager) & ")"
newOption.Value = Manager
lst_managerlist.Add newOption
next
span_managerlist.InnerHTML = "(" & intManagers & ")"
End Sub
Sub PopulateManagerList
For Each objOption in lst_managerlist.Options
objOption.RemoveNode
Next
intManagers = 0
for each Manager in dicManagerList
set newOption = document.createElement("OPTION")
newOption.Text = mid(Manager,4,instr(Manager,",")-4) & " (" & dicManagerList.Item(Manager) & ")"
newOption.Value = Manager
lst_managerlist.Add newOption
intManagers = intManagers + 1
next
span_managerlist.InnerHTML = "(" & intManagers & ")"
End Sub
Function GetSubordinateNumbers(manager)
intSubordinates = 0
for each strDomain in arrDomainNames
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(&(objectCategory=user)(manager=" & manager & "))"
strAttributes = "manager"
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
Set adoRecordset = CreateObject("ADODB.Recordset")
adoRecordset.CursorLocation = 3
adoRecordset.Sort = "manager"
adoRecordset.Open strQuery, adoConnection, , , 1
Do Until adoRecordset.EOF
intSubordinates = intSubordinates + 1
adoRecordset.MoveNext
Loop
next
GetSubordinateNumbers = intSubordinates
End FUnction
Function GetSAMAccountType(SAMAccountType)
Select Case SAMAccountType
Case 2, 268435457
GetSAMAccountType = "[GDG]" 'This is a global distribution group
Case 4, 536870913
GetSAMAccountType = "[LDG]" 'This is a domain local distribution group
Case 8, 268435457
GetSAMAccountType = "[UDG]" 'This is a universal distribution group
Case -2147483646, 268435456
GetSAMAccountType = "[GSG]" 'This is a global security group
Case -2147483644, 536870912
GetSAMAccountType = "[LSG]" 'This is a domain local security group
Case -2147483640, 268435456
GetSAMAccountType = "[USG]" 'This is a universal security group
Case Else
GetSAMAccountType = "[Unknown]" 'This is an unknown group type
End Select
End Function
Sub GetUsersWithPrimaryGroupID(PrimaryGroupID,distinguishedName)
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
strSearchField = "(primaryGroupID=" & PrimaryGroupID & ")"
for each strDomain in arrDomainNames
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(&(objectCategory=user)(objectCategory=contact)" & strSearchField & ")"
strAttributes = "cn,primaryGroupID"
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 100
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False
Set adoRecordset = adoCommand.Execute
If Not adoRecordset.EOF Then
Do Until adoRecordset.EOF
n = n + 1
adoRecordset.movenext
Loop
End If
next
dicGroupNumbers.Item(distinguishedName) = n
End Sub
Sub FillSubjectList
For Each objOption in txt_EmailSubject.Options
objOption.RemoveNode
Next
For each strSubjectlineText in arrSubjectText
set newOption = document.createElement("OPTION")
newOption.Text = strSubjectlineText
newOption.Value = strSubjectlineText
txt_EmailSubject.Add newOption
Next
End Sub
Sub ConvertNamesToEmailAddresses
txt_EmailToHidden.Value = GetEmailAddresses(txt_EmailTo.Value)
txt_EmailCCHidden.Value = GetEmailAddresses(txt_EmailCC.Value)
strEmailTo = txt_EmailToHidden.Value
End Sub
Function GetEmailAddresses(names)
Const adVarChar = 200
Const MaxCharacters = 255
strValidEmail = ""
arrResolve = split(names,";")
for each strResolve in arrResolve
strResolve = trim(strResolve)
if instr(strResolve,"@") then
'Treat as valid email address
strValidEmail = strValidEmail & strResolve & ";"
elseif strResolve <> "" then
Set objRoot = GetObject("LDAP://rootDSE")
strDomain = "LDAP://" & objRoot.Get("defaultNamingContext")
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.CommandText = "<" & strDomain & ">;(&(objectCategory=person)" & _
"(mail=*)(cn=*" & strResolve & "*));cn,samAccountName,mail;subtree"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 90
objCommand.Properties("Cache Results") = False
Set objRecordSet1 = objCommand.Execute
intCount = 0
While Not objRecordSet1.EOF
intCount = intCount + 1
strFullName = objRecordSet1.Fields("mail").Value
objRecordSet1.MoveNext
Wend
if intCount = 1 then
strValidEmail = strValidEmail & strFullName & ";"
end if
end if
next
GetEmailAddresses = strValidEmail
End Function
Function GetOUPath(OU)
strOU = ""
strFQDN = ""
boolFoundMatch = False
arrValues = split(OU,",")
for each strValue in arrValues
if instr(strValue,"OU=") then
strOU = strOU & replace(strValue,"OU=","") & "\"
end if
if instr(strValue,"DC=") then
strFQDN = strFQDN & replace(strValue,"DC=","") & "."
end if
if instr(strValue,"CN=") then
if boolFoundMatch then
strCN = strCN & replace(strValue,"CN=","") & "\"
else
'Skip the first match - this is always the user name
boolFoundMatch = True
end if
end if
next
if strFQDN <> "" then
strFQDN = left(strFQDN,len(strFQDN)-1)
if strOU <> "" then
strOU = left(strOU,len(strOU)-1)
else
'strOU = "{object not found in any OU}"
if strCN <> "" then
strOU = left(strCN,len(strCN)-1)
end if
end if
GetOUPath = (Split(strOU,"\")(0))
else
GetOUPath = ""
end if
End Function
Function GetComputerInfo(names)
Const adVarChar = 200
Const MaxCharacters = 255
strValidComputer = ""
strResolve = trim(names)
if strResolve <> "" then
Set objRoot = GetObject("LDAP://rootDSE")
strDomain = "LDAP://" & objRoot.Get("defaultNamingContext")
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.CommandText = "<" & strDomain & ">;(&(objectCategory=computer)" & _
"(cn=" & strResolve & "));cn,samAccountName,distinguishedName,operatingsystem,operatingsystemservicepack,whencreated,description;subtree"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 90
objCommand.Properties("Cache Results") = False
Set objRecordSet1 = objCommand.Execute
While Not objRecordSet1.EOF
if IsNull(objRecordSet1.Fields("distinguishedName").Value) then
sDN = ""
else
sDN = replace(objRecordSet1.Fields("distinguishedName").Value,vbCRLF,"")
End if
if IsNull(objRecordSet1.Fields("operatingsystem").Value) then
sOS = ""
else
sOS = replace(objRecordSet1.Fields("operatingsystem").Value,vbCRLF,"")
End if
if IsNull(objRecordSet1.Fields("operatingsystemservicepack").Value) then
sSP = ""
else
sSP = replace(objRecordSet1.Fields("operatingsystemservicepack").Value,vbCRLF,"")
End if
if IsNull(objRecordSet1.Fields("whencreated").Value) then
sWC = ""
else
sWC = replace(objRecordSet1.Fields("whencreated").Value,vbCRLF,"")
End if
if IsNull(objRecordSet1.Fields("description").Value) then
sDS = ""
else
sDS = join(objRecordSet1.Fields("description").Value)
sDS = replace(sDS,vbCRLF,"")
End if
strValidComputer = Array("""" & sDN & """","""" & sOS & """","""" & sSP & """","""" & sWC & """","""" & sDS & """")
objRecordSet1.MoveNext
Wend
end if
if isArray(strValidComputer) then
GetComputerInfo = strValidComputer
else
GetComputerInfo = ""
end if
End Function
Sub ShowSubMenu(Parent,Child)
If Child.style.display="block" Then
Parent.classname="Menuover"
Child.style.display="none"
Set LastChildMenu=Nothing
Else
Parent.classname="Menuin"
Child.style.display="block"
Set LastChildMenu=Child
End If
Set LastMenu=Parent
End Sub
Sub MenuOver(Parent,Child)
If LastChildMenu is Nothing Then
Parent.className="MenuOver"
Else
If LastMenu is Parent Then
Parent.className="MenuIn"
Else
HideMenu
ShowSubMenu Parent,Child
End If
End If
End Sub
Sub MenuOut(Menu)
If LastChildMenu is Nothing Then Menu.className="MenuOut"
End Sub
Sub HideMenu
If Not LastChildMenu is Nothing Then
LastChildMenu.style.display="none"
Set LastChildMenu=Nothing
LastMenu.classname="Menuout"
End If
End Sub
Sub SubMenuOver(Menu)
Menu.className="SubMenuOver"
End Sub
Sub SubMenuOut(Menu)
Menu.className="SubMenuOut"
End Sub
Sub SaveAs
on error resume next
Dim oDLG
Set oDLG=CreateObject("MSComDlg.CommonDialog")
if err.number > 0 then
err.clear
oDLG = window.prompt("Please enter the path and file name to save.", "C:\your-query.qry")
if oDLG <> "" then
FileName = oDLG
Save
End If
else
With oDLG
.DialogTitle = "Save As"
.Filter="Query|*.qry|Text Files|*.txt|All files|*.*"
.MaxFileSize = 255
.ShowSave
If .FileName <> "" Then
FileName = .FileName
Save
End If
End With
end if
Set oDLG=Nothing
DisplayTitle
End Sub
Sub Save()
Dim fso,f
If FileName <> "" Then
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.CreateTextFile(FileName,True)
'This is the text to get saved into the file
with f
.writeline "<root>"
.writeline "<searchfield>" & globalStrSearchField & "</searchfield>"
.writeline "<btnpush>" & globalStrSearchBtnPush & "</btnpush>"
.writeline "<to>" & txt_EmailTo.value & "</to>"
.writeline "<cc>" & txt_EmailCC.value & "</cc>"
.writeline "<bcc>" & strEmailBCC & "</bcc>"
.writeline "<subject>" & txt_EmailSubject.value & "</subject>"
.writeline "<emailbody>" & txt_EmailBody.value & "</emailbody>"
if chk_selectall.Checked then .writeline "<checkboxes>chk_selectall</checkboxes>"
if chk_seatno.Checked then .writeline "<checkboxes>chk_seatno</checkboxes>"
if chk_building.Checked then .writeline "<checkboxes>chk_building</checkboxes>"
if chk_extensionno.Checked then .writeline "<checkboxes>chk_extensionno</checkboxes>"
if chk_empid.Checked then .writeline "<checkboxes>chk_empid</checkboxes>"
if chk_department.Checked then .writeline "<checkboxes>chk_department</checkboxes>"
if chk_designation.Checked then .writeline "<checkboxes>chk_designation</checkboxes>"
if chk_name.Checked then .writeline "<checkboxes>chk_name</checkboxes>"
if chk_loginname.Checked then .writeline "<checkboxes>chk_loginname</checkboxes>"
if chk_email.Checked then .writeline "<checkboxes>chk_email</checkboxes>"
if chk_mailboxsize.Checked then .writeline "<checkboxes>chk_mailboxsize</checkboxes>"
if chk_mailboxstore.Checked then .writeline "<checkboxes>chk_mailboxstore</checkboxes>"
if chk_notes.Checked then .writeline "<checkboxes>chk_notes</checkboxes>"
if chk_computerserialno.Checked then .writeline "<checkboxes>chk_computerserialno</checkboxes>"
if chk_replacedmachine.Checked then .writeline "<checkboxes>chk_replacedmachine</checkboxes>"
if chk_replacedcomputerserialno.Checked then .writeline "<checkboxes>chk_replacedcomputerserialno</checkboxes>"
if chk_oupathcomputer.Checked then .writeline "<checkboxes>chk_oupathcomputer</checkboxes>"
if chk_computeros.Checked then .writeline "<checkboxes>chk_computeros</checkboxes>"
if chk_computerdescription.Checked then .writeline "<checkboxes>chk_computerdescription</checkboxes>"
if chk_computercreated.Checked then .writeline "<checkboxes>chk_computercreated</checkboxes>"
if chk_mobileno.Checked then .writeline "<checkboxes>chk_mobileno</checkboxes>"
if chk_company.Checked then .writeline "<checkboxes>chk_company</checkboxes>"
if chk_address.Checked then .writeline "<checkboxes>chk_address</checkboxes>"
if chk_city.Checked then .writeline "<checkboxes>chk_city</checkboxes>"
if chk_state.Checked then .writeline "<checkboxes>chk_state</checkboxes>"
if chk_zipcode.Checked then .writeline "<checkboxes>chk_zipcode</checkboxes>"
if chk_country.Checked then .writeline "<checkboxes>chk_country</checkboxes>"
if chk_homephone.Checked then .writeline "<checkboxes>chk_homephone</checkboxes>"
if chk_manager.Checked then .writeline "<checkboxes>chk_manager</checkboxes>"
if chk_whencreated.Checked then .writeline "<checkboxes>chk_whencreated</checkboxes>"
if chk_oupathuser.Checked then .writeline "<checkboxes>chk_oupathuser</checkboxes>"
if chk_lastlogintimestamp.Checked then .writeline "<checkboxes>chk_lastlogintimestamp</checkboxes>"
if chk_groupmembership.Checked then .writeline "<checkboxes>chk_groupmembership</checkboxes>"
if chk_dgmembership.Checked then .writeline "<checkboxes>chk_dgmembership</checkboxes>"
if chk_managerlist.Checked then .writeline "<checkboxes>chk_managerlist</checkboxes>"
if chk_subordinates.Checked then .writeline "<checkboxes>chk_subordinates</checkboxes>"
.writeline "</root>"
.Close
end with
Set xmlDom = CreateObject("Microsoft.XMLDOM")
XmlDom.async = False
XmlDom.Load(FileName)
xmlDom.Save(FileName)
Set f = Nothing
Set fso = Nothing
Else
SaveAs
End If
End Sub
Sub OpenIt
UnCheckAllBoxes
Set xmlDom = CreateObject("Microsoft.XMLDOM")
xmlDom.async="false"
xmlDom.load(FileName)
globalStrSearchField = xmlDom.getElementsByTagName("searchfield").item(0).text
globalStrSearchBtnPush = xmlDom.getElementsByTagName("btnpush").item(0).text
txt_EmailTo.value = xmlDom.getElementsByTagName("to").item(0).text
txt_EmailCC.value = xmlDom.getElementsByTagName("cc").item(0).text
strEmailBCC = xmlDom.getElementsByTagName("bcc").item(0).text
txt_EmailSubject.value = xmlDom.getElementsByTagName("subject").item(0).text
txt_EmailBody.value = xmlDom.getElementsByTagName("emailbody").item(0).text
for n = 0 to xmlDom.getElementsByTagName("checkboxes").Length-1
execute(xmlDom.getElementsByTagName("checkboxes").item(n).text & ".checked = True")
next
DisplayTitle
Submit_Form "FileOpen"
End Sub
Sub Open()
on error resume next
Dim oDLG
Set oDLG = CreateObject("MSComDlg.CommonDialog")
if err.number > 0 then
err.clear
oDLG = window.prompt("Please enter the path and file name to open.", "C:\your-query.qry")
if oDLG <> "" then
FileName = oDLG
OpenIt
End If
else
With oDLG
.DialogTitle = "Open"
.Filter = "Query|*.qry|Text Files|*.txt|All files|*.*"
.MaxFileSize = 255
.Flags = .Flags Or &H1000 'FileMustExist (OFN_FILEMUSTEXIST)
.ShowOpen
If .FileName <> "" Then
FileName = .FileName
OpenIt
End If
End With
end if
Set oDLG = Nothing
End Sub
Sub DisplayTitle
If FileName="" Then
document.Title="Default - " & oHTA.ApplicationName
Else
document.Title=FileName & " - " & oHTA.ApplicationName
End If
End Sub
Sub ClickTheSpecialReportButton
Submit_Form("Disabled")
End Sub
Sub SpecialReportNewUsersToday
Clear_Form ""
txt_whencreated.Value = FormatDateTime(Date(),2)
Detect_Search_Field("txt_whencreated")
Submit_Form("Main")
End Sub
Sub SpecialReportDisabledUsersToday
Clear_Form ""
txt_whencreated.Value = FormatDateTime(Date(),2)
Detect_Search_Field("txt_whencreated")
Submit_Form("DisabledToday")
End Sub
Sub SpecialReportDisabledUsersSomeDay
Clear_Form ""
sRtn = showModalDialog("Calendar.htm","","center=yes;dialogWidth=160pt;dialogHeight=180pt")
txt_whencreated.value = sRtn
Detect_Search_Field("txt_whencreated")
Submit_Form("DisabledToday")
End Sub
Sub GetChkProfiles
For Each objOption in lst_ChkProfiles.Options
objOption.RemoveNode
Next
strAnswer = fAppData & "\profile.xml"
Set objFSO = CreateObject("Scripting.FileSystemObject")
If NOT objFSO.FileExists(strAnswer) Then
'Create profile.xml
Set f = objFSO.CreateTextFile(strAnswer,True)
with f
.writeline "<root>"
.writeline "<profile val=""Default"">"
.writeline "<checkboxes val=""chk_selectall"" />"
.writeline "<checkboxes val=""chk_seatno"" />"
.writeline "<checkboxes val=""chk_replacementseatno"" />"
.writeline "<checkboxes val=""chk_building"" />"
.writeline "<checkboxes val=""chk_extensionno"" />"
.writeline "<checkboxes val=""chk_empid"" />"
.writeline "<checkboxes val=""chk_department"" />"
.writeline "<checkboxes val=""chk_designation"" />"
.writeline "<checkboxes val=""chk_name"" />"
.writeline "<checkboxes val=""chk_loginname"" />"
.writeline "<checkboxes val=""chk_email"" />"
.writeline "<checkboxes val=""chk_mailboxsize"" />"
.writeline "<checkboxes val=""chk_mailboxstore"" />"
.writeline "<checkboxes val=""chk_notes"" />"
.writeline "<checkboxes val=""chk_computerserialno"" />"
.writeline "<checkboxes val=""chk_replacedmachine"" />"
.writeline "<checkboxes val=""chk_replacedcomputerserialno"" />"
.writeline "<checkboxes val=""chk_oupathcomputer"" />"
.writeline "<checkboxes val=""chk_computeros"" />"
.writeline "<checkboxes val=""chk_computerdescription"" />"
.writeline "<checkboxes val=""chk_computercreated"" />"
.writeline "<checkboxes val=""chk_mobileno"" />"
.writeline "<checkboxes val=""chk_company"" />"
.writeline "<checkboxes val=""chk_address"" />"
.writeline "<checkboxes val=""chk_city"" />"
.writeline "<checkboxes val=""chk_state"" />"
.writeline "<checkboxes val=""chk_zipcode"" />"
.writeline "<checkboxes val=""chk_country"" />"
.writeline "<checkboxes val=""chk_homephone"" />"
.writeline "<checkboxes val=""chk_manager"" />"
.writeline "<checkboxes val=""chk_whencreated"" />"
.writeline "<checkboxes val=""chk_oupathuser"" />"
.writeline "<checkboxes val=""chk_lastlogintimestamp"" />"
.writeline "<checkboxes val=""chk_groupmembership"" />"
.writeline "<checkboxes val=""chk_dgmembership"" />"
.writeline "<checkboxes val=""chk_managerlist"" />"
.writeline "<checkboxes val=""chk_subordinates"" />"
.writeline "</profile>"
.writeline "</root>"
.Close
end with
Set xmlDom = CreateObject("Microsoft.XMLDOM")
XmlDom.async = False
XmlDom.Load(strAnswer)
xmlDom.Save(strAnswer)
End If
Set xmlDom = CreateObject("Microsoft.XMLDOM")
xmlDom.async="false"
XmlDom.Load(strAnswer)
Set oNodes = XmlDom.selectNodes("//profile")
for n = 0 to oNodes.length - 1
set newOption = document.createElement("OPTION")
newOption.Text = oNodes(n).selectSingleNode("@val").Text
newOption.Value = oNodes(n).selectSingleNode("@val").Text
lst_ChkProfiles.Add newOption
next
Set f = Nothing
Set objFSO = Nothing
End Sub
Sub lst_chkprofiles_OnChange
UnCheckAllBoxes
strAnswer = fAppData & "\profile.xml"
Set xmlDom = CreateObject("Microsoft.XMLDOM")
xmlDom.async="false"
XmlDom.Load(strAnswer)
Set oNodes = XmlDom.selectNodes("//profile[@val=""" & lst_chkprofiles.Value & """]/checkboxes")
For n = 0 To oNodes.length - 1
execute(oNodes(n).selectSingleNode("@val").Text & ".Checked = True")
Next
TestToSeeWhatLinesAreHidden
End Sub
Sub DeleteFromCheckboxProfile
if lst_chkprofiles.Value <> "Default" then
strAnswer = fAppData & "\profile.xml"
Set xmlDom = CreateObject("Microsoft.XMLDOM")
xmlDom.async="false"
XmlDom.Load(strAnswer)
Set oNodes = XmlDom.selectNodes("//profile[@val=""" & lst_chkprofiles.Value & """]")
For Each objNode in oNodes
xmlDom.documentElement.removeChild _
(objNode)
Next
XmlDom.Save(strAnswer)
For Each objOption in lst_chkprofiles.Options
If objOption.Value = lst_chkprofiles.Value Then
objOption.RemoveNode
End If
Next
msgbox "Checkbox profile deleted."
lst_chkprofiles_OnChange
else
msgbox "You cannot delete the default profile."
end if
End Sub
Sub ModifyCurrentCheckboxProfile
if lst_chkprofiles.Value <> "Default" then
strAnswer = fAppData & "\profile.xml"
Set xmlDom = CreateObject("Microsoft.XMLDOM")
xmlDom.async="false"
XmlDom.Load(strAnswer)
strProfileName = lst_chkprofiles.Value
Set oNodes = XmlDom.selectNodes("//profile[@val=""" & lst_chkprofiles.Value & """]")
For Each objNode in oNodes
xmlDom.documentElement.removeChild _
(objNode)
Next
XmlDom.Save(strAnswer)
Const ForReading = 1
Const ForWriting = 2
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(strAnswer, ForReading)
Do Until objFile.AtEndOfStream
strLine = objFile.Readline
strLine = Trim(strLine)
If strLine <> "</root>" Then
strContents = strContents & strLine & vbCrLf
End If
Loop
objFile.Close
Set f = objFSO.OpenTextFile(strAnswer, ForWriting)
with f
.writeline strContents & vbTab & "<profile val=""" & strProfileName & """>"
if chk_selectall.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_selectall"" />"
if chk_seatno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_seatno"" />"
if chk_replacementseatno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_replacementseatno"" />"
if chk_building.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_building"" />"
if chk_extensionno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_extensionno"" />"
if chk_empid.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_empid"" />"
if chk_department.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_department"" />"
if chk_designation.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_designation"" />"
if chk_name.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_name"" />"
if chk_loginname.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_loginname"" />"
if chk_email.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_email"" />"
if chk_mailboxsize.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_mailboxsize"" />"
if chk_mailboxstore.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_mailboxstore"" />"
if chk_notes.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_notes"" />"
if chk_computerserialno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_computerserialno"" />"
if chk_replacedmachine.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_replacedmachine"" />"
if chk_replacedcomputerserialno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_replacedcomputerserialno"" />"
if chk_oupathcomputer.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_oupathcomputer"" />"
if chk_computeros.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_computeros"" />"
if chk_computerdescription.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_computerdescription"" />"
if chk_computercreated.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_computercreated"" />"
if chk_mobileno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_mobileno"" />"
if chk_company.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_company"" />"
if chk_address.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_address"" />"
if chk_city.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_city"" />"
if chk_state.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_state"" />"
if chk_zipcode.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_zipcode"" />"
if chk_country.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_country"" />"
if chk_homephone.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_homephone"" />"
if chk_manager.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_manager"" />"
if chk_whencreated.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_whencreated"" />"
if chk_oupathuser.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_oupathuser"" />"
if chk_lastlogintimestamp.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_lastlogintimestamp"" />"
if chk_groupmembership.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_groupmembership"" />"
if chk_dgmembership.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_dgmembership"" />"
if chk_managerlist.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_managerlist"" />"
if chk_subordinates.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_subordinates"" />"
.writeline vbTab & "</profile>"
.writeline "</root>"
.close
end with
msgbox "Checkbox profile modified."
else
msgbox "You cannot modify the default profile."
end if
End Sub
Sub AddToCheckboxProfile
strProfileName = window.prompt("Please enter a profile name.", "My profile name")
strAnswer = fAppData & "\profile.xml"
Const ForReading = 1
Const ForWriting = 2
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(strAnswer, ForReading)
Do Until objFile.AtEndOfStream
strLine = objFile.Readline
strLine = Trim(strLine)
If strLine <> "</root>" Then
strContents = strContents & strLine & vbCrLf
End If
Loop
objFile.Close
Set f = objFSO.OpenTextFile(strAnswer, ForWriting)
with f
.writeline strContents & vbTab & "<profile val=""" & strProfileName & """>"
if chk_selectall.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_selectall"" />"
if chk_seatno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_seatno"" />"
if chk_replacementseatno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_replacementseatno"" />"
if chk_building.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_building"" />"
if chk_extensionno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_extensionno"" />"
if chk_empid.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_empid"" />"
if chk_department.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_department"" />"
if chk_designation.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_designation"" />"
if chk_name.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_name"" />"
if chk_loginname.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_loginname"" />"
if chk_email.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_email"" />"
if chk_mailboxsize.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_mailboxsize"" />"
if chk_mailboxstore.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_mailboxstore"" />"
if chk_notes.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_notes"" />"
if chk_computerserialno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_computerserialno"" />"
if chk_replacedmachine.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_replacedmachine"" />"
if chk_replacedcomputerserialno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_replacedcomputerserialno"" />"
if chk_oupathcomputer.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_oupathcomputer"" />"
if chk_computeros.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_computeros"" />"
if chk_computerdescription.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_computerdescription"" />"
if chk_computercreated.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_computercreated"" />"
if chk_mobileno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_mobileno"" />"
if chk_company.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_company"" />"
if chk_address.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_address"" />"
if chk_city.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_city"" />"
if chk_state.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_state"" />"
if chk_zipcode.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_zipcode"" />"
if chk_country.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_country"" />"
if chk_homephone.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_homephone"" />"
if chk_manager.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_manager"" />"
if chk_whencreated.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_whencreated"" />"
if chk_oupathuser.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_oupathuser"" />"
if chk_lastlogintimestamp.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_lastlogintimestamp"" />"
if chk_groupmembership.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_groupmembership"" />"
if chk_dgmembership.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_dgmembership"" />"
if chk_managerlist.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_managerlist"" />"
if chk_subordinates.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_subordinates"" />"
.writeline vbTab & "</profile>"
.writeline "</root>"
.close
end with
set newOption = document.createElement("OPTION")
newOption.Text = strProfileName
newOption.Value = strProfileName
lst_ChkProfiles.Add newOption
lst_ChkProfiles.Value = strProfileName
End Sub
Sub AddToQueryBuilder
globalstrQueryBuilder = globalstrQueryBuilder & globalstrSearchField
if NOT chk_qbrecorder.Checked then
msgbox "The query has been added."
end if
End Sub
Sub QueryBuilderRecorder
if chk_qbrecorder.Checked then
msgbox "Query Builder is now recording."
else
msgbox "Query Builder has stopped recording." & vbCrLf & "Click OK to view the combined query."
RunQueryBuilder
end if
End Sub
Sub ViewQueryBuilder
if globalstrQueryBuilder <> "" then
msgbox "(|" & globalstrQueryBuilder & ")"
else
msgbox "There are no stored queries to view."
end if
End Sub
Sub RunQueryBuilder
globalStrSearchField = "(|" & globalstrQueryBuilder & ")"
globalstrSearchBtnPush = "FileOpen"
Submit_Form "FileOpen"
End Sub
Sub ClearQueryBuilder
globalstrQueryBuilder = ""
End Sub
Sub txt_EmailSubject_OnChange
For n = 0 to (txt_EmailSubject.Options.Length - 1)
If (txt_EmailSubject.Options(n).Selected) Then
strEmailTo = arrToSpecial(n)
strEmailCC = arrCCSpecial(n)
strEmailBody = arrBodySpecial(n)
strCheckBoxProfile = arrCheckBoxSpecial(n)
txt_EmailTo.Value = strEmailTo
txt_EmailCC.Value = strEmailCC
txt_EmailBody.Value = strEmailBody
For Each objOption in lst_chkprofiles.Options
If objOption.Value = strCheckBoxProfile Then
objOption.Selected = True
lst_chkprofiles_OnChange
End If
Next
End If
Next
End Sub
Sub PingComputer(name)
if name <> "" then
strComuptername = trim(name)
'Run PING command
Set objPingResults = GetObject("winmgmts:{impersonationLevel=impersonate}//./root/cimv2"). ExecQuery("SELECT * FROM Win32_PingStatus WHERE Address = '" & strComuptername & "'")
'Take ping reults and put into variable strPingResult
strPingResult = 0
For Each oPingResult In objPingResults
strPingResult = oPingResult.ResponseTime
strIPAddress = oPingResult.ProtocolAddress
Next
'Catch PINGS that do not have a result - typically this is for unreachable devices
if IsEmpty(strPingResult) then
strPingResult = 9999
end if
if IsNULL(strPingResult) then
strPingResult = 9999
end if
' Run ping again if first attempt fails
if strPingResult = 9999 then
'Run PING command
Set objPingResults = GetObject("winmgmts:{impersonationLevel=impersonate}//./root/cimv2"). ExecQuery("SELECT * FROM Win32_PingStatus WHERE Address = '" & strComuptername & "'")
'Take ping reults and put into variable strPingResult
strPingResult = 0
For Each oPingResult In objPingResults
strPingResult = oPingResult.ResponseTime
strIPAddress = oPingResult.ProtocolAddress
Next
'Catch PINGS that do not have a result - typically this is for unreachable devices
if IsEmpty(strPingResult) then
strPingResult = 9999
end if
if IsNULL(strPingResult) then
strPingResult = 9999
end if
end if
span_computerip.innerhtml = strIPAddress
if strPingResult = 9999 then
span_computeronline.innerhtml = "Offline"
else
span_computeronline.innerhtml = "Online"
end if
else
span_computerip.innerhtml = " "
span_computeronline.innerhtml = " "
end if
End Sub
Sub bt2Go_onclick()
'** Declarations:'
Dim OPR, DM, USR, strNTName, strUserDN, strNM, objUser, TNP, DENY, POS, NEG
Dim objNetwork, objShell
'** Objects:'
Set objNetwork = CreateObject("WScript.Network")
Set objShell = CreateObject("Wscript.Shell")
'** User/Domain:'
OPR = objNetwork.UserName
DM = objNetwork.UserDomain & "\"
'** Write username for the user that needs to be enabled or disabled:'
USR = InputBox("Username:", "Enable or Disable Active Directory User", _
"Write Username Here")
if USR = "" then
exit sub
End if
'** Prevent run-time errors:'
On Error Resume Next
'** Declare NameTranslate constants:'
Const ADS_NAME_INITTYPE_GC = 3
Const ADS_NAME_TYPE_NT4 = 3
Const ADS_NAME_TYPE_1779 = 1
'** Combine the user name and domain name:'
strNTName = DM & USR
strNT2 = DM & OPR
'** Translate operator name into DN:'
Set objTrans2 = CreateObject("NameTranslate")
objTrans2.Init ADS_NAME_INITTYPE_GC, ""
objTrans2.Set ADS_NAME_TYPE_NT4, strNT2
strUserDN2 = objTrans2.Get(ADS_NAME_TYPE_1779)
Set objUser2 = GetObject("LDAP://" & strUserDN2)
strUS3 = Mid(strUserDN2,4)
strUS4 = Split(strUS3, ",")
For n = LBound(strUS4) to UBound(strUS4)
strNM2 = strUS4(n)
Exit For
Next
'** Translate name into DN:'
Set objTrans = CreateObject("NameTranslate")
objTrans.Init ADS_NAME_INITTYPE_GC, ""
objTrans.Set ADS_NAME_TYPE_NT4, strNTName
strUserDN = objTrans.Get(ADS_NAME_TYPE_1779)
'** Do LDAP bind to object:'
Set objUser = GetObject("LDAP://" & strUserDN)
'** Get full name:'
strUS1 = Mid(strUserDN,4)
strUS2 = Split(strUS1, ",")
For n = LBound(strUS2) to UBound(strUS2)
strNM = strUS2(n)
Exit For
Next
'** If no error, enable or disable user:'
If Err = 0 Then
Const ADS_UF_ACCOUNTDISABLE = 2
intUAC = objUser.Get("userAccountControl")
objUser.Put "userAccountControl", intUAC XOR ADS_UF_ACCOUNTDISABLE
objUser.SetInfo
If intUAC AND ADS_UF_ACCOUNTDISABLE Then
POS = 1
Else
NEG = 1
End If
Else
objShell.Popup UCase(USR) & " was not found. Please try again.", _
5, "Unknown Username", 48
exit sub
End If
'** If no permission, give message:'
If Err = "-2147024891" Then
DENY = 1
objShell.Popup "You can not enable or disable this user.", _
5, "Permission Denied", 48
exit sub
End If
'** If no error, show result:'
If DENY <> 1 Then
If POS = 1 Then
MsgBox UCase(USR) & " were successfully enabled.", _
64, "User enabled by " & strNM2
End If
If NEG = 1 Then
MsgBox UCase(USR) & " were successfully disabled.", _
64, "User disabled by " & strNM2
End If
End If
End Sub
Sub bt1Go_onclick()
'** Declarations:'
Dim OPR, DM, USR, strNTName, strUserDN, strNM, objUser, TNP, EROR, ABS
Dim objNetwork, objShell, objFSO
'** Objects:'
Set objNetwork = CreateObject("WScript.Network")
Set objShell = CreateObject("Wscript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
'** User/Domain:'
OPR = objNetwork.UserName
DM = objNetwork.UserDomain & "\"
'** Type username for the user that needs password change:'
USR = InputBox("Username:", "Create Temporary Active Directory User Password", _
"Write Username Here")
if USR = "" then
exit sub
End if
'** Prevent run-time errors:'
On Error Resume Next
'** NameTranslate constants:'
Const ADS_NAME_INITTYPE_GC = 3
Const ADS_NAME_TYPE_NT4 = 3
Const ADS_NAME_TYPE_1779 = 1
'** Combine the user name and domain name:'
strNTName = DM & USR
strNT2 = DM & OPR
'** Translate operator name into DN:'
Set objTrans2 = CreateObject("NameTranslate")
objTrans2.Init ADS_NAME_INITTYPE_GC, ""
objTrans2.Set ADS_NAME_TYPE_NT4, strNT2
strUserDN2 = objTrans2.Get(ADS_NAME_TYPE_1779)
Set objUser2 = GetObject("LDAP://" & strUserDN2)
strUS3 = Mid(strUserDN2,4)
strUS4 = Split(strUS3, ",")
For n = LBound(strUS4) to UBound(strUS4)
strNM2 = strUS4(n)
Exit For
Next
'** Translate username into DN:'
Set objTrans = CreateObject("NameTranslate")
objTrans.Init ADS_NAME_INITTYPE_GC, ""
objTrans.Set ADS_NAME_TYPE_NT4, strNTName
If Err <> 0 Then
ABS = 1
End If
'** Execute if object is found:'
If ABS <> 1 Then
strUserDN = objTrans.Get(ADS_NAME_TYPE_1779)
'** Do LDAP bind to object:'
Set objUser = GetObject("LDAP://" & strUserDN)
'** Get full name:'
strUS1 = Mid(strUserDN,4)
strUS2 = Split(strUS1, ",")
For n = LBound(strUS2) to UBound(strUS2)
strNM = strUS2(n)
Exit For
Next
'** Assign password and parameters:'
If strNM <> "" Then
TNP = "changeme" & Mid(objFSO.GetTempName,4,4)
objUser.SetPassword TNP
If Err <> 0 Then
EROR = 1
End If
objUser.Put "pwdLastSet", 0
objUser.IsAccountLocked = False
objUser.SetInfo
End If
'** If no error, show new temporary password:'
If EROR <> 1 Then
MsgBox "New temporary password for " & UCase(USR) & " (" & strNM & "):" & _
vbCrLf & vbCrLf & TNP & vbCrLf, 64, "New Password, configured by " & strNM2
End If
End If
'** End if object not found:'
If ABS = 1 Then
MsgBox UCase(USR) & " was not found. Please try again.", _
48, "Unknown Username"
End If
'** If no permission, give message:'
If EROR = 1 Then
MsgBox "You can not change password for this user.", _
48, "Permission Denied"
End If
End Sub
Sub ImportFromExcel
on error resume next
boolEndofFile = False
Dim oDLG
Set oDLG = CreateObject("MSComDlg.CommonDialog")
if err.number > 0 then
err.clear
oDLG = window.prompt("Please enter the path and file name to open.", "D:\your-spreadsheet.xls")
if oDLG <> "" then
globalstrQueryBuilder = ""
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open(oDLG)
intRow = 2
Do Until boolEndofFile
'According to ticket Q__23804616, these are the fields that are in the spreadsheet;
'Emp ID,Seat No,Email ID,Full Name, NT Login,Machine Name
strCell1 = objExcel.Cells(intRow, 1).Value 'Must be the "Employee ID" field
strCell2 = objExcel.Cells(intRow, 2).Value 'Must be the "Seat No" field
strCell3 = objExcel.Cells(intRow, 3).Value 'Must be the "Email Address" field
strCell4 = objExcel.Cells(intRow, 4).Value 'Must be the "Full Name" field
strCell5 = objExcel.Cells(intRow, 5).Value 'Must be the "NT Login" field
strCell6 = objExcel.Cells(intRow, 6).Value 'Must be the "Machine Name" field
if strCell1 & strCell2 & strCell3 & strCell4 & strCell5 & strCell6 = "" then
boolEndofFile = True
else
if NOT IsEmpty(strCell1) then strValue = strValue & "(description=*" & strCell1 & "*)" 'Employee ID
if NOT IsEmpty(strCell2) then strValue = strValue & "(description=*" & strCell2 & "*)" 'Seat No
if NOT IsEmpty(strCell3) then strValue = strValue & "(mail=*" & strCell3 & "*)" 'Email Address
if NOT IsEmpty(strCell4) then strValue = strValue & "(cn=*" & strCell4 & "*)" 'Full Name
if NOT IsEmpty(strCell5) then strValue = strValue & "(samAccountName=*" & strCell5 & "*)" 'NT Login
if NOT IsEmpty(strCell6) then strValue = strValue & "(description=*" & strCell6 & "*)" 'Machine Name
end if
intRow = intRow + 1
Loop
objExcel.Quit
globalstrQueryBuilder = strValue
globalStrSearchField = "(|" & globalstrQueryBuilder & ")"
globalstrSearchBtnPush = "FileOpen"
Submit_Form "FileOpen"
End If
else
With oDLG
.DialogTitle = "Open"
.Filter = "Excel Workbook|*.xls"
.MaxFileSize = 255
.Flags = .Flags Or &H1000 'FileMustExist (OFN_FILEMUSTEXIST)
.ShowOpen
If .FileName <> "" Then
globalstrQueryBuilder = ""
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open(.FileName)
intRow = 2
Do Until boolEndofFile
strCell1 = objExcel.Cells(intRow, 1).Value 'Must be the "Employee ID" field
strCell2 = objExcel.Cells(intRow, 2).Value 'Must be the "Seat No" field
strCell3 = objExcel.Cells(intRow, 3).Value 'Must be the "Email Address" field
strCell4 = objExcel.Cells(intRow, 4).Value 'Must be the "Full Name" field
strCell5 = objExcel.Cells(intRow, 5).Value 'Must be the "NT Login" field
strCell6 = objExcel.Cells(intRow, 6).Value 'Must be the "Machine Name" field
if strCell1 & strCell2 & strCell3 & strCell4 & strCell5 & strCell6 = "" then
boolEndofFile = True
else
if NOT IsEmpty(strCell1) then strValue = strValue & "(description=*" & strCell1 & "*)" 'Employee ID
if NOT IsEmpty(strCell2) then strValue = strValue & "(description=*" & strCell2 & "*)" 'Seat No
if NOT IsEmpty(strCell3) then strValue = strValue & "(mail=*" & strCell3 & "*)" 'Email Address
if NOT IsEmpty(strCell4) then strValue = strValue & "(cn=*" & strCell4 & "*)" 'Full Name
if NOT IsEmpty(strCell5) then strValue = strValue & "(samAccountName=*" & strCell5 & "*)" 'NT Login
if NOT IsEmpty(strCell6) then strValue = strValue & "(description=*" & strCell6 & "*)" 'Machine Name
end if
intRow = intRow + 1
Loop
objExcel.Quit
globalstrQueryBuilder = strValue
globalStrSearchField = "(|" & globalstrQueryBuilder & ")"
globalstrSearchBtnPush = "FileOpen"
Submit_Form "FileOpen"
End If
End With
end if
Set oDLG = Nothing
End Sub
Sub About_OnClick
'Enter names as contibuters increase.
msgbox vbCRLF & "User and Computer Account Control" & vbCRLF & vbCRLF & "Written for Sharatha and contributed by;" & vbCRLF & vbCRLF & vbtab & _
"""rejoinder""" & vbCRLF & vbtab & _
" " & vbCRLF & vbtab & _
" " & vbCRLF & vbtab & _
" " & vbCRLF & vbtab & _
" " & vbCRLF & vbtab
End Sub
Sub RunHTA(NameOfHTA)
Set objShell = CreateObject("Wscript.Shell")
objShell.Run NameOfHTA
End Sub
Sub allowpings
if chk_allowpings.Checked then
boolAllowPing = True
else
boolAllowPing = False
end if
End Sub
Sub LookupLastLogin
if chk_LookupLastLogin.Checked then
boolLookupLastLogin = True
else
boolLookupLastLogin = False
end if
End Sub
Sub TableReports
if chk_TableReports.Checked then
boolTableReports = True
else
boolTableReports = False
end if
End Sub
Sub GetMailboxDetails
on error resume next
strExchangeServerQuery = "winmgmts://" & strEmailServer & "/root/cimv2/applications/exchange"
set serverList = GetObject(strExchangeServerQuery).InstancesOf("ExchangeServerState")
For each ExchangeServer in serverList
strExchangeQuery = "winmgmts://" & ExchangeServer.Name & "/root/MicrosoftExchangeV2"
strExchangeQuery = "winmgmts://" & strEmailServer & "/root/MicrosoftExchangeV2"
Set objMailboxes = GetObject(strExchangeQuery).InstancesOf("Exchange_Mailbox")
For each mailbox in objMailboxes
MailboxList.AddNew
MailboxList("legacyExchangeDN") = mailbox.LegacyDN
MailboxList("mailboxsize") = Round(mailbox.Size / 1024)
MailboxList.Update
Next
Next
MailboxList.MoveFirst
End Sub
Sub MailboxSizeCompare
oDLG = window.prompt("Enter the mailbox size limit in MB.", "1000")
if IsNumeric(oDLG) then
Submit_Form("MailboxSize:" & oDLG)
end if
End Sub
Sub DoCal(elTarget)
sRtn = showModalDialog("Calendar.htm","","center=yes;dialogWidth=160pt;dialogHeight=180pt")
Execute(elTarget & ".value = sRtn")
Detect_Search_Field(elTarget)
End Sub
Function GetOUMembers(OU)
strValue = ""
on error resume next
GroupMembershipDB.Filter = "MemberDistinguishedName LIKE '*OU=" & OU & "*'"
GroupMembershipDB.Sort = "SAMAccountName"
GroupMembershipDB.MoveFirst
Do While Not GroupMembershipDB.EOF
strValue = strValue & "(DistinguishedName=" & GroupMembershipDB.Fields.Item("MemberDistinguishedName").Value & ")"
GroupMembershipDB.MoveNext
Loop
if err.number > 0 then
GetOUMembers = "INVALID"
else
GetOUMembers = "(|" & strValue & ")"
End if
End Function
Function GetComputersForOSQuery(OS)
strValue = ""
strSearchField = "(operatingsystem=*" & OS & "*)"
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
boolFoundRecords = False
for each strDomain in arrDomainNames
' Search entire Active Directory domain.
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(&(objectCategory=computer)" & strSearchField & ")"
' Comma delimited list of attribute values to retrieve.
strAttributes = "cn,operatingsystem"
' Construct the LDAP syntax query.
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 1000
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False
' Run the query.
Set adoRecordset = adoCommand.Execute
' Enumerate the resulting recordset.
strDetails = ""
If Not adoRecordset.EOF Then
boolFoundRecords = True
Do Until adoRecordset.EOF
strValue = strValue & "(info=*" & adoRecordset.Fields("cn").Value & "*)"
adoRecordset.MoveNext
Loop
End if
next
if NOT boolFoundRecords then
GetComputersForOSQuery = "INVALID"
else
GetComputersForOSQuery = "(|" & strValue & ")"
End if
End Function
Function GetComputersForDateCreatedQuery(CreatedDate)
strValue = ""
strWhenCreated = Year(CreatedDate) & Right("0" & Month(CreatedDate), 2) & Right("0" & Day(CreatedDate), 2)
strSearchField = "(whenCreated>=" & strWhenCreated & "000000.0Z)(whenCreated<=" & strWhenCreated & "235959.0Z)"
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
boolFoundRecords = False
for each strDomain in arrDomainNames
' Search entire Active Directory domain.
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(&(objectCategory=computer)" & strSearchField & ")"
' Comma delimited list of attribute values to retrieve.
strAttributes = "cn,operatingsystem"
' Construct the LDAP syntax query.
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 1000
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False
' Run the query.
Set adoRecordset = adoCommand.Execute
' Enumerate the resulting recordset.
strDetails = ""
If Not adoRecordset.EOF Then
boolFoundRecords = True
Do Until adoRecordset.EOF
strValue = strValue & "(info=*" & adoRecordset.Fields("cn").Value & "*)"
adoRecordset.MoveNext
Loop
End if
next
if NOT boolFoundRecords then
GetComputersForDateCreatedQuery = "INVALID"
else
GetComputersForDateCreatedQuery = "(|" & strValue & ")"
End if
End Function
Function GetComputersBasedOnOU(OU)
strValue = ""
strSearchField = "(distinguishedName=*)"
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
boolFoundRecords = False
for each strDomain in arrDomainNames
' Search entire Active Directory domain.
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(&(objectCategory=computer)" & strSearchField & ")"
' Comma delimited list of attribute values to retrieve.
strAttributes = "cn,distinguishedName"
' Construct the LDAP syntax query.
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 1000
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False
' Run the query.
Set adoRecordset = adoCommand.Execute
' Enumerate the resulting recordset.
strDetails = ""
If Not adoRecordset.EOF Then
boolFoundRecords = True
Do Until adoRecordset.EOF
if InStr(adoRecordset.Fields("distinguishedName").Value,OU) > 0 then
strValue = strValue & "(info=*" & adoRecordset.Fields("cn").Value & "*)"
End if
adoRecordset.MoveNext
Loop
End if
next
if NOT boolFoundRecords then
GetComputersBasedOnOU = "INVALID"
else
GetComputersBasedOnOU = "(|" & strValue & ")"
End if
End Function
Sub txt_filtersecuritygroup_onKeyUP
on error resume next
if txt_filtersecuritygroup.Value <> "" then
Detect_Search_Field "txt_filtersecuritygroup"
Set objlst_groupnames = document.getElementById( "lst_groupnames" )
objlst_groupnames.ListItems.Clear
GroupMembershipDB.Filter = "samaccountname LIKE '*" & txt_filtersecuritygroup.Value & "*'"
GroupMembershipDB.Sort = "SAMAccountName"
GroupMembershipDB.MoveFirst
strLastGroupDN = ""
Do Until GroupMembershipDB.EOF
strNTName = GroupMembershipDB.Fields.Item("samaccountname").Value
strGroupType = GroupMembershipDB.Fields.Item("samaccounttype").Value
strPrimary = GroupMembershipDB.Fields.Item("PrimaryGroupToken").Value
strdistinguishedName = GroupMembershipDB.Fields.Item("distinguishedName").Value
intNumberOfMembers = dicGroupNumbers.Item(strdistinguishedName)
if strLastGroupDN <> strdistinguishedName then
Select Case strGroupType
Case "[GSG]", "[LSG]", "[USG]", "[Unknown]"
Set objListItem = objlst_groupnames.ListItems.Add
objListItem.Text = strNTName
objListItem.ListSubItems.Add.Text = intNumberOfMembers
objListItem.ListSubItems.Add.Text = strGroupType
objListItem.ListSubItems.Add.Text = strdistinguishedName
objListItem.ListSubItems.Add.Text = strPrimary
End Select
strLastGroupDN = strdistinguishedName
End if
GroupMembershipDB.MoveNext
Loop
span_GroupMembership.InnerHTML = "(" & lst_groupnames.ListItems.Count & ")"
end if
End Sub
Sub txt_filterdgmembership_onKeyUP
on error resume next
if txt_filterdgmembership.Value <> "" then
Detect_Search_Field "txt_filterdgmembership"
Set objlst_dgnames = document.getElementById( "lst_dgnames" )
objlst_dgnames.ListItems.Clear
GroupMembershipDB.Filter = "samaccountname LIKE '*" & txt_filterdgmembership.Value & "*'"
GroupMembershipDB.Sort = "SAMAccountName"
GroupMembershipDB.MoveFirst
strLastGroupDN = ""
Do Until GroupMembershipDB.EOF
strGroupType = GroupMembershipDB.Fields.Item("samaccounttype").Value
strNTName = GroupMembershipDB.Fields.Item("samaccountname").Value
strPrimary = GroupMembershipDB.Fields.Item("PrimaryGroupToken").Value
strdistinguishedName = GroupMembershipDB.Fields.Item("distinguishedName").Value
intNumberOfMembers = dicGroupNumbers.Item(strdistinguishedName)
if strLastGroupDN <> strdistinguishedName then
Select Case strGroupType
Case "[GDG]", "[LDG]", "[UDG]"
Set objListItem = objlst_dgnames.ListItems.Add
objListItem.Text = strNTName
objListItem.ListSubItems.Add.Text = intNumberOfMembers
objListItem.ListSubItems.Add.Text = strGroupType
objListItem.ListSubItems.Add.Text = strdistinguishedName
objListItem.ListSubItems.Add.Text = strPrimary
End Select
strLastGroupDN = strdistinguishedName
End if
GroupMembershipDB.MoveNext
Loop
span_groupmembership.InnerHTML = "(" & lst_dgnames.ListItems.Count & ")"
end if
End Sub
Sub txt_filtermanagerlist_onKeyUP
if txt_filtermanagerlist.Value <> "" then
Detect_Search_Field "txt_filtermanagerlist"
For Each objOption in lst_managerlist.Options
objOption.RemoveNode
Next
intManagers = 0
for each Manager in dicManagerList
if InStr(UCase(Manager),UCase(txt_filtermanagerlist.Value)) then
set newOption = document.createElement("OPTION")
newOption.Text = mid(Manager,4,instr(Manager,",")-4) & " (" & dicManagerList.Item(Manager) & ")"
newOption.Value = Manager
lst_managerlist.Add newOption
intManagers = intManagers + 1
end if
next
span_managerlist.InnerHTML = "(" & intManagers & ")"
end if
End Sub
Function GetMailboxStore(MailboxStore)
if MailboxStore <> "" OR NOT IsNull(MailboxStore) then
arrMailboxStoreString = Split(MailboxStore,"CN=")
GetMailboxStore = replace(arrMailboxStoreString(2),",","")
else
GetMailboxStore = ""
End if
End Function
Sub FillDomainComputers
On Error Resume Next
Const ADS_SCOPE_SUBTREE = 2
Set objlst_domaincomputers = document.getElementById( "lst_domaincomputers" )
objlst_domaincomputers.ListItems.Clear
Set objRootDSE = GetObject("LDAP://RootDSE")
strDNSDomain = objRootDSE.Get("defaultNamingContext")
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
adoCommand.Properties("Page Size") = 1000
adoCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
adoCommand.CommandText = "SELECT ADsPath FROM 'LDAP://" & strDNSDomain & "' WHERE objectCategory='organizationalUnit'"
Set objRecordSet = adoCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Set objOU = GetObject(objRecordSet.Fields("ADsPath").Value)
objOU.Filter = Array("Computer")
For Each objItem in objOU
strCN = objItem.CN
strDN = objItem.distinguishedName
DomainComputersDB.AddNew
DomainComputersDB("CN") = strCN
DomainComputersDB("DistinguishedName") = strDN
DomainComputersDB.Update
Set objListItem = objlst_domaincomputers.ListItems.Add
objListItem.Text = strCN
objListItem.ListSubItems.Add.Text = strDN
Next
objRecordSet.MoveNext
Loop
span_domaincomputers.InnerHTML = "(" & lst_domaincomputers.ListItems.Count & ")"
End Sub
Sub lst_domaincomputers_onDblClick
strComputer = lst_domaincomputers.SelectedItem.Text
txt_notes.Value = strComputer
Detect_Search_Field "txt_notes"
Submit_Form "Main"
End Sub
Sub txt_filterdomaincomputers_onKeyUP
on error resume next
if txt_filterdomaincomputers.Value <> "" then
Detect_Search_Field "txt_filterdomaincomputers"
Set objlst_domaincomputers = document.getElementById( "lst_domaincomputers" )
objlst_domaincomputers.ListItems.Clear
intDomainComputers = 0
DomainComputersDB.Filter = "CN LIKE '*" & txt_filterdomaincomputers.Value & "*'"
DomainComputersDB.Sort = "CN"
DomainComputersDB.MoveFirst
Do Until DomainComputersDB.EOF
strCN = DomainComputersDB.Fields.Item("CN").Value
strDN = DomainComputersDB.Fields.Item("DistinguishedName").Value
Set objListItem = objlst_domaincomputers.ListItems.Add
objListItem.Text = strCN
objListItem.ListSubItems.Add.Text = strDN
DomainComputersDB.MoveNext
Loop
span_domaincomputers.InnerHTML = "(" & lst_domaincomputers.ListItems.Count & ")"
else
populatedomaincomputers
end if
End Sub
Sub populatedomaincomputers
on error resume next
Set objlst_domaincomputers = document.getElementById( "lst_domaincomputers" )
objlst_domaincomputers.ListItems.Clear
intDomainComputers = 0
DomainComputersDB.Filter = ""
DomainComputersDB.Sort = "CN"
DomainComputersDB.MoveFirst
Do Until DomainComputersDB.EOF
strCN = DomainComputersDB.Fields.Item("CN").Value
strDN = DomainComputersDB.Fields.Item("DistinguishedName").Value
Set objListItem = objlst_domaincomputers.ListItems.Add
objListItem.Text = strCN
objListItem.ListSubItems.Add.Text = strDN
DomainComputersDB.MoveNext
Loop
span_domaincomputers.InnerHTML = "(" & lst_domaincomputers.ListItems.Count & ")"
End Sub
Sub ResetComputerPassword
if txt_notes.value <> "" then
DomainComputersDB.Filter = "CN='" & txt_notes.value & "'"
DomainComputersDB.MoveFirst
strLDAP = "LDAP://" & DomainComputersDB.Fields.Item("DistinguishedName").Value
set objComputer = GetObject(strLDAP)
objComputer.SetPassword txt_notes.value & "$"
else
msgbox "Please enter a valid computer name."
End if
End Sub
Sub SaveList(ListBox)
on error resume next
Dim oDLG
Set oDLG=CreateObject("MSComDlg.CommonDialog")
if err.number > 0 then
err.clear
oDLG = window.prompt("Please enter the path and file name to save.", "D:\HTA-Result-Set.csv")
if oDLG <> "" then
strAnswer = oDLG
End If
else
With oDLG
.DialogTitle = "Save As"
.Filter="CSV File|*.csv"
.MaxFileSize = 255
.ShowSave
If .FileName <> "" Then
strAnswer = .FileName
End If
End With
end if
Set oDLG=Nothing
If IsNull(strAnswer) or strAnswer = "" Then
'Do nothing
Else
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(strAnswer) = True Then
objFSO.DeleteFile strAnswer, True
Else
' do nothing
end if
Set objFile = objFSO.CreateTextFile(strAnswer, True)
Set objListBox = document.getElementById(ListBox)
strValue = """" & objListBox.ColumnHeaders(1).Text & """"
for n = 2 to objListBox.ColumnHeaders.Count
strValue = strValue & ",""" & objListBox.ColumnHeaders(n).Text & """"
next
objFile.write strValue & vbCRLF
for n = 1 to objListBox.ListItems.Count
strValue = """" & objListBox.ListItems(n).Text & """"
for y = 1 to objListBox.ListItems(n).ListSubItems.Count
strValue = strValue & ",""" & objListBox.ListItems(n).ListSubItems(y).Text & """"
next
objFile.write strValue & vbCRLF
next
objFile.Close
MsgBox "Saved."
End If
End Sub
</script>
<script language ='javascript' for ='lst_groupnames' event ='ColumnClick(ColumnHeader)'>
if(ColumnHeader.SubItemIndex == lst_groupnames.SortKey)
{
if(lst_groupnames.SortOrder == 0) lst_groupnames.SortOrder = 1
else lst_groupnames.SortOrder = 0
}
else
{
lst_groupnames.SortKey = ColumnHeader.SubItemIndex
if(lst_groupnames.SortOrder == 0) lst_groupnames.SortOrder = 1
else lst_groupnames.SortOrder == 0
}
</script>
<script language ='javascript' for ='lst_groupnames' event ='DblClick'>
var theValue = ""
theValue = SelectedItem.Text + SelectedItem.Key
for(i = 1; i <= SelectedItem.ListSubItems.Count; i ++) theValue = theValue + "\n" + SelectedItem.ListSubItems(i).Text
Submit_Form('Group')
</script>
<script language ='javascript' for ='lst_dgnames' event ='ColumnClick(ColumnHeader)'>
if(ColumnHeader.SubItemIndex == lst_dgnames.SortKey)
{
if(lst_dgnames.SortOrder == 0) lst_dgnames.SortOrder = 1
else lst_dgnames.SortOrder = 0
}
else
{
lst_dgnames.SortKey = ColumnHeader.SubItemIndex
if(lst_dgnames.SortOrder == 0) lst_dgnames.SortOrder = 1
else lst_dgnames.SortOrder == 0
}
</script>
<script language ='javascript' for ='lst_dgnames' event ='DblClick'>
var theValue = ""
theValue = SelectedItem.Text + SelectedItem.Key
for(i = 1; i <= SelectedItem.ListSubItems.Count; i ++) theValue = theValue + "\n" + SelectedItem.ListSubItems(i).Text
Submit_Form('DistributionGroup')
</script>
<script language ='javascript' for ='lst_domaincomputers' event ='ColumnClick(ColumnHeader)'>
if(ColumnHeader.SubItemIndex == lst_domaincomputers.SortKey)
{
if(lst_domaincomputers.SortOrder == 0) lst_domaincomputers.SortOrder = 1
else lst_domaincomputers.SortOrder = 0
}
else
{
lst_domaincomputers.SortKey = ColumnHeader.SubItemIndex
if(lst_domaincomputerss.SortOrder == 0) lst_domaincomputers.SortOrder = 1
else lst_domaincomputers.SortOrder == 0
}
</script>
<script language ='javascript' for ='lst_domaincomputers' event ='DblClick'>
var theValue = ""
theValue = SelectedItem.Text + SelectedItem.Key
for(i = 1; i <= SelectedItem.ListSubItems.Count; i ++) theValue = theValue + "\n" + SelectedItem.ListSubItems(i).Text
lst_domaincomputers_onDblClick()
</script>
<STYLE TYPE="text/css">
<!--
body {background-color: menu;color: menutext;}
td {font-family: MS Sans Serif;font-size: 8pt;}
input {font-family: MS Sans Serif;font-size: 8pt;}
button {font-family: MS Sans Serif;font-size: 8pt;}
option {font-family: MS Sans Serif;font-size: 8pt;}
select {font-family: MS Sans Serif;font-size: 8pt;}
.submenu {position:absolute;top=35;
background-color:Menu;
border="1px outset";}
.MenuIn {border:"1px inset";cursor:default;}
.Menuover {border:"1px outset";cursor:default;}
.Menuout {}
.Submenuover {background-color:highlight;color:highlighttext;cursor:default;}
.Submenuout {background-color:Menu;color:MenuText;cursor:default;}
.HideFromGUI {display:none;}
-->
</STYLE>
<body>
<!-- Main menu -->
<TABLE id=MenuTable height=25><TR>
<TD onclick='ShowSubMenu Me,MyFileMenu'
onmouseover='MenuOver Me,MyFileMenu'
onmouseout='MenuOut Me'> Query </TD>
<TD >|</TD>
<TD onclick='ShowSubMenu Me,MyEditMenu'
onmouseover='MenuOver Me,MyEditMenu'
onmouseout='MenuOut Me'> Reports </TD>
<TD >|</TD>
<TD onclick='ShowSubMenu Me,QueryBuilderMenu'
onmouseover='MenuOver Me,QueryBuilderMenu'
onmouseout='MenuOut Me'> Query Builder </TD>
<TD >|</TD>
<TD onclick='ShowSubMenu Me,ToolsMenu'
onmouseover='MenuOver Me,ToolsMenu'
onmouseout='MenuOut Me'> Tools </TD>
<TD >|</TD>
<TD > Checkbox Profile <select id="lst_chkprofiles" name="lst_chkprofiles">
</select>
</TD>
<!-- Main menu, Checkbox profile tools -->
<TD onclick='AddToCheckboxProfile'
onmouseover='MenuOver Me,MyFileMenu'
onmouseout='MenuOut Me' NOWRAP> [+]Add</TD>
<TD onclick='DeleteFromCheckboxProfile'
onmouseover='MenuOver Me,MyFileMenu'
onmouseout='MenuOut Me' NOWRAP> [-]Delete</TD>
<TD onclick='ModifyCurrentCheckboxProfile'
onmouseover='MenuOver Me,MyFileMenu'
onmouseout='MenuOut Me' NOWRAP> [!]Modify</TD>
<TD >|</TD>
<TD onclick='About_OnClick'
onmouseover='MenuOver Me,MyFileMenu'
onmouseout='MenuOut Me'> About</TD>
<TD >|</TD>
<TD onclick="HideMenu" width="100%" border="2"></TD>
</TR></TABLE>
<!-- Drop down for QUery -->
<TABLE ID=MyFileMenu class=submenu style="left=10;display:none;">
<TR><TD onclick="HideMenu:open"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Open</TD></TR>
<TR><TD onclick="HideMenu:importfromexcel"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Import from Excel</TD></TR>
<TR><TD onclick="HideMenu:save"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Save</TD></TR>
<TR><TD onclick="HideMenu:saveAs"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Save As</TD></TR>
<TR><TD><HR></TD></TR>
<TR><TD onclick="HideMenu:window.close"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Quit</TD></TR>
</TABLE>
<!-- Drop down for Reports -->
<TABLE ID=MyEditMenu class=submenu style="left=50;display:none;">
<TR><TD onclick="HideMenu:Email_This_Record"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Email This Record</TD></TR>
<TR><TD onclick="HideMenu:Email_All_Records"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Email All Records</TD></TR>
<TR><TD onclick="HideMenu:Email_As_Attachment"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Email as Attachment</TD></TR>
<TR><TD><HR></TD></TR>
<TR><TD onclick="HideMenu:RunScript"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Save to</TD></TR>
<TR><TD><HR></TD></TR>
<TR><TD onclick="HideMenu:ClickTheSpecialReportButton"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> All Disabled Users</TD></TR>
<TR><TD onclick="HideMenu:SpecialReportDisabledUsersToday"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Disabled Users Last Modified Today</TD></TR>
<TR><TD onclick="HideMenu:SpecialReportDisabledUsersSomeDay"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Disabled Users Last Modified...</TD></TR>
<TR><TD onclick="HideMenu:SpecialReportNewUsersToday"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> New Users Created Today</TD></TR>
<TR><TD><HR></TD></TR>
<TR><TD onclick="HideMenu:Submit_Form('Logon:7')"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Not logged in for 1 week</TD></TR>
<TR><TD onclick="HideMenu:Submit_Form('Logon:30')"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Not logged in for 1 month</TD></TR>
<TR><TD onclick="HideMenu:Submit_Form('Logon:60')"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Not logged in for 2 months</TD></TR>
<TR><TD><HR></TD></TR>
<TR><TD onclick="HideMenu:MailboxSizeCompare"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Users with mailbox size over...</TD></TR>
</TABLE>
<!-- Drop down for Query Builder -->
<TABLE ID=QueryBuilderMenu class=submenu style="left=97;display:none;">
<TR><TD onclick="HideMenu:AddToQueryBuilder"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Add recent query to Query Builder</TD></TR>
<TR><TD onclick="HideMenu:QueryBuilderRecorder"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Query Builder Recorder<input type="checkbox" id="chk_qbrecorder" name="chk_qbrecorder"></TD></TR>
<TR><TD onclick="HideMenu:ViewQueryBuilder"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> View Query Builder</TD></TR>
<TR><TD onclick="HideMenu:RunQueryBuilder"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Run Query Builder</TD></TR>
<TR><TD onclick="HideMenu:ClearQueryBuilder"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Clear Query Builder</TD></TR>
</TABLE>
<!-- Drop down for Tools -->
<TABLE ID=ToolsMenu class=submenu style="left=170;display:none;">
<TR><TD onclick="HideMenu:allowpings"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Allow Pings<input type="checkbox" id="chk_allowpings" name="chk_allowpings"></TD></TR>
<TR><TD onclick="HideMenu:LookupLastLogin"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Look up last login<input type="checkbox" id="chk_LookupLastLogin" name="chk_LookupLastLogin"></TD></TR>
<TR><TD onclick="HideMenu:tablereports"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Invert emails to table format<input type="checkbox" id="chk_tablereports" name="chk_tablereports"></TD></TR>
<TR><TD><HR></TD></TR>
<TR><TD onclick="HideMenu:RunHTA('HTA1.HTA')"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Launch HTA 1</TD></TR>
<TR><TD onclick="HideMenu:RunHTA('HTA2.HTA')"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Launch HTA 2</TD></TR>
<TR><TD onclick="HideMenu:RunHTA('Q_23768297.hta')"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Add Users to Groups</TD></TR>
</TABLE>
<hr>
<table width="100%" border="0" onclick="HideMenu">
<tr>
<td align="left" colspan="2" valign="top">
<table border="0" padding="1">
<tr>
<td>
<fieldset>
<LEGEND>Email Settings</LEGEND>
<table border="0">
<tr><td>To:</td><td><button onclick="ShowDialogTo">Resolve</button></td><td><input type="text" id="txt_EmailTo" name="txt_EmailTo" size="50"><input type="hidden" id="txt_EmailToHidden" name="txt_EmailToHidden" size="50"><br></td></td><td rowspan="4" valign="top">Email Body:</td><td rowspan="3" valign="top"><textarea id="txt_EmailBody" name="txt_EmailBody" rows=5 cols=40></TEXTAREA></td></tr>
<tr><td>CC:</td><td><button onclick="ShowDialogCC">Resolve</button></td><td><input type="text" id="txt_EmailCC" name="txt_EmailCC" size="50"><input type="hidden" id="txt_EmailCCHidden" name="txt_EmailCCHidden" size="50"><br></td></tr>
<tr><td>Email Subject:</td><td></td><td><select id="txt_EmailSubject" name="txt_EmailSubject"></select></td></tr>
</table>
</fieldset>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="left" valign="top" width="38%">
<table border="0">
<tr>
<td>
</td>
<td>
<input type="checkbox" id="chk_selectall" name="chk_selectall" checked=True onclick="vbs:SelectAllCheck">Select/Deselect All
</td>
</tr>
<tr id=tr_seatno>
<td>
Seat No:
</td>
<td>
<input type="checkbox" id="chk_seatno" name="chk_seatno" checked=True><input type="text" size="40" id="txt_seatno" name="txt_seatno" onkeypress="vbs:Detect_Search_Field('txt_seatno')">
</td>
</tr>
<tr id=tr_replacementseatno>
<td>
Replacement Seat No:
</td>
<td>
<input type="checkbox" id="chk_replacementseatno" name="chk_replacementseatno" checked=True><input type="text" size="40" id="txt_replacementseatno" name="txt_replacementseatno">
</td>
</tr>
<tr id=tr_building>
<td>
Building:
</td>
<td>
<input type="checkbox" id="chk_building" name="chk_building" checked=True><input type="text" size="40" id="txt_building" name="txt_building" onkeypress="vbs:Detect_Search_Field('txt_building')">
</td>
</tr>
<tr id=tr_extensionno>
<td>
Extension No:
</td>
<td>
<input type="checkbox" id="chk_extensionno" name="chk_extensionno" checked=True><input type="text" size="40" id="txt_extensionno" name="txt_extensionno" onkeypress="vbs:Detect_Search_Field('txt_extensionno')">
</td>
</tr>
<tr id=tr_empid>
<td>
Emp ID:
</td>
<td>
<input type="checkbox" id="chk_empid" name="chk_empid" checked=True><input type="text" size="10" id="txt_empid" name="txt_empid" onkeypress="vbs:Detect_Search_Field('txt_empid')">
</td>
</tr>
<tr id=tr_department>
<td>
Department:
</td>
<td>
<input type="checkbox" id="chk_department" name="chk_department" checked=True><input type="text" size="50" id="txt_department" name="txt_department" onkeypress="vbs:Detect_Search_Field('txt_department')">
</td>
</tr>
<tr id=tr_designation>
<td>
Designation:
</td>
<td>
<input type="checkbox" id="chk_designation" name="chk_designation" checked=True><input type="text" size="50" id="txt_designation" name="txt_designation" onkeypress="vbs:Detect_Search_Field('txt_designation')">
</td>
</tr>
<tr id=tr_name>
<td>
User Name:
</td>
<td>
<input type="checkbox" id="chk_name" name="chk_name" checked=True><input type="text" size="40" id="txt_name" name="txt_name" onkeypress="vbs:Detect_Search_Field('txt_name')">
<span id="span_userorcontact">
</span>
</td>
</tr>
<tr id=tr_loginname>
<td>
Login Name:
</td>
<td>
<input type="checkbox" id="chk_loginname" name="chk_loginname" checked=True><input type="text" size="40" id="txt_loginname" name="txt_loginname" onkeypress="vbs:Detect_Search_Field('txt_loginname')">
<span id="span_enabled">
</span>
</td>
</tr>
<tr id=tr_email>
<td>
Email Address:
</td>
<td>
<input type="checkbox" id="chk_email" name="chk_email" checked=True><input type="text" size="50" id="txt_email" name="txt_email" onkeypress="vbs:Detect_Search_Field('txt_email')">
</td>
</tr>
<tr id=tr_mailboxsize>
<td>
Mailbox Size (MB):
</td>
<td>
<input type="checkbox" id="chk_mailboxsize" name="chk_mailboxsize" checked=True><input type="text" size="20" id="txt_mailboxsize" name="txt_mailboxsize" onkeypress="vbs:Detect_Search_Field('txt_mailboxsize')">
</td>
</tr>
<tr id=tr_mailboxstore>
<td>
Mailbox Store:
</td>
<td>
<input type="checkbox" id="chk_mailboxstore" name="chk_mailboxstore" checked=True><input type="text" size="50" id="txt_mailboxstore" name="txt_mailboxstore" onkeypress="vbs:Detect_Search_Field('txt_mailboxstore')">
</td>
</tr>
<tr id=tr_mobileno>
<td>
Mobile Number:
</td>
<td>
<input type="checkbox" id="chk_mobileno" name="chk_mobileno" checked=True><input type="text" size="20" id="txt_mobileno" name="txt_mobileno" onkeypress="vbs:Detect_Search_Field('txt_mobileno')">
</td>
</tr>
<tr id=tr_company>
<td>
Company:
</td>
<td>
<input type="checkbox" id="chk_company" name="chk_company" checked=True><input type="text" size="20" id="txt_company" name="txt_company" onkeypress="vbs:Detect_Search_Field('txt_company')">
</td>
</tr>
<tr id=tr_address>
<td>
Address:
</td>
<td>
<input type="checkbox" id="chk_address" name="chk_address" checked=True><input type="text" size="20" id="txt_address" name="txt_address" onkeypress="vbs:Detect_Search_Field('txt_address')">
</td>
</tr>
<tr id=tr_city>
<td>
City:
</td>
<td>
<input type="checkbox" id="chk_city" name="chk_city" checked=True><input type="text" size="20" id="txt_city" name="txt_city" onkeypress="vbs:Detect_Search_Field('txt_city')">
</td>
</tr>
<tr id=tr_state>
<td>
State:
</td>
<td>
<input type="checkbox" id="chk_state" name="chk_state" checked=True><input type="text" size="20" id="txt_state" name="txt_state" onkeypress="vbs:Detect_Search_Field('txt_state')">
</td>
</tr>
<tr id=tr_zipcode>
<td>
Zip Code:
</td>
<td>
<input type="checkbox" id="chk_zipcode" name="chk_zipcode" checked=True><input type="text" size="20" id="txt_zipcode" name="txt_zipcode" onkeypress="vbs:Detect_Search_Field('txt_zipcode')">
</td>
</tr>
<tr id=tr_country>
<td>
Country:
</td>
<td>
<input type="checkbox" id="chk_country" name="chk_country" checked=True><input type="text" size="20" id="txt_country" name="txt_country" onkeypress="vbs:Detect_Search_Field('txt_country')">
  Must search by 2 letter country code
</td>
</tr>
<tr id=tr_homephone>
<td>
Home Phone:
</td>
<td>
<input type="checkbox" id="chk_homephone" name="chk_homephone" checked=True><input type="text" size="20" id="txt_homephone" name="txt_homephone" onkeypress="vbs:Detect_Search_Field('txt_homephone')">
</td>
</tr>
<tr id=tr_manager>
<td>
Manager:
</td>
<td>
<input type="checkbox" id="chk_manager" name="chk_manager" checked=True><input type="hidden" size="20" id="txt_manager" name="txt_manager"><input type="text" size="20" id="txt_managerseen" name="txt_managerseen" onkeypress="vbs:Detect_Search_Field('txt_managerseen')">
</td>
</tr>
<tr id=tr_whencreated>
<td>
Date Created:
</td>
<td>
<input type="checkbox" id="chk_whencreated" name="chk_whencreated" checked=True><input type="text" size="40" id="txt_whencreated" name="txt_whencreated" onkeypress="vbs:Detect_Search_Field('txt_whencreated')"><input type=button value="Pick" onclick="DoCal('txt_whencreated')">
</td>
</tr>
<tr id=tr_oupathuser>
<td>
OU Path:
</td>
<td>
<input type="checkbox" id="chk_oupathuser" name="chk_oupathuser" checked=True><input type="text" size="50" id="txt_oupathuser" name="txt_oupathuser" onkeypress="vbs:Detect_Search_Field('txt_oupathuser')">
</td>
</tr>
<tr id=tr_lastlogintimestamp>
<td>
Last Login:
</td>
<td>
<input type="checkbox" id="chk_lastlogintimestamp" name="chk_lastlogintimestamp" checked=True><input type="text" size="50" id="txt_lastlogintimestamp" name="txt_lastlogintimestamp" onkeypress="vbs:Detect_Search_Field('txt_lastlogintimestamp')">
</td>
</tr>
<tr>
<td colspan="2" align="center">
<br>Showing record 
<span id="span_currentrecord">
0
</span>
of
<span id="span_totalrecords">
0
</span>
<br><br>
<input type="button" value='||< First' name='btnFirstEvent' onClick='vbs:First_Event'>
<input type="button" value='<< Previous' name='btnPreviousEvent' onClick='vbs:Previous_Event'>
<input type="button" value='Next >>' name='btnNextEvent' onClick='vbs:Next_Event'>
<input type="button" value='Last >||' name='btnLastEvent' onClick='vbs:Last_Event'><br><br>
<input type="button" value='Email this record' name='btnEmailThisRecord' onClick='vbs:Email_This_Record'>
<input type="button" value='Email all records' name='btnEmailAllRecords' onClick='vbs:Email_All_Records'>
<input type="button" value='Email as attachment' name='btnEmailAsAttachment' onClick='vbs:Email_As_Attachment'><br><br>
<input type="button" value='Clear Form' name='btnClearForm' onClick='vbs:Clear_Form("resetGroupLists")'>
<input type="submit" value="Submit" name="btn_submit" onClick="vbs:Submit_Form('Main')">
<input id="runbutton" class="button" type="button" value="Save to" name="run_button" onClick="Runscript">
<input id="runbutton" class="button" type="button" value="Change PWD" name="bt1go">
<input id="runbutton" class="button" type="button" value="Enable/Disable User" name="bt2go">
</td>
</tr>
</table>
</td>
<td align="left" valign="top" width="31%">
<fieldset>
<LEGEND>Computer Information</LEGEND>
<table>
<tr id=tr_notes>
<td valign="top">
Machine Name:
</td>
<td>
<input type="checkbox" id="chk_notes" name="chk_notes" checked=True><input type="text" size="40" id="txt_notes" name="txt_notes" onkeypress="vbs:Detect_Search_Field('txt_notes')"><input type="button" value='Reset' name='btnResetComputerPassword' onClick='vbs:ResetComputerPassword'>
<br>IP: <span id="span_computerip"> </span><br>
Status: <span id="span_computeronline"> </span>
</td>
</tr>
<tr id=tr_computerserialno>
<td>
Serial No:
</td>
<td>
<input type="checkbox" id="chk_computerserialno" name="chk_computerserialno" checked=True><input type="text" size="40" id="txt_computerserialno" name="txt_computerserialno" onkeypress="vbs:Detect_Search_Field('txt_computerserialno')">
</td>
</tr>
<tr id=tr_replacedmachine>
<td>
Replaced Machine:
</td>
<td>
<input type="checkbox" id="chk_replacedmachine" name="chk_replacedmachine" checked=True><input type="text" size="40" id="txt_replacedmachine" name="txt_replacedmachine">
</td>
</tr>
<tr id=tr_replacedcomputerserialno>
<td>
Replaced Serial No:
</td>
<td>
<input type="checkbox" id="chk_replacedcomputerserialno" name="chk_replacedcomputerserialno" checked=True><input type="text" size="40" id="txt_replacedcomputerserialno" name="txt_replacedcomputerserialno">
</td>
</tr>
<tr id=tr_oupathcomputer>
<td>
OU Path:
</td>
<td>
<input type="checkbox" id="chk_oupathcomputer" name="chk_oupathcomputer" checked=True><input type="text" size="40" id="txt_oupathcomputer" name="txt_oupathcomputer" onkeypress="vbs:Detect_Search_Field('txt_oupathcomputer')">
</td>
</tr>
<tr id=tr_computeros>
<td>
Computer OS:
</td>
<td>
<input type="checkbox" id="chk_computeros" name="chk_computeros" checked=True><input type="text" size="19" id="txt_computeros" name="txt_computeros" onkeypress="vbs:Detect_Search_Field('txt_computeros')">
<input type="text" size="18" id="txt_computerservicepack" name="txt_computerservicepack" onkeypress="vbs:Detect_Search_Field('txt_computerservicepack')">
</td>
</tr>
<tr id=tr_computerdescription>
<td>
Description:
</td>
<td>
<input type="checkbox" id="chk_computerdescription" name="chk_computerdescription" checked=True><input type="text" size="40" id="txt_computerdescription" name="txt_computerdescription" onkeypress="vbs:Detect_Search_Field('txt_computerdescription')">
</td>
</tr>
<tr id=tr_computercreated>
<td>
Created:
</td>
<td>
<input type="checkbox" id="chk_computercreated" name="chk_computercreated" checked=True><input type="text" size="40" id="txt_computercreated" name="txt_computercreated" onkeypress="vbs:Detect_Search_Field('txt_computercreated')"><input type=button value="Pick" onclick="DoCal('txt_computercreated')">
</td>
</tr>
</table>
</fieldset>
<br><br>
<fieldset id=tr_domaincomputers>
<LEGEND><!--<input type="checkbox" id="chk_domaincomputers" name="chk_domaincomputers" checked=True>-->Domain Computers <span id="span_domaincomputers"></span></LEGEND>
<OBJECT id="lst_domaincomputers" name="lst_domaincomputers" classid="clsid:BDD1F04B-858B-11D1-B16A-00C0F0283628"></OBJECT>
</select>
<br>Filter: <input type="text" size="40" id="txt_filterdomaincomputers" name="txt_filterdomaincomputers"> <input type="button" value="Save to CSV" name="btnSavelst_domaincomputers" onClick="vbs:SaveList('lst_domaincomputers')">
</fieldset>
<br><br>
</td>
<td align="left" valign="top" width="31%">
<fieldset id=tr_groupmembership>
<LEGEND><input type="checkbox" id="chk_groupmembership" name="chk_groupmembership" checked=True>Group Membership <span id="span_groupmembership"></span></LEGEND>
<OBJECT id="lst_groupnames" name="lst_groupnames" classid="clsid:BDD1F04B-858B-11D1-B16A-00C0F0283628"></OBJECT>
</select>
<br>Filter: <input type="text" size="40" id="txt_filtersecuritygroup" name="txt_filtersecuritygroup"> <input type="button" value="Save to CSV" name="btnSavelst_groupnames" onClick="vbs:SaveList('lst_groupnames')">
</fieldset>
<br><br>
<fieldset id=tr_dgmembership>
<LEGEND><input type="checkbox" id="chk_dgmembership" name="chk_dgmembership" checked=True>Distribution Group Membership <span id="span_dgmembership"></span></LEGEND>
<OBJECT id="lst_dgnames" name="lst_dgnames" classid="clsid:BDD1F04B-858B-11D1-B16A-00C0F0283628"></OBJECT>
</select>
<br>Filter: <input type="text" size="40" id="txt_filterdgmembership" name="txt_filterdgmembership"> <input type="button" value="Save to CSV" name="btnSavelst_dgnames" onClick="vbs:SaveList('lst_dgnames')">
</fieldset>
<br><br>
<fieldset id=tr_managerlist>
<LEGEND><input type="checkbox" id="chk_managerlist" name="chk_managerlist" checked=True>Manager <span id="span_managerlist"></span></LEGEND>
<select size="8" id="lst_managerlist" name="lst_managerlist" onDblClick="vbs:Submit_Form('ManagerList')">
</select>
<br>Filter: <input type="text" size="40" id="txt_filtermanagerlist" name="txt_filtermanagerlist">
</fieldset>
<br><br>
<fieldset id=tr_subordinates>
<LEGEND><input type="checkbox" id="chk_subordinates" name="chk_subordinates" checked=True>Subordinates <span id="span_subordinates"></span></LEGEND>
<select size="8" id="lst_subordinates" name="lst_subordinates" onDblClick="vbs:Submit_Form('Subordinate')">
</select>
</fieldset>
</td>
</tr>
</table>
</body>
ASKER
This is yet another excellent help... The save as is of great use to me... Thank U...
Can i have the same for Managers also please... Which gets the managers only and another button that gets the managers and the users who report to him.
So i know how many users and who report to each manager in one go...
I am just in the process of sending out each manager to confirm the subordinates in the AD are correct as per his records...
Can i have the same for Managers also please... Which gets the managers only and another button that gets the managers and the users who report to him.
So i know how many users and who report to each manager in one go...
I am just in the process of sending out each manager to confirm the subordinates in the AD are correct as per his records...
ASKER
This is yet another excellent help... The save as is of great use to me... Thank U...
Can i have the same for Managers also please... Which gets the managers only and another button that gets the managers and the users who report to him.
So i know how many users and who report to each manager in one go...
I am just in the process of sending out each manager to confirm the subordinates in the AD are correct as per his records...
Can i have the same for Managers also please... Which gets the managers only and another button that gets the managers and the users who report to him.
So i know how many users and who report to each manager in one go...
I am just in the process of sending out each manager to confirm the subordinates in the AD are correct as per his records...
ASKER
Hi rejoinder... See if you can add this feature which i mentioned above in this question
https://www.experts-exchange.com/questions/23838106/Script-that-can-query-each-manager-and-get-his-employer-names-and-description-from-AD.html
Can i have the same for Managers also please... Which gets the managers only and another button that gets the managers and the users who report to him.
So i know how many users and who report to each manager in one go...
I am just in the process of sending out each manager to confirm the subordinates in the AD are correct as per his records...
https://www.experts-exchange.com/questions/23838106/Script-that-can-query-each-manager-and-get-his-employer-names-and-description-from-AD.html
Can i have the same for Managers also please... Which gets the managers only and another button that gets the managers and the users who report to him.
So i know how many users and who report to each manager in one go...
I am just in the process of sending out each manager to confirm the subordinates in the AD are correct as per his records...
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
This code includes the manager and employee report. From the menu bar - Reports, Manager and Employees.
<head>
<title>User Information</title>
<HTA:APPLICATION
APPLICATIONNAME="User Information"
BORDER="thin"
SCROLL="yes"
SINGLEINSTANCE="yes"
WINDOWSTATE="MAXIMIZE"
ID="oHTA"
>
<APPLICATION:HTA>
</head>
<script language="VBScript">
Const adVarChar = 200
Const VarCharMaxCharacters = 255
Const adFldIsNullable = 32
'http://www.experts-exchange.com/Programming/Languages/Q_23807915.html
Dim strEmailBCC
Dim strEmailServer
Dim arrSubjectText
Dim arrDomainNames
strEmailBCC = "" 'Enter the BCC field as "Your Name <youremail@yourdomain.com>"
strEmailServer = "MAILSERVER" 'Exchange server name
arrSubjectText = array("This is subject text #1","This is subject text #2","This is subject text #3","This is subject text #4","This is subject text #5","This is subject text #6","This is subject text #7","This is subject text #8")
arrToSpecial = array("","","","","","","","") 'Fill in the names (to email) so as to match with the subject lines above. Seperate names with a ; eg. "john Doe;Jane Doe"
arrCCSpecial = array("","","","","","","","") 'Fill in the names (to email) so as to match with the subject lines above. Seperate names with a ; eg. "john Doe;Jane Doe"
arrBodySpecial = array("Enter text here","Enter text here","Enter text here","Enter text here","Enter text here","Enter text here","Enter text here","Enter text here") 'Fill in the body text which will match the order the subject lines above.
arrCheckBoxSpecial = array("Default","Default","Default","Default","Default","Default","Default","Default") 'Use the checkbox profile name to have the script match up the subject line to the checkbox profile you have stored.
strEmailFrom = "" 'Leave Blank if the HTA should determine email address automatically
'Uncomment the next line to input your own domain names
'arrDomainNames = array("DOMAIN","DC=subdomain1,DC=domain,DC=com")
boolAllowPing = False 'Set to true to allow the interface to ping computers.
boolLookupLastLogin = False 'Set to true to allow the interface to query last logons
boolTableReports = False 'Set to true to allow the interface to use table format reports
Dim arrRows
Dim strEmailFrom
Dim strEmailTo
Dim strEmailCC
Dim DataList
Dim globalstrSearchField
Dim globalstrSearchBtnPush
Dim FileName
Dim fModif
Dim LastChildMenu
Dim LastMenu
Dim globalstrQueryBuilder
if NOT IsArray(arrDomainNames) then
GetDomainNames
End If
If strEmailFrom = "" Then
strEmailFrom = mid(GetEmailAddresses(GetUsersEmailAddress),1,len(GetEmailAddresses(GetUsersEmailAddress))-1)
strEmailFrom = GetUsersEmailAddress & " <" & strEmailFrom & ">" 'Getting email address from logged on user
End if
strEmailTo = GetUsersEmailAddress 'Get user name of logged on user so there is a default value when launched
strEmailCC = ""
DisplayTitle
Set LastChildMenu = Nothing
Set LastMenu = Nothing
Set oShell = CreateObject("WScript.Shell")
fTemp = oShell.ExpandEnvironmentStrings("%TEMP%")
fAppData = oShell.ExpandEnvironmentStrings("%APPDATA%")
Set MailboxList = CreateObject("ADOR.Recordset")
MailboxList.Fields.Append "legacyExchangeDN", adVarChar, VarCharMaxCharacters
MailboxList.Fields.Append "mailboxsize", adVarChar, VarCharMaxCharacters
MailboxList.Open
Set GroupMembershipDB = CreateObject("ADOR.Recordset")
GroupMembershipDB.Fields.Append "SAMAccountName", adVarChar, VarCharMaxCharacters, adFldIsNullable
GroupMembershipDB.Fields.Append "PrimaryGroupToken", adVarChar, VarCharMaxCharacters, adFldIsNullable
GroupMembershipDB.Fields.Append "DistinguishedName", adVarChar, VarCharMaxCharacters, adFldIsNullable
GroupMembershipDB.Fields.Append "SAMAccountType", adVarChar, VarCharMaxCharacters, adFldIsNullable
GroupMembershipDB.Fields.Append "MemberDistinguishedName", adVarChar, VarCharMaxCharacters, adFldIsNullable
GroupMembershipDB.Open
Set DomainComputersDB = CreateObject("ADOR.Recordset")
DomainComputersDB.Fields.Append "CN", adVarChar, VarCharMaxCharacters, adFldIsNullable
DomainComputersDB.Fields.Append "DistinguishedName", adVarChar, VarCharMaxCharacters, adFldIsNullable
DomainComputersDB.Open
Set ManagerListDB = CreateObject("ADOR.Recordset")
ManagerListDB.Fields.Append "EmployeeDN", adVarChar, VarCharMaxCharacters, adFldIsNullable
ManagerListDB.Fields.Append "ManagerDN", adVarChar, VarCharMaxCharacters, adFldIsNullable
ManagerListDB.Open
set dicGroupNumbers = CreateObject("Scripting.Dictionary")
set dicManagerList = CreateObject("Scripting.Dictionary")
Sub GetDomainNames
set objRootDSE = GetObject("LDAP://RootDSE")
strBase = "<LDAP://cn=Partitions," & objRootDSE.Get("ConfigurationNamingContext") & ">;"
strFilter = "(&(objectcategory=crossRef)(systemFlags=3));"
strAttrs = "name,trustParent,nCName,dnsRoot,distinguishedName;"
strScope = "onelevel"
set objConn = CreateObject("ADODB.Connection")
objConn.Provider = "ADsDSOObject"
objConn.Open "Active Directory Provider"
set objRS = objConn.Execute(strBase & strFilter & strAttrs & strScope)
objRS.MoveFirst
set arrDomainNames = CreateObject("Scripting.Dictionary")
set dicDomainHierarchy = CreateObject("Scripting.Dictionary")
set dicDomainRoot = CreateObject("Scripting.Dictionary")
while not objRS.EOF
dicDomainRoot.Add objRS.Fields("name").Value, objRS.Fields("nCName").Value
if objRS.Fields("trustParent").Value <> "" then
arrDomainNames.Add objRS.Fields("name").Value, 0
set objDomainParent = GetObject("LDAP://" & objRS.Fields("trustParent").Value)
dicDomainHierarchy.Add objRS.Fields("name").Value,objDomainParent.Get("name")
else
arrDomainNames.Add objRS.Fields("name").Value, 1
end if
objRS.MoveNext
wend
for each strDomain in arrDomainNames
'msgbox strDomain
next
End Sub
Sub Window_OnLoad
'Uncomment the following lines to hide them from the GUI
'tr_seatno.classname="HideFromGUI"
'tr_replacementseatno.classname="HideFromGUI"
'tr_building.classname="HideFromGUI"
'tr_extensionno.classname="HideFromGUI"
'tr_empid.classname="HideFromGUI"
'tr_department.classname="HideFromGUI"
'tr_designation.classname="HideFromGUI"
'tr_name.classname="HideFromGUI"
'tr_loginname.classname="HideFromGUI"
'tr_email.classname="HideFromGUI"
'tr_mailboxsize.classname="HideFromGUI"
'tr_mailboxstore.classname="HideFromGUI"
'tr_mobileno.classname="HideFromGUI"
'tr_company.classname="HideFromGUI"
'tr_address.classname="HideFromGUI"
'tr_city.classname="HideFromGUI"
'tr_state.classname="HideFromGUI"
'tr_zipcode.classname="HideFromGUI"
'tr_country.classname="HideFromGUI"
'tr_homephone.classname="HideFromGUI"
'tr_manager.classname="HideFromGUI"
'tr_whencreated.classname="HideFromGUI"
'tr_oupathuser.classname="HideFromGUI"
'tr_lastlogintimestamp.classname="HideFromGui"
'tr_notes.classname="HideFromGUI"
'tr_computerserialno.classname="HideFromGUI"
'tr_replacedmachine.classname="HideFromGUI"
'tr_replacedcomputerserialno.classname="HideFromGUI"
'tr_oupathcomputer.classname="HideFromGUI"
'tr_computeros.classname="HideFromGUI"
'tr_computerdescription.classname="HideFromGUI"
'tr_computercreated.classname="HideFromGUI"
'tr_groupmembership.classname="HideFromGUI"
'tr_dgmembership.classname="HideFromGUI"
'tr_managerlist.classname="HideFromGUI"
'tr_subordinates.classname="HideFromGUI"
'tr_domaincomputers.classname="HideFromGUI"
TestToSeeWhatLinesAreHidden
Set objlst_groupnames = document.getElementById( "lst_groupnames" )
If objlst_groupnames Is Nothing Then
MsgBox "A problem was encountered while creating the listview." & vbCRLF & "Please see your administrator."
Else
With objlst_groupnames
.View = 3
.Width = 360
.Height = 140
.SortKey = 0
.Arrange = 0
.LabelEdit = 1
.SortOrder = 0
.Sorted = 1
.MultiSelect = 0
.LabelWrap = -1
.HideSelection = -1
.HideColumnHeaders = 0
.OLEDragMode = 0
.OLEDropMode = 0
.Checkboxes = 0
.FlatScrollBar = 0
.FullRowSelect = 1
.GridLines = 0
.HotTracking = 0
.HoverSelection = 0
.PictureAlignment = 0
.TextBackground = 0
.ForeColor = -2147483640
.BackColor = -2147483643
.BorderStyle = 1
.Appearance = 1
.MousePointer = 0
.Enabled = 1
.ColumnHeaders.Clear
.ColumnHeaders.Add , , "Group Name", 150
.ColumnHeaders.Add , , "Users", 50
.ColumnHeaders.Add , , "Type", 50
.ColumnHeaders.Add , , "Distinguished Name", 100
.ColumnHeaders.Add , , "Primary ID", 50
.ListItems.Clear
End With
End If
Set objlst_dgnames = document.getElementById( "lst_dgnames" )
If objlst_dgnames Is Nothing Then
MsgBox "A problem was encountered while creating the listview." & vbCRLF & "Please see your administrator."
Else
With objlst_dgnames
.View = 3
.Width = 360
.Height = 140
.SortKey = 0
.Arrange = 0
.LabelEdit = 1
.SortOrder = 0
.Sorted = 1
.MultiSelect = 0
.LabelWrap = -1
.HideSelection = -1
.HideColumnHeaders = 0
.OLEDragMode = 0
.OLEDropMode = 0
.Checkboxes = 0
.FlatScrollBar = 0
.FullRowSelect = 1
.GridLines = 0
.HotTracking = 0
.HoverSelection = 0
.PictureAlignment = 0
.TextBackground = 0
.ForeColor = -2147483640
.BackColor = -2147483643
.BorderStyle = 1
.Appearance = 1
.MousePointer = 0
.Enabled = 1
.ColumnHeaders.Clear
.ColumnHeaders.Add , , "Group Name", 150
.ColumnHeaders.Add , , "Users", 50
.ColumnHeaders.Add , , "Type", 50
.ColumnHeaders.Add , , "Distinguished Name", 100
.ColumnHeaders.Add , , "Primary ID", 50
.ListItems.Clear
End With
End If
Set objlst_domaincomputers = document.getElementById( "lst_domaincomputers" )
If objlst_domaincomputers Is Nothing Then
MsgBox "A problem was encountered while creating the listview." & vbCRLF & "Please see your administrator."
Else
With objlst_domaincomputers
.View = 3
.Width = 360
.Height = 140
.SortKey = 0
.Arrange = 0
.LabelEdit = 1
.SortOrder = 0
.Sorted = 1
.MultiSelect = 0
.LabelWrap = -1
.HideSelection = -1
.HideColumnHeaders = 0
.OLEDragMode = 0
.OLEDropMode = 0
.Checkboxes = 0
.FlatScrollBar = 0
.FullRowSelect = 1
.GridLines = 0
.HotTracking = 0
.HoverSelection = 0
.PictureAlignment = 0
.TextBackground = 0
.ForeColor = -2147483640
.BackColor = -2147483643
.BorderStyle = 1
.Appearance = 1
.MousePointer = 0
.Enabled = 1
.ColumnHeaders.Clear
.ColumnHeaders.Add , , "Computer", 150
.ColumnHeaders.Add , , "OU", 100
.ColumnHeaders.Add , , "Distinguished Name", 185
.ListItems.Clear
End With
End If
Set objlst_managerlist = document.getElementById( "lst_managerlist" )
If objlst_managerlist Is Nothing Then
MsgBox "A problem was encountered while creating the listview." & vbCRLF & "Please see your administrator."
Else
With objlst_managerlist
.View = 3
.Width = 360
.Height = 140
.SortKey = 0
.Arrange = 0
.LabelEdit = 1
.SortOrder = 0
.Sorted = 1
.MultiSelect = 0
.LabelWrap = -1
.HideSelection = -1
.HideColumnHeaders = 0
.OLEDragMode = 0
.OLEDropMode = 0
.Checkboxes = 0
.FlatScrollBar = 0
.FullRowSelect = 1
.GridLines = 0
.HotTracking = 0
.HoverSelection = 0
.PictureAlignment = 0
.TextBackground = 0
.ForeColor = -2147483640
.BackColor = -2147483643
.BorderStyle = 1
.Appearance = 1
.MousePointer = 0
.Enabled = 1
.ColumnHeaders.Clear
.ColumnHeaders.Add , , "Manager", 150
.ColumnHeaders.Add , , "Subordinates", 100
.ColumnHeaders.Add , , "Distinguished Name", 185
.ListItems.Clear
End With
End If
Set objlst_subordinates = document.getElementById( "lst_subordinates" )
If objlst_subordinates Is Nothing Then
MsgBox "A problem was encountered while creating the listview." & vbCRLF & "Please see your administrator."
Else
With objlst_subordinates
.View = 3
.Width = 360
.Height = 140
.SortKey = 0
.Arrange = 0
.LabelEdit = 1
.SortOrder = 0
.Sorted = 1
.MultiSelect = 0
.LabelWrap = -1
.HideSelection = -1
.HideColumnHeaders = 0
.OLEDragMode = 0
.OLEDropMode = 0
.Checkboxes = 0
.FlatScrollBar = 0
.FullRowSelect = 1
.GridLines = 0
.HotTracking = 0
.HoverSelection = 0
.PictureAlignment = 0
.TextBackground = 0
.ForeColor = -2147483640
.BackColor = -2147483643
.BorderStyle = 1
.Appearance = 1
.MousePointer = 0
.Enabled = 1
.ColumnHeaders.Clear
.ColumnHeaders.Add , , "Employee", 150
.ColumnHeaders.Add , , "Subordinates", 100
.ColumnHeaders.Add , , "Distinguished Name", 185
.ListItems.Clear
End With
End If
btnFirstEvent.Disabled = True
btnPreviousEvent.Disabled = True
btnNextEvent.Disabled = True
btnLastEvent.Disabled = True
btnEmailThisRecord.Disabled = True
btnEMailAllRecords.Disabled = True
btnEmailAsAttachment.Disabled = True
txt_EmailTo.Value = strEmailTo
btnFirstEvent.Style.Visibility = "Hidden"
btnPreviousEvent.Style.Visibility = "Hidden"
btnNextEvent.Style.Visibility = "Hidden"
btnLastEvent.Style.Visibility = "Hidden"
btnEmailThisRecord.Style.Visibility = "Hidden"
btnEMailAllRecords.Style.Visibility = "Hidden"
btnEmailAsAttachment.Style.Visibility = "Hidden"
FillGroupList
FillManagerList
FillSubjectList
FillDomainComputers
GetChkProfiles
GetMailboxDetails
chk_TableReports.Checked = boolTableReports
chk_LookupLastLogin.Checked = boolLookupLastLogin
chk_AllowPings.Checked = boolAllowPing
txt_EmailSubject_OnChange
End Sub
Sub TestToSeeWhatLinesAreHidden
'Test to see what lines are hidden and uncheck the boxes
if tr_seatno.classname="HideFromGUI" then chk_seatno.Checked = False
if tr_replacementseatno.classname="HideFromGUI" then chk_replacementseatno.Checked = False
if tr_building.classname="HideFromGUI" then chk_building.Checked = False
if tr_extensionno.classname="HideFromGUI" then chk_extensionno.Checked = False
if tr_empid.classname="HideFromGUI" then chk_empid.Checked = False
if tr_department.classname="HideFromGUI" then chk_department.Checked = False
if tr_designation.classname="HideFromGUI" then chk_designation.Checked = False
if tr_name.classname="HideFromGUI" then chk_name.Checked = False
if tr_loginname.classname="HideFromGUI" then chk_loginname.Checked = False
if tr_email.classname="HideFromGUI" then chk_email.Checked = False
if tr_mailboxsize.classname="HideFromGUI" then chk_mailboxsize.Checked = False
if tr_mailboxstore.classname="HideFromGUI" then chk_mailboxstore.Checked = False
if tr_mobileno.classname="HideFromGUI" then chk_mobileno.Checked = False
if tr_company.classname="HideFromGUI" then chk_company.Checked = False
if tr_address.classname="HideFromGUI" then chk_address.Checked = False
if tr_city.classname="HideFromGUI" then chk_city.Checked = False
if tr_state.classname="HideFromGUI" then chk_state.Checked = False
if tr_zipcode.classname="HideFromGUI" then chk_zipcode.Checked = False
if tr_country.classname="HideFromGUI" then chk_country.Checked = False
if tr_homephone.classname="HideFromGUI" then chk_homephone.Checked = False
if tr_manager.classname="HideFromGUI" then chk_manager.Checked = False
if tr_whencreated.classname="HideFromGUI" then chk_whencreated.Checked = False
if tr_oupathuser.classname="HideFromGUI" then chk_oupathuser.Checked = False
if tr_lastlogintimestamp.classname="HideFromGUI" then chk_lastlogintimestamp.Checked = False
if tr_notes.classname="HideFromGUI" then chk_notes.Checked = False
if tr_computerserialno.classname="HideFromGUI" then chk_computerserialno.Checked = False
if tr_replacedmachine.classname="HideFromGUI" then chk_replacedmachine.Checked = False
if tr_replacedcomputerserialno.classname="HideFromGUI" then chk_replacedcomputerserialno.Checked = False
if tr_oupathcomputer.classname="HideFromGUI" then chk_oupathcomputer.Checked = False
if tr_computeros.classname="HideFromGUI" then chk_computeros.Checked = False
if tr_computerdescription.classname="HideFromGUI" then chk_computerdescription.Checked = False
if tr_computercreated.classname="HideFromGUI" then chk_computercreated.Checked = False
if tr_groupmembership.classname="HideFromGUI" then chk_groupmembership.Checked = False
if tr_dgmembership.classname="HideFromGUI" then chk_dgmembership.Checked = False
if tr_managerlist.classname="HideFromGUI" then chk_managerlist.Checked = False
if tr_subordinates.classname="HideFromGUI" then chk_subordinates.Checked = False
End sub
Sub Clear_Form(resetGroupLists)
txt_seatno.Value = ""
txt_seatno.style.backgroundColor="#FFFFFF"
txt_seatno.Disabled = False
txt_replacementseatno.Value = ""
txt_replacementseatno.style.backgroundColor="#FFFFFF"
txt_replacementseatno.Disabled = False
txt_building.Value = ""
txt_building.style.backgroundColor="#FFFFFF"
txt_building.Disabled = False
txt_extensionno.Value = ""
txt_extensionno.style.backgroundColor="#FFFFFF"
txt_extensionno.Disabled = False
txt_empid.Value = ""
txt_empid.style.backgroundColor="#FFFFFF"
txt_empid.Disabled = False
txt_department.Value = ""
txt_department.style.backgroundColor="#FFFFFF"
txt_department.Disabled = False
txt_designation.Value = ""
txt_designation.style.backgroundColor="#FFFFFF"
txt_designation.Disabled = False
txt_name.Value = ""
txt_name.style.backgroundColor="#FFFFFF"
txt_name.Disabled = False
txt_loginname.Value = ""
txt_loginname.style.backgroundColor="#FFFFFF"
txt_loginname.Disabled = False
txt_email.Value = ""
txt_email.style.backgroundColor="#FFFFFF"
txt_email.Disabled = False
txt_mailboxsize.Value = ""
txt_mailboxsize.style.backgroundColor="#FFFFFF"
txt_mailboxsize.Disabled = False
txt_mailboxstore.Value = ""
txt_mailboxstore.style.backgroundColor="#FFFFFF"
txt_mailboxstore.Disabled = False
txt_notes.Value = ""
txt_notes.style.backgroundColor="#FFFFFF"
txt_notes.Disabled = False
txt_computerserialno.Value = ""
txt_computerserialno.style.backgroundColor="#FFFFFF"
txt_computerserialno.Disabled = False
txt_replacedmachine.Value = ""
txt_replacedmachine.Disabled = False
txt_replacedmachine.style.backgroundcolor="#FFFFFF"
txt_replacedcomputerserialno.value = ""
txt_replacedcomputerserialno.Disabled = False
txt_replacedcomputerserialno.Style.backgroundcolor="#FFFFFF"
txt_oupathcomputer.Value = ""
txt_oupathcomputer.style.backgroundColor="#FFFFFF"
txt_oupathcomputer.Disabled = False
txt_computeros.Value = ""
txt_computeros.Style.backgroundColor="#FFFFFF"
txt_computeros.Disabled = False
txt_computerservicepack.Value = ""
txt_computerservicepack.Style.backgroundColor="#FFFFFF"
txt_computerservicepack.Disabled = False
txt_computercreated.Value = ""
txt_computercreated.Style.backgroundColor="#FFFFFF"
txt_computercreated.Disabled = False
txt_computerdescription.Value = ""
txt_computerdescription.Style.backgroundColor="#FFFFFF"
txt_computerdescription.Disabled = False
txt_mobileno.Value = ""
txt_mobileno.style.backgroundColor="#FFFFFF"
txt_mobileno.Disabled = False
txt_company.Value = ""
txt_company.style.backgroundColor="#FFFFFF"
txt_company.Disabled = False
txt_address.Value = ""
txt_address.style.backgroundColor="#FFFFFF"
txt_address.Disabled = False
txt_city.Value = ""
txt_city.style.backgroundColor="#FFFFFF"
txt_city.Disabled = False
txt_state.Value = ""
txt_state.style.backgroundColor="#FFFFFF"
txt_state.Disabled = False
txt_zipcode.Value = ""
txt_zipcode.style.backgroundColor="#FFFFFF"
txt_zipcode.Disabled = False
txt_country.Value = ""
txt_country.style.backgroundColor="#FFFFFF"
txt_country.Disabled = False
txt_homephone.Value = ""
txt_homephone.style.backgroundColor="#FFFFFF"
txt_homephone.Disabled = False
txt_manager.Value = ""
txt_manager.style.backgroundColor="#FFFFFF"
txt_manager.Disabled = False
txt_managerseen.Value = ""
txt_managerseen.style.backgroundColor="#FFFFFF"
txt_managerseen.Disabled = False
txt_whencreated.Value = ""
txt_whencreated.style.backgroundColor="#FFFFFF"
txt_whencreated.Disabled = False
txt_oupathuser.Value = ""
txt_oupathuser.style.backgroundColor="#FFFFFF"
txt_oupathuser.Disabled = False
txt_lastlogintimestamp.Value = ""
txt_lastlogintimestamp.style.backgroundcolor="#FFFFFF"
txt_lastlogintimestamp.Disabled = False
txt_FilterSecurityGroup.Value = ""
txt_FilterSecurityGroup.style.backgroundcolor="#FFFFFF"
txt_FilterSecurityGroup.Disabled = False
txt_filterdgmembership.Value = ""
txt_filterdgmembership.style.backgroundcolor="#FFFFFF"
txt_filterdgmembership.Disabled = False
txt_filtermanagerlist.Value = ""
txt_filtermanagerlist.style.backgroundcolor="#FFFFFF"
txt_filtermanagerlist.Disabled = False
txt_filterdomaincomputers.Value = ""
txt_filterdomaincomputers.style.backgroundcolor="#FFFFFF"
txt_filterdomaincomputers.Disabled = False
btnFirstEvent.Style.Visibility = "Hidden"
btnPreviousEvent.Style.Visibility = "Hidden"
btnNextEvent.Style.Visibility = "Hidden"
btnLastEvent.Style.Visibility = "Hidden"
btnEmailThisRecord.Style.Visibility = "Hidden"
btnEMailAllRecords.Style.Visibility = "Hidden"
btnEmailAsAttachment.Style.Visibility = "Hidden"
span_currentrecord.InnerHTML = "0"
span_totalrecords.InnerHTML = "0"
span_computerip.InnerHTML = ""
span_computerOnline.InnerHTML = ""
span_enabled.InnerHTML = ""
span_userorcontact.InnerHTML = ""
if lcase(resetGroupLists) = lcase("resetGroupLists") then
GroupMembershipDB.Filter = ""
GroupMembershipDB.MoveFirst
Do While Not GroupMembershipDB.EOF
GroupMembershipDB.Delete
GroupMembershipDB.MoveNext
Loop
dicGroupNumbers.RemoveAll
FillGroupList
populatedomaincomputers
populatemanagerlist
end if
End Sub
Sub Submit_Form(btnPush)
arrFields = Array(_
"txt_seatno", _
"txt_building", _
"txt_extensionno", _
"txt_empid", _
"txt_department", _
"txt_designation", _
"txt_name", _
"txt_loginname", _
"txt_email", _
"txt_notes", _
"txt_mobileno", _
"txt_company", _
"txt_address", _
"txt_city", _
"txt_state", _
"txt_zipcode", _
"txt_country", _
"txt_homephone", _
"txt_managerseen", _
"txt_oupathuser", _
"txt_computerserialno", _
"txt_whencreated", _
"txt_oupathcomputer", _
"txt_computeros", _
"txt_computercreated", _
"txt_filtersecuritygroup", _
"txt_filterdgmembership", _
"txt_filtermanagerlist", _
"txt_filterdomaincomputers" _
)
boolValid = False
For Each strField In arrFields
If Eval(strField & ".Disabled") = True Then
boolValid = True
End If
If Eval(strField & ".Disabled") = False Then
strCurrentField = strField
End If
Next
If boolValid = False Then strCurrentField = "INVALID"
Select Case strCurrentField
Case "txt_seatno"
If txt_seatno.Value = "" Then
strSearchField = "(info=*)"
Else
strSearchField = "(info=*" & txt_seatno.Value & "*)"
End If
Case "txt_building"
If txt_building.Value = "" Then
strSearchField = "(physicalDeliveryOfficeName=*)"
Else
strSearchField = "(physicalDeliveryOfficeName=*" & txt_building.Value & "*)"
End If
Case "txt_extensionno"
If txt_extensionno.Value = "" Then
strSearchField = "(telephoneNumber=*)"
Else
strSearchField = "(telephoneNumber=*" & txt_extensionno.Value & "*)"
End If
Case "txt_empid"
If txt_empid.Value = "" Then
strSearchField = "(description=*)"
Else
strSearchField = "(description=*" & txt_empid.Value & "*)"
End If
Case "txt_department"
If txt_department.Value = "" Then
strSearchField = "(department=*)"
Else
strSearchField = "(department=*" & txt_department.Value & "*)"
End If
Case "txt_designation"
If txt_designation.Value = "" Then
strSearchField = "(title=*)"
Else
strSearchField = "(title=*" & txt_designation.Value & "*)"
End If
Case "txt_name"
If txt_name.Value = "" Then
strSearchField = "(cn=*)"
Else
strSearchField = "(cn=*" & txt_name.Value & "*)"
End If
Case "txt_loginname"
If txt_loginname.Value = "" Then
strSearchField = "(samAccountName=*)"
Else
strSearchField = "(samAccountName=*" & txt_loginname.Value & "*)"
End If
Case "txt_email"
If txt_email.Value = "" Then
strSearchField = "(mail=*)"
Else
strSearchField = "(mail=*" & txt_email.Value & "*)"
End If
Case "txt_notes"
If txt_notes.Value = "" Then
strSearchField = "(info=*)"
Else
strSearchField = "(info=*" & txt_notes.Value & "*)"
btnPush = "Computer"
End If
Case "txt_mobileno"
If txt_mobileno.Value = "" Then
strSearchField = "(mobile=*)"
Else
strSearchField = "(mobile=*" & txt_mobileno.Value & "*)"
End If
Case "txt_company"
If txt_company.Value = "" Then
strSearchField = "(company=*)"
Else
strSearchField = "(company=*" & txt_company.Value & "*)"
End If
Case "txt_address"
If txt_address.Value = "" Then
strSearchField = "(streetAddress=*)"
Else
strSearchField = "(streetAddress=*" & txt_address.Value & "*)"
End If
Case "txt_city"
If txt_city.Value = "" Then
strSearchField = "(l=*)"
Else
strSearchField = "(l=*" & txt_city.Value & "*)"
End If
Case "txt_state"
If txt_state.Value = "" Then
strSearchField = "(st=*)"
Else
strSearchField = "(st=*" & txt_state.Value & "*)"
End If
Case "txt_zipcode"
If txt_zipcode.Value = "" Then
strSearchField = "(postalCode=*)"
Else
strSearchField = "(postalCode=*" & txt_zipcode.Value & "*)"
End If
Case "txt_country"
If txt_country.Value = "" Then
strSearchField = "(c=*)"
Else
strSearchField = "(c=*" & txt_country.Value & "*)"
End If
Case "txt_homephone"
If txt_homephone.Value = "" Then
strSearchField = "(homePhone=*)"
Else
strSearchField = "(homePhone=*" & txt_homephone.Value & "*)"
End If
Case "txt_managerseen"
If txt_managerseen.Value = "" Then
strSearchField = "(manager=*)"
Else
strSearchField = GetManagerDN(txt_managerseen.Value)
End If
Case "txt_oupathuser"
If txt_oupathuser.Value <> "" Then
strSearchField = GetOUMembers(txt_oupathuser.Value)
End If
Case "txt_whencreated"
If txt_whencreated.Value = "" Then
strSearchField = "(whenCreated=*)"
Else
if NOT IsDate(txt_whencreated.Value) then
msgbox "Invalid date - enter as dd/mm/yyyy"
strSearchField = "INVALID"
else
strWhenCreated = Year(txt_whencreated.Value) & Right("0" & Month(txt_whencreated.Value), 2) & Right("0" & Day(txt_whencreated.Value), 2)
strSearchField = "(whenCreated>=" & strWhenCreated & "000000.0Z)(whenCreated<=" & strWhenCreated & "235959.0Z)"
end if
End If
Case "txt_computerserialno"
If txt_notes.Value = "" Then
strSearchField = "(info=*)"
Else
strSearchField = "(info=*" & txt_computerserialno.Value & "*)"
End If
Case "txt_oupathcomputer"
If txt_oupathcomputer.Value = "" then
strSearchField = "INVALID"
else
strSearchField = GetComputersBasedOnOU(txt_oupathcomputer.Value)
end if
Case "txt_computeros"
If txt_computeros.Value = "" Then
strSearchField = "INVALID"
else
strSearchField = GetComputersForOSQuery(txt_computeros.Value)
End If
Case "txt_computercreated"
If txt_computercreated.Value = "" Then
strSearchField = "INVALID"
else
if NOT IsDate(txt_computercreated.Value) then
msgbox "Invalid date - enter as dd/mm/yyyy"
strSearchField = "INVALID"
else
strSearchField = GetComputersForDateCreatedQuery(txt_computercreated.Value)
End If
End If
Case "txt_filtersecuritygroup"
if lst_groupnames.ListItems.Count = 1 then
lst_groupnames.ListItems(1).Selected = True
btnPush = "Group"
else
strSearchField = "INVALID"
end if
Case "txt_filterdgmembership"
if lst_dgnames.ListItems.Count = 1 then
lst_dgnames.ListItems(1).Selected = True
btnPush = "DistributionGroup"
else
strSearchField = "INVALID"
end if
Case "txt_filtermanagerlist"
if lst_managerlist.ListItems.Count = 1 then
lst_managerlist.ListItems(1).Selected = True
btnPush = "ManagerList"
else
strSearchField = "INVALID"
end if
Case "txt_filterdomaincomputers"
if lst_domaincomputers.ListItems.Count = 1 then
lst_domaincomputers.ListItems(1).Selected = True
strSearchField = "(info=*" & lst_domaincomputers.SelectedItem.Text & "*)"
else
strSearchField = "INVALID"
end if
Case Else
strSearchField = "INVALID"
End Select
if btnPush = "Disabled" then
strSearchField = "(userAccountControl:1.2.840.113556.1.4.803:=2)"
end if
if btnPush = "Group" then
sMemberOf = lst_groupnames.SelectedItem.ListSubItems(3).Text
sprimaryGroupID = lst_groupnames.SelectedItem.ListSubItems(4).Text
strSearchField = "(|(memberOf=" & sMemberOf & ")(primaryGroupID=" & sprimaryGroupID & "))"
end if
if btnPush = "DistributionGroup" then
sMemberOf = lst_dgnames.SelectedItem.ListSubItems(3).Text
sprimaryGroupID = lst_dgnames.SelectedItem.ListSubItems(4).Text
strSearchField = "(|(memberOf=" & sMemberOf & ")(primaryGroupID=" & sprimaryGroupID & "))"
end if
if btnPush = "ManagerList" then
strSearchField = "(distinguishedname=" & lst_ManagerList.SelectedItem.ListSubItems(2).Text & ")"
end if
if btnPush = "Subordinate" then
strSearchField = "(distinguishedname=" & lst_Subordinates.SelectedItem.ListSubItems(2).Text & ")"
end if
if btnPush = "DisabledToday" then
strWhenChanged = Year(txt_whencreated.Value) & Right("0" & Month(txt_whencreated.Value), 2) & Right("0" & Day(txt_whencreated.Value), 2)
strSearchField = "(userAccountControl:1.2.840.113556.1.4.803:=2)(whenChanged>=" & strWhenChanged & "000000.0Z)(whenChanged<=" & strWhenChanged & "235959.0Z)"
end if
if btnPush = "FileOpen" then
strSearchField = globalStrSearchField
btnPush = globalStrSearchBtnPush
End if
boolLogonSearch = False
dmtDateToCompare = Date()
if InStr(btnPush,"Logon:") > 0 then
strSearchField = "(samAccountName=*)"
boolLogonSearch = True
intNumberOfDays = right(btnPush,Len(btnPush)-InStr(btnPush,":"))
dmtDateToCompare = Date() - intNumberOfDays
if NOT chk_LookupLastLogin.Checked then
chk_LookupLastLogin.Checked = True
boolLookupLastLogin = True
end if
end if
boolMailboxSizeSearch = False
if InStr(btnPush,"MailboxSize:") > 0 then
strSearchField = "(samAccountName=*)"
boolMailboxSizeSearch = True
intMailboxSizeToCompare = right(btnPush,Len(btnPush)-InStr(btnPush,":"))
end if
Clear_Form ""
If strSearchField <> "INVALID" Then
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
boolFoundRecords = False
for each strDomain in arrDomainNames
' Search entire Active Directory domain.
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(&(objectCategory=user)(objectCategory=contact)" & strSearchField & ")"
' Comma delimited list of attribute values to retrieve.
if boolLookupLastLogin then
strAttributes = "physicalDeliveryOfficeName,TelephoneNumber,description,Department,Title,cn,samAccountName,mail,Info,Mobile,company,streetAddress,l,st,postalCode,c,homePhone,manager,whenCreated,distinguishedName,userAccountControl,legacyExchangeDN,homeMDB,primaryGroupID,lastLogon"
else
strAttributes = "physicalDeliveryOfficeName,TelephoneNumber,description,Department,Title,cn,samAccountName,mail,Info,Mobile,company,streetAddress,l,st,postalCode,c,homePhone,manager,whenCreated,distinguishedName,userAccountControl,legacyExchangeDN,homeMDB,primaryGroupID"
end if
' Construct the LDAP syntax query.
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 100
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False
adoCommand.Properties("Sort On") = "cn"
' Run the query.
Set adoRecordset = adoCommand.Execute
' Enumerate the resulting recordset.
strDetails = ""
If Not adoRecordset.EOF Then
boolFoundRecords = True
Do Until adoRecordset.EOF
mailboxlist.filter = "legacyExchangeDN = '" & adoRecordset.Fields("legacyExchangeDN").Value & "'"
if NOT mailboxlist.EOF then
intMailboxSize = mailboxlist.fields.Item("mailboxsize")
else
intMailboxSize = "0"
End if
if boolLookupLastLogin then
if NOT IsNull(adoRecordset.Fields("lastLogon").Value) then
Set objLastLogon = adoRecordset.Fields("lastLogon").Value
intLastLogonTime = objLastLogon.HighPart * (2^32) + objLastLogon.LowPart
intLastLogonTime = intLastLogonTime / (60 * 10000000)
intLastLogonTime = intLastLogonTime / 1440
intLastLogonTime = intLastLogonTime + #1/1/1601#
if intLastLogonTime = #1/1/1601# then
intLastLogonTime = ""
end if
else
intLastLogonTime = ""
end if
else
intLastLogonTime = ""
end if
if NOT IsDate(intLastLogonTime) then
dmtDateToCompareTo = dmtDateToCompare
else
dmtDateToCompareTo = intLastLogonTime
end if
if (CDate(dmtDateToCompareTo) >= CDate(dmtDateToCompare)) AND boolLogonSearch then
'Do nothing
else
if (CInt(intMailboxSize) < CInt(intMailboxSizeToCompare)) AND boolMailboxSizeSearch then
'Do nothing
else
If strDetails <> "" Then strDetails = strDetails & "|TR|"
if adoRecordset.Fields("userAccountControl").Value AND 2 then
strEnabled = "Disabled"
else
strEnabled = "Enabled"
End If
strMachineName = ""
strBuilding = ""
strSerialNumber = ""
If IsNull(adoRecordset.Fields("Info").Value) = False Then
arrNotesField = Split(adoRecordset.Fields("Info").Value,vbCRLF)
for each strLine in arrNotesField
if InStr(UCase(strLine),"MACHINE NAME : ") then
strMachineName = trim(mid(strLine,15))
End if
if InStr(UCase(strLine),"LOCATION : ") then
strBuilding = trim(mid(strLine,11))
End if
if InStr(UCase(strLine),"SERIAL NO : ") then
strSerialNumber = trim(mid(strLine,12))
End if
next
strDetails = strDetails & replace(strBuilding,vbCRLF,"")
End If
strDetails = strDetails & "|TD|" & adoRecordset.Fields("physicalDeliveryOfficeName").Value &_
"|TD|" & adoRecordset.Fields("TelephoneNumber").Value
If IsNull(adoRecordset.Fields("Description").Value) = False Then
strDetails = strDetails & "|TD|" & Join(adoRecordset.Fields("description").Value)
Else
strDetails = strDetails & "|TD|"
End If
strDetails = strDetails & "|TD|" & adoRecordset.Fields("Department").Value &_
"|TD|" & adoRecordset.Fields("Title").Value &_
"|TD|" & Replace(adoRecordset.Fields("cn").Value, "CN=", "") &_
"|TD|" & adoRecordset.Fields("samAccountName").Value &_
"|TD|" & adoRecordset.Fields("mail").Value &_
"|TD|" & strMachineName &_
"|TD|" & adoRecordset.Fields("Mobile").Value &_
"|TD|" & adoRecordset.Fields("company").Value &_
"|TD|" & adoRecordset.Fields("streetAddress").Value &_
"|TD|" & adoRecordset.Fields("l").Value &_
"|TD|" & adoRecordset.Fields("st").Value &_
"|TD|" & adoRecordset.Fields("postalCode").Value &_
"|TD|" & adoRecordset.Fields("c").Value &_
"|TD|" & adoRecordset.Fields("homePhone").Value &_
"|TD|" & adoRecordset.Fields("manager").Value &_
"|TD|" & adoRecordset.Fields("whenCreated").Value &_
"|TD|" & adoRecordset.Fields("samAccountName").Value &_
"|TD|" & adoRecordset.Fields("distinguishedName").Value &_
"|TD|" & intLastLogonTime &_
"|TD|" & strSerialNumber &_
"|TD|" & UCASE(strEnabled) &_
"|TD|" & intMailboxSize &_
"|TD|" & GetMailboxStore(adoRecordset.Fields("homeMDB").Value) &_
"|TD|" & adoRecordset.Fields("primaryGroupID").Value
strDetails = replace(strDetails,vbCRLF,"")
end if
end if
adoRecordset.MoveNext
Loop
End If
next
if NOT boolFoundRecords then
if btnPush = "Computer" then
'No records found and was a computer search - display computer details anyway
arrTemp = GetComputerInfo(lst_domaincomputers.SelectedItem.Text)
if IsArray(arrTemp) then
txt_notes.Value = lst_domaincomputers.SelectedItem.Text
txt_oupathcomputer.value = GetOUPath(replace(arrTemp(0),"""",""))
txt_computeros.value = replace(arrTemp(1),"""","")
txt_computerservicepack.value = replace(arrTemp(2),"""","")
txt_computerdescription.value = replace(arrTemp(4),"""","")
txt_computercreated.value = replace(arrTemp(3),"""","")
else
txt_notes.Value = ""
txt_oupathcomputer.value = ""
txt_computeros.value = ""
txt_computerservicepack.value = ""
txt_computerdescription.value = ""
txt_computercreated.value = ""
MsgBox "No records were found"
End if
else
'No records found and was not a computer search
MsgBox "No records were found"
End if
span_currentrecord.InnerHTML = 0
span_totalrecords.InnerHTML = 0
else
arrRows = ""
arrRows = Split(strDetails, "|TR|")
If UBound(arrRows) < 0 Then
span_currentrecord.InnerHTML = 0
span_totalrecords.InnerHTML = 0
Else
span_currentrecord.InnerHTML = 1
Get_Event
span_totalrecords.InnerHTML = UBound(arrRows)+1
End If
End if
' Clean up.
adoRecordset.Close
Set adoRecordset = Nothing
adoConnection.Close
If strDetails = "" Then
btnFirstEvent.Disabled = True
btnPreviousEvent.Disabled = True
btnNextEvent.Disabled = True
btnLastEvent.Disabled = True
btnEmailThisRecord.Disabled = True
btnEMailAllRecords.Disabled = True
btnEmailAsAttachment.Disabled = True
btnFirstEvent.Style.Visibility = "Hidden"
btnPreviousEvent.Style.Visibility = "Hidden"
btnNextEvent.Style.Visibility = "Hidden"
btnLastEvent.Style.Visibility = "Hidden"
btnEmailThisRecord.Style.Visibility = "Hidden"
btnEMailAllRecords.Style.Visibility = "Hidden"
btnEmailAsAttachment.Style.Visibility = "Hidden"
ElseIf UBound(arrRows) = 0 Then
btnFirstEvent.Disabled = True
btnPreviousEvent.Disabled = True
btnNextEvent.Disabled = True
btnLastEvent.Disabled = True
btnEmailThisRecord.Disabled = False
btnEMailAllRecords.Disabled = False
btnEmailAsAttachment.Disabled = False
btnFirstEvent.Style.Visibility = "Hidden"
btnPreviousEvent.Style.Visibility = "Hidden"
btnNextEvent.Style.Visibility = "Hidden"
btnLastEvent.Style.Visibility = "Hidden"
btnEmailThisRecord.Style.Visibility = "Visible"
btnEMailAllRecords.Style.Visibility = "Visible"
btnEmailAsAttachment.Style.Visibility = "Visible"
Else
btnFirstEvent.Disabled = False
btnPreviousEvent.Disabled = False
btnNextEvent.Disabled = False
btnLastEvent.Disabled = False
btnEmailThisRecord.Disabled = False
btnEMailAllRecords.Disabled = False
btnEmailAsAttachment.Disabled = False
btnFirstEvent.Style.Visibility = "Visible"
btnPreviousEvent.Style.Visibility = "Visible"
btnNextEvent.Style.Visibility = "Visible"
btnLastEvent.Style.Visibility = "Visible"
btnEmailThisRecord.Style.Visibility = "Visible"
btnEMailAllRecords.Style.Visibility = "Visible"
btnEmailAsAttachment.Style.Visibility = "Visible"
End If
globalStrSearchBtnPush = BtnPush
globalstrSearchField = strSearchField
if chk_qbrecorder.Checked then
AddToQueryBuilder
end if
Else
MsgBox "Please type a search request into one of the fields, then click Submit."
End If
if InStr(Join(arrFields),strCurrentField) then
if strSearchField <> "INVALID" then
execute(strCurrentField & ".focus")
execute(strCurrentField & ".select()")
end if
end if
End Sub
Sub Get_Event
arrData = Split(arrRows(span_currentrecord.InnerHTML - 1), "|TD|")
txt_seatno.Value = arrData(0)
txt_building.Value = arrData(1)
txt_extensionno.Value = arrData(2)
txt_empid.Value = arrData(3)
txt_department.Value = arrData(4)
txt_designation.Value = arrData(5)
txt_name.Value = arrData(6)
txt_loginname.Value = arrData(7)
txt_email.Value = arrData(8)
txt_mailboxsize.Value = arrData(25)
txt_mailboxstore.Value = arrData(26)
txt_notes.Value = arrData(9)
if boolAllowPing then PingComputer arrData(9)
txt_computerserialno.Value = arrData(23)
arrTemp = GetComputerInfo(arrData(9))
if IsArray(arrTemp) then
txt_oupathcomputer.value = GetOUPath(replace(arrTemp(0),"""",""))
txt_computeros.value = replace(arrTemp(1),"""","")
txt_computerservicepack.value = replace(arrTemp(2),"""","")
txt_computerdescription.value = replace(arrTemp(4),"""","")
txt_computercreated.value = replace(arrTemp(3),"""","")
else
txt_oupathcomputer.value = ""
txt_computeros.value = ""
txt_computerservicepack.value = ""
txt_computerdescription.value = ""
txt_computercreated.value = ""
End if
txt_mobileno.Value = arrData(10)
txt_company.Value = arrData(11)
txt_address.Value = arrData(12)
txt_city.Value = arrData(13)
txt_state.Value = arrData(14)
txt_zipcode.Value = arrData(15)
txt_country.Value = arrData(16)
txt_homephone.Value = arrData(17)
txt_manager.Value = arrData(18)
Set objlst_managerlist = document.getElementById( "lst_managerlist" )
objlst_managerlist.ListItems.Clear
span_managerlist.InnerHTML = "(0)"
if txt_manager.Value <> "" then
txt_managerseen.Value = mid(txt_manager.Value,4,instr(txt_manager.Value,",")-4)
Set objListItem = objlst_managerlist.ListItems.Add
objListItem.Text = mid(txt_manager.Value,4,instr(txt_manager.Value,",")-4)
objListItem.ListSubItems.Add.Text = int(dicManagerList.Item(txt_manager.Value))
objListItem.ListSubItems.Add.Text = txt_manager.Value
span_managerlist.InnerHTML = "(1)"
else
txt_managerseen.Value = txt_manager.Value
end if
txt_whencreated.Value = arrData(19)
txt_oupathuser.value = GetOUPath(arrData(21))
txt_lastlogintimestamp.value = arrData(22)
span_enabled.InnerHTML = arrData(24)
if txt_loginname.Value <> "" then
span_userorcontact.InnerHTML = "USER"
else
span_userorcontact.InnerHTML = "CONTACT"
end if
FillGroupMembershipList arrData(21), arrData(27)
End Sub
Sub First_Event
If IsArray(arrRows) = False Then
MsgBox "There are no records to display."
Else
If span_totalrecords.InnerHTML < 1 Then
MsgBox "There are no records to display"
ElseIf span_currentrecord.InnerHTML = 1 Then
MsgBox "You are already viewing the first record."
Else
span_currentrecord.InnerHTML = 1
Get_Event
End If
End If
End Sub
Sub Previous_Event
If IsArray(arrRows) = False Then
MsgBox "There are no records to display."
Else
If span_currentrecord.InnerHTML > 1 Then
span_currentrecord.InnerHTML = span_currentrecord.InnerHTML - 1
Get_Event
ElseIf span_currentrecord.InnerHTML = 1 Then
MsgBox "You are already viewing the first record."
Else
MsgBox "There are no records to display"
End If
End If
End Sub
Sub Next_Event
If IsArray(arrRows) = False Then
MsgBox "There are no records to display."
Else
If span_totalrecords.InnerHTML = 0 Then
MsgBox "There are no records for to display"
ElseIf span_currentrecord.InnerHTML = span_totalrecords.InnerHTML Then
MsgBox "You are already viewing the last record."
Else
span_currentrecord.InnerHTML = span_currentrecord.InnerHTML + 1
Get_Event
End If
End If
End Sub
Sub Last_Event
If IsArray(arrRows) = False Then
MsgBox "There are no records to display."
Else
If span_totalrecords.InnerHTML = 0 Then
MsgBox "There are no records to display"
ElseIf span_currentrecord.InnerHTML = span_totalrecords.InnerHTML Then
MsgBox "You are already viewing the last record."
Else
span_currentrecord.InnerHTML = span_totalrecords.InnerHTML
Get_Event
End If
End If
End Sub
Sub Detect_Search_Field(strCurrentField)
arrFields = Array(_
"txt_seatno", _
"txt_replacementseatno", _
"txt_building", _
"txt_extensionno", _
"txt_empid", _
"txt_department", _
"txt_designation", _
"txt_name", _
"txt_loginname", _
"txt_email", _
"txt_mailboxsize", _
"txt_mailboxstore", _
"txt_notes", _
"txt_computerserialno", _
"txt_replacedmachine", _
"txt_replacedcomputerserialno", _
"txt_oupathcomputer", _
"txt_computeros", _
"txt_computerservicepack", _
"txt_computerdescription", _
"txt_computercreated", _
"txt_mobileno", _
"txt_company", _
"txt_address", _
"txt_city", _
"txt_state", _
"txt_zipcode", _
"txt_country", _
"txt_homephone", _
"txt_managerseen", _
"txt_whencreated", _
"txt_oupathuser", _
"txt_lastlogintimestamp", _
"txt_filtersecuritygroup", _
"txt_filterdgmembership", _
"txt_filtermanagerlist", _
"txt_filterdomaincomputers" _
)
For Each strField In arrFields
If LCase(strField) <> LCase(strCurrentField) Then
Execute strField & ".style.backgroundColor=""#D3D3D3"""
Execute strField & ".Disabled = True"
End If
Next
End Sub
Function CreateHeaderRow(CSVorTABLE)
Dim arrHeader()
x = 0
if chk_seatno.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Seat No"""
x = x + 1
end if
if chk_building.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Building"""
x = x + 1
end if
if chk_extensionno.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Extension"""
x = x + 1
end if
if chk_empid.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Emp ID"""
x = x + 1
end if
if chk_department.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Department"""
x = x + 1
end if
if chk_designation.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Designation"""
x = x + 1
end if
if chk_name.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """User Name"""
x = x + 1
end if
if chk_loginname.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Login Name"""
x = x + 1
end if
if chk_email.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Email Address"""
x = x + 1
end if
if chk_mailboxsize.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Mailbox Size (MB)"""
x = x + 1
end if
if chk_mailboxstore.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Mailbox Store"""
x = x + 1
end if
if chk_notes.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Computer"""
x = x + 1
end if
if chk_computerserialno.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Serial No"""
x = x + 1
end if
if chk_oupathcomputer.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """OU Path - Computer"""
x = x + 1
end if
if chk_computeros.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Computer OS"""
x = x + 1
end if
if chk_computeros.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Service Pack"""
x = x + 1
end if
if chk_computerdescription.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Computer Description"""
x = x + 1
end if
if chk_computercreated.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Computer Account Created"""
x = x + 1
end if
if chk_mobileno.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Mobile"""
x = x + 1
end if
if chk_company.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Company"""
x = x + 1
end if
if chk_address.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Address"""
x = x + 1
end if
if chk_city.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """City"""
x = x + 1
end if
if chk_state.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """State"""
x = x + 1
end if
if chk_zipcode.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Zip Code"""
x = x + 1
end if
if chk_country.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Country"""
x = x + 1
end if
if chk_homephone.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Home Phone"""
x = x + 1
end if
if chk_manager.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Manager"""
x = x + 1
end if
if chk_subordinates.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Subordinates"""
x = x + 1
end if
if chk_whencreated.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Date Created"""
x = x + 1
end if
if chk_oupathuser.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """OU Path - User"""
x = x + 1
end if
if chk_lastlogintimestamp.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Last Logon"""
x = x + 1
end if
if chk_groupmembership.Checked then
ReDim Preserve arrHeader(x)
arrHeader(x) = """Group Membership"""
x = x + 1
end if
if CSVorTABLE <> "" then
strHeader = strHeader & "<tr>"
for n = 0 to UBound(arrHeader)-1
strHeader = strHeader & "<td valign=""top"" align=""left""><b>" & replace(arrHeader(n),"""","") & "</b></td>"
next
strHeader = strHeader & "</tr>" & vbCRLF
else
strHeader = Join(arrHeader,",")
end if
CreateHeaderRow = strHeader
End Function
Function PopulateTableForCSV(CSVorTABLE)
on error resume next
For intRow = LBound(arrRows) To UBound(arrRows)
arrData = Split(arrRows(intRow), "|TD|")
x = 0
if chk_seatno.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(0) & """"
x = x + 1
end if
if chk_building.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(1) & """"
x = x + 1
end if
if chk_extensionno.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(2) & """"
x = x + 1
end if
if chk_empid.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(3) & """"
x = x + 1
end if
if chk_department.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(4) & """"
x = x + 1
end if
if chk_designation.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(5) & """"
x = x + 1
end if
if chk_name.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(6) & """"
x = x + 1
end if
if chk_loginname.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(7) & """"
x = x + 1
end if
if chk_email.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(8) & """"
x = x + 1
end if
if chk_mailboxsize.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(25) & """"
x = x + 1
end if
if chk_mailboxstore.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(26) & """"
x = x + 1
end if
if chk_notes.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(9) & """"
x = x + 1
end if
if chk_computerserialno.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(23) & """"
x = x + 1
end if
arrTemp = GetComputerInfo(arrData(9))
if IsArray(arrTemp) then
if chk_oupathcomputer.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & GetOUPath(replace(arrTemp(0),"""","")) & """"
x = x + 1
end if
if chk_computeros.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & replace(arrTemp(1),"""","") & """"
x = x + 1
end if
if chk_computeros.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & replace(arrTemp(2),"""","") & """"
x = x + 1
end if
if chk_computerdescription.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & replace(arrTemp(4),"""","") & """"
x = x + 1
end if
if chk_computercreated.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & replace(arrTemp(3),"""","") & """"
x = x + 1
end if
else
if chk_oupathcomputer.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & """"
x = x + 1
end if
if chk_computeros.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & """"
x = x + 1
end if
if chk_computeros.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & """"
x = x + 1
end if
if chk_computerdescription.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & """"
x = x + 1
end if
if chk_computercreated.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & """"
x = x + 1
end if
end if
if chk_mobileno.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(10) & """"
x = x + 1
end if
if chk_company.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(11) & """"
x = x + 1
end if
if chk_address.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(12) & """"
x = x + 1
end if
if chk_city.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(13) & """"
x = x + 1
end if
if chk_state.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(14) & """"
x = x + 1
end if
if chk_zipcode.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(15) & """"
x = x + 1
end if
if chk_country.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(16) & """"
x = x + 1
end if
if chk_homephone.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(17) & """"
x = x + 1
end if
if chk_manager.Checked then
ReDim Preserve arrFileData(x)
if arrData(18) <> "" then
arrFileData(x) = """" & mid(arrData(18),4,instr(arrData(18),",")-4) & """"
else
arrFileData(x) = """" & """"
end if
x = x + 1
end if
if chk_subordinates.Checked then
ManagerListDB.Filter = "ManagerDN = '" & arrData(21) & "'"
ManagerListDB.MoveFirst
boolFoundFirst = False
str_subordinates = ""
Do Until ManagerListDB.EOF
strEmployeeDN = ManagerListDB.Fields.Item("EmployeeDN").Value
strEmployeeDN = mid(strEmployeeDN,4,instr(strEmployeeDN,",")-4)
if boolFoundFirst then
str_subordinates = str_subordinates & "; " & strEmployeeDN
else
boolFoundFirst = True
str_subordinates = str_subordinates & strEmployeeDN
end if
ManagerListDB.MoveNext
Loop
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & str_subordinates & """"
x = x + 1
end if
if chk_whencreated.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(19) & """"
x = x + 1
end if
if chk_oupathuser.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & GetOUPath(arrData(21)) & """"
x = x + 1
end if
if chk_lastlogintimestamp.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & arrData(22) & """"
x = x + 1
end if
if chk_groupmembership.Checked then
ReDim Preserve arrFileData(x)
arrFileData(x) = """" & ReportGroupMemberShipList(arrData(21), arrData(27)) & """"
x = x + 1
end if
if CSVorTABLE <> "" then
strFileData = strFileData & "<tr>"
for n = 0 to UBound(arrFileData)-1
strEntry = replace(arrFileData(n),"""","")
if strEntry = "" then strEntry = " "
strFileData = strFileData & "<td valign=""top"" align=""left"">" & strEntry & "</td>"
next
strFileData = strFileData & "</tr>" & vbCRLF
else
strFileData = strFileData & Join(arrFileData,",") & vbCRLF
end if
Next
PopulateTableForCSV = strFileData
End Function
Sub RunScript
on error resume next
Dim oDLG
Set oDLG=CreateObject("MSComDlg.CommonDialog")
if err.number > 0 then
err.clear
oDLG = window.prompt("Please enter the path and file name to save.", "D:\HTA-Result-Set.csv")
if oDLG <> "" then
strAnswer = oDLG
End If
else
With oDLG
.DialogTitle = "Save As"
.Filter="CSV File|*.csv"
.MaxFileSize = 255
.ShowSave
If .FileName <> "" Then
strAnswer = .FileName
End If
End With
end if
Set oDLG=Nothing
If IsNull(strAnswer) or strAnswer = "" Then
'Do nothing
Else
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(strAnswer) = True Then
objFSO.DeleteFile strAnswer, True
end if
Set objFile = objFSO.CreateTextFile(strAnswer, True)
objFile.Write CreateHeaderRow("") & vbCRLF
objFile.Write PopulateTableForCSV("")
objFile.Close
MsgBox "Saved."
End If
End Sub
Sub Email_This_Record
ShowDialogTo
ShowDialogCC
ConvertNamesToEmailAddresses
arrData = Split(arrRows(span_currentrecord.InnerHTML - 1), "|TD|")
if chk_seatno.Checked then
str_seatno = "<b>Seat No: </b>" & txt_seatno.value & "<br>" & vbCRLF
else
str_seatno = ""
end if
if chk_replacementseatno.Checked then
str_replacementseatno = "<b>These are the replacement details</b><br><b>Seat No: </b>" & txt_replacementseatno.value & "<br>" & vbCRLF
else
str_replacementseatno = ""
end if
if chk_building.Checked then
str_building = "<b>Building: </b>" & txt_building.value & "<br>" & vbCRLF
else
str_building = ""
end if
if chk_extensionno.Checked then
str_extensionno = "<b>Extension No: </b>" & txt_extensionno.value & "<br>" & vbCRLF
else
str_extensionno = ""
end if
if chk_empid.Checked then
str_empid = "<b>Emp ID: </b>" & txt_empid.value & "<br>" & vbCRLF
else
str_empid = ""
end if
if chk_department.Checked then
str_department = "<b>Department: </b>" & txt_department.value & "<br>" & vbCRLF
else
str_department = ""
end if
if chk_designation.Checked then
str_designation = "<b>Designation: </b>" & txt_designation.value & "<br>" & vbCRLF
else
str_designation = ""
end if
if chk_name.Checked then
str_name = "<b>User Name: </b>" & txt_name.value & "<br>" & vbCRLF
else
str_name = ""
end if
if chk_loginname.Checked then
str_loginname = "<b>Login Name: </b>" & txt_loginname.value & "<br>" & vbCRLF
else
str_loginname = ""
end if
if chk_email.Checked then
str_email = "<b>Email Address: </b>" & txt_email.value & "<br>" & vbCRLF
else
str_email = ""
end if
if chk_mailboxsize.Checked then
str_mailboxsize = "<b>Mailbox Size (MB): </b>" & txt_mailboxsize.value & "<br>" & vbCRLF
else
str_mailboxsize = ""
end if
if chk_mailboxstore.Checked then
str_mailboxstore = "<b>Mailbox Store: </b>" & txt_mailboxstore.value & "<br>" & vbCRLF
else
str_mailboxstore = ""
end if
if chk_notes.Checked then
str_notes = "<b>Machine Name: </b>" & txt_notes.value & "<br>" & vbCRLF
else
str_notes = ""
end if
if chk_computerserialno.Checked then
str_computerserialno = "<b>Serial No: </b>" & txt_computerserialno.value & "<br>" & vbCRLF
else
str_computerserialno = ""
end if
if chk_replacedmachine.Checked then
str_replacedmachine = "<b>These are the replacement details</b><br><b>Machine Name: </b>" & txt_replacedmachine.value & "<br>" & vbCRLF
else
str_replacedmachine = ""
end if
if chk_replacedcomputerserialno.Checked then
str_replacedcomputerserialno = "<b>Replaced Serial No: </b>" & txt_replacedcomputerserialno.value & "<br>" & vbCRLF
else
str_replacedcomputerserialno = ""
end if
arrTemp = GetComputerInfo(arrData(9))
if IsArray(arrTemp) then
if chk_oupathcomputer.Checked then
str_oupathcomputer = "<b>OU Path - Computer: </b>" & txt_oupathcomputer.value & "<br>" & vbCRLF
else
str_oupathcomputer = ""
end if
if chk_computeros.Checked then
str_computeros = "<b>Computer OS: </b>" & txt_computeros.value & "<br>" & vbCRLF
else
str_computeros = ""
end if
if chk_computeros.Checked then
str_computerservicepack = "<b>Service Pack: </b>" & txt_computerservicepack.value & "<br>" & vbCRLF
else
str_computerservicepack = ""
end if
if chk_computerdescription.Checked then
str_computerdescription = "<b>Computer Description: </b>" & txt_computerdescription.value & "<br>" & vbCRLF
else
str_computerdescription = ""
end if
if chk_computercreated.Checked then
str_computercreated = "<b>Computer Account Created: </b>" & txt_computercreated.value & "<br>" & vbCRLF
else
str_computercreated = ""
end if
else
if chk_oupathcomputer.Checked then
str_oupathcomputer = "<b>OU Path - Computer: </b>" & "<br>" & vbCRLF
else
str_oupathcomputer = ""
end if
if chk_computeros.Checked then
str_computeros = "<b>Computer OS: </b>" & "<br>" & vbCRLF
else
str_computeros = ""
end if
if chk_computeros.Checked then
str_computerservicepack = "<b>Service Pack: </b>" & "<br>" & vbCRLF
else
str_computerservicepack = ""
end if
if chk_computerdescription.Checked then
str_computerdescription = "<b>Computer Description: </b>" & "<br>" & vbCRLF
else
str_computerdescription = ""
end if
if chk_computercreated.Checked then
str_computercreated = "<b>Computer Account Created: </b>" & "<br>" & vbCRLF
else
str_computercreated = ""
end if
end if
if chk_mobileno.Checked then
str_mobileno = "<b>Mobile Number: </b>" & txt_mobileno.value & "<br>" & vbCRLF
else
str_mobileno = ""
end if
if chk_company.Checked then
str_company = "<b>Company: </b>" & txt_company.value & "<br>" & vbCRLF
else
str_company = ""
end if
if chk_address.Checked then
str_address = "<b>Address: </b>" & txt_address.value & "<br>" & vbCRLF
else
str_address = ""
end if
if chk_city.Checked then
str_city = "<b>City: </b>" & txt_city.value & "<br>" & vbCRLF
else
str_city = ""
end if
if chk_state.Checked then
str_state = "<b>State: </b>" & txt_state.value & "<br>" & vbCRLF
else
str_state = ""
end if
if chk_zipcode.Checked then
str_zipcode = "<b>Zip Code: </b>" & txt_zipcode.value & "<br>" & vbCRLF
else
str_zipcode = ""
end if
if chk_country.Checked then
str_country = "<b>Country: </b>" & txt_country.value & "<br>" & vbCRLF
else
str_country = ""
end if
if chk_homephone.Checked then
str_homephone = "<b>Home Phone: </b>" & txt_homephone.value & "<br>" & vbCRLF
else
str_homephone = ""
end if
if chk_manager.Checked then
if arrData(18) <> "" then
str_manager = "<b>Manager: </b>" & mid(arrData(18),4,instr(arrData(18),",")-4) & "<br>" & vbCRLF
else
str_manager = ""
end if
else
str_manager = ""
end if
if chk_subordinates.Checked then
str_subordinates = "<b>Subordinates: </b>"
boolFoundFirst = False
str_subordinates = ""
ManagerListDB.Filter = "ManagerDN = '" & arrData(21) & "'"
ManagerListDB.MoveFirst
boolFoundFirst = False
Do Until ManagerListDB.EOF
strEmployeeDN = ManagerListDB.Fields.Item("EmployeeDN").Value
strEmployeeDN = mid(strEmployeeDN,4,instr(strEmployeeDN,",")-4)
if boolFoundFirst then
str_subordinates = str_subordinates & "; " & strEmployeeDN
else
boolFoundFirst = True
str_subordinates = str_subordinates & strEmployeeDN
end if
ManagerListDB.MoveNext
Loop
str_subordinates = str_subordinates & "<br>" & vbCRLF
else
str_subordinates = ""
end if
if chk_whencreated.Checked then
str_whencreated = "<b>Date Created: </b>" & txt_whencreated.value & "<br>" & vbCRLF
else
str_whencreated = ""
end if
if chk_oupathuser.Checked then
str_oupathuser = "<b>OU Path - User: </b>" & txt_oupathuser.value & "<br>" & vbCRLF
else
str_oupathuser = ""
end if
if chk_lastlogintimestamp.Checked then
str_lastlogintimestamp = "<b>Last Logon: </b>" & txt_lastlogintimestamp.value & "<br>" & vbCRLF
else
str_lastlogintimestamp = ""
end if
if chk_groupmembership.Checked then
str_groupmembership = "<b>Group Membership: </b>" & ReportGroupMemberShipList(arrData(21), arrData(27)) & "<br>" & vbCRLF
else
str_groupmembership = ""
end if
str_message = str_seatno & _
str_replacementseatno & _
str_building & _
str_extensionno & _
str_empid & _
str_department & _
str_designation & _
str_name & _
str_loginname & _
str_email & _
str_mailboxsize & _
str_mailboxstore & _
str_notes & _
str_computerserialno & _
str_replacedmachine & _
str_replacedcomputerserialno & _
str_oupathcomputer & _
str_computeros & _
str_computerservicepack & _
str_computerdescription & _
str_computercreated & _
str_mobileno & _
str_company & _
str_address & _
str_city & _
str_state & _
str_zipcode & _
str_country & _
str_homephone & _
str_manager & _
str_subordinates & _
str_whencreated & _
str_oupathuser & _
str_lastlogintimestamp & _
str_groupmembership
if trim(txt_EmailSubject.value) = "" then
strEmailSubject = "Active Directory Detail Report"
else
strEmailSubject = trim(txt_EmailSubject.value)
end if
Set objMessage = CreateObject("CDO.Message")
objMessage.From = strEmailFrom
objMessage.To = strEmailTo
objMessage.CC = strEmailCC
objMessage.BCC = strEmailBCC
objMessage.Subject = strEmailSubject
objMessage.HTMLBody = trim(txt_EmailBody.value) & "<br><br>" & vbCRLF & vbCRLF & str_message
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strEmailServer
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objMessage.Configuration.Fields.Update
objMessage.Send
MsgBox "An email has been sent"
End Sub
Sub Email_All_Records
ShowDialogTo
ShowDialogCC
ConvertNamesToEmailAddresses
str_message = ""
if boolTableReports then
str_message = str_message & "<table width=""100%"" border=""1"">" & vbCRLF
str_message = str_message & CreateHeaderRow("Table") & vbCRLF
str_message = str_message & PopulateTableForCSV("Table") & vbCRLF
str_message = str_message & "</table>" & vbCRLF
else
for n = 0 to UBound(arrRows)
arrData = Split(arrRows(n), "|TD|")
if chk_seatno.Checked then
str_seatno = "<b>Seat No: </b>" & arrData(0) & "<br>" & vbCRLF
else
str_seatno = ""
end if
if chk_building.Checked then
str_building = "<b>Building: </b>" & arrData(1) & "<br>" & vbCRLF
else
str_building = ""
end if
if chk_extensionno.Checked then
str_extensionno = "<b>Extension No: </b>" & arrData(2) & "<br>" & vbCRLF
else
str_extensionno = ""
end if
if chk_empid.Checked then
str_empid = "<b>Emp ID: </b>" & arrData(3) & "<br>" & vbCRLF
else
str_empid = ""
end if
if chk_department.Checked then
str_department = "<b>Department: </b>" & arrData(4) & "<br>" & vbCRLF
else
str_department = ""
end if
if chk_designation.Checked then
str_designation = "<b>Designation: </b>" & arrData(5) & "<br>" & vbCRLF
else
str_designation = ""
end if
if chk_name.Checked then
str_name = "<b>User Name: </b>" & arrData(6) & "<br>" & vbCRLF
else
str_name = ""
end if
if chk_loginname.Checked then
str_loginname = "<b>Login Name: </b>" & arrData(7) & "<br>" & vbCRLF
else
str_loginname = ""
end if
if chk_email.Checked then
str_email = "<b>Email Address: </b>" & arrData(8) & "<br>" & vbCRLF
else
str_email = ""
end if
if chk_mailboxsize.Checked then
str_mailboxsize = "<b>Mailbox Size (MB): </b>" & arrData(25) & "<br>" & vbCRLF
else
str_mailboxsize = ""
end if
if chk_mailboxstore.Checked then
str_mailboxstore = "<b>Mailbox Store: </b>" & arrData(26) & "<br>" & vbCRLF
else
str_mailboxstore = ""
end if
if chk_notes.Checked then
str_notes = "<b>Machine Name: </b>" & arrData(9) & "<br>" & vbCRLF
else
str_notes = ""
end if
if chk_computerserialno.Checked then
str_computerserialno = "<b>Serial No: </b>" & arrData(23) & "<br>" & vbCRLF
else
str_computerserialno = ""
end if
arrTemp = GetComputerInfo(arrData(9))
if IsArray(arrTemp) then
if chk_oupathcomputer.Checked then
str_oupathcomputer = "<b>OU Path - Computer: </b>" & GetOUPath(replace(arrTemp(0),"""","")) & "<br>" & vbCRLF
else
str_oupathcomputer = ""
end if
if chk_computeros.Checked then
str_computeros = "<b>Computer OS: </b>" & replace(arrTemp(1),"""","") & "<br>" & vbCRLF
else
str_computeros = ""
end if
if chk_computeros.Checked then
str_computerservicepack = "<b>Service Pack: </b>" & replace(arrTemp(2),"""","") & "<br>" & vbCRLF
else
str_computerservicepack = ""
end if
if chk_computerdescription.Checked then
str_computerdescription = "<b>Computer Description: </b>" & replace(arrTemp(4),"""","") & "<br>" & vbCRLF
else
str_computerdescription = ""
end if
if chk_computercreated.Checked then
str_computercreated = "<b>Computer Account Created: </b>" & replace(arrTemp(3),"""","") & "<br>" & vbCRLF
else
str_computercreated = ""
end if
else
if chk_oupathcomputer.Checked then
str_oupathcomputer = "<b>OU Path - Computer: </b>" & "<br>" & vbCRLF
else
str_oupathcomputer = ""
end if
if chk_computeros.Checked then
str_computeros = "<b>Computer OS: </b>" & "<br>" & vbCRLF
else
str_computeros = ""
end if
if chk_computeros.Checked then
str_computerservicepack = "<b>Service Pack: </b>" & "<br>" & vbCRLF
else
str_computerservicepack = ""
end if
if chk_computerdescription.Checked then
str_computerdescription = "<b>Computer Description: </b>" & "<br>" & vbCRLF
else
str_computerdescription = ""
end if
if chk_computercreated.Checked then
str_computercreated = "<b>Computer Account Created: </b>" & "<br>" & vbCRLF
else
str_computercreated = ""
end if
end if
if chk_mobileno.Checked then
str_mobileno = "<b>Mobile Number: </b>" & arrData(10) & "<br>" & vbCRLF
else
str_mobileno = ""
end if
if chk_company.Checked then
str_company = "<b>Company: </b>" & arrData(11) & "<br>" & vbCRLF
else
str_company = ""
end if
if chk_address.Checked then
str_address = "<b>Address: </b>" & arrData(12) & "<br>" & vbCRLF
else
str_address = ""
end if
if chk_city.Checked then
str_city = "<b>City: </b>" & arrData(13) & "<br>" & vbCRLF
else
str_city = ""
end if
if chk_state.Checked then
str_state = "<b>State: </b>" & arrData(14) & "<br>" & vbCRLF
else
str_state = ""
end if
if chk_zipcode.Checked then
str_zipcode = "<b>Zip Code: </b>" & arrData(15) & "<br>" & vbCRLF
else
str_zipcode = ""
end if
if chk_country.Checked then
str_country = "<b>Country: </b>" & arrData(16) & "<br>" & vbCRLF
else
str_country = ""
end if
if chk_homephone.Checked then
str_homephone = "<b>Home Phone: </b>" & arrData(17) & "<br>" & vbCRLF
else
str_homephone = ""
end if
if chk_manager.Checked then
if arrData(18) <> "" then
str_manager = "<b>Manager: </b>" & mid(arrData(18),4,instr(arrData(18),",")-4) & "<br>" & vbCRLF
else
str_manager = ""
end if
else
str_manager = ""
end if
if chk_subordinates.Checked then
str_subordinates = "<b>Subordinates: </b>"
boolFoundFirst = False
str_subordinates = ""
ManagerListDB.Filter = "ManagerDN = '" & arrData(21) & "'"
ManagerListDB.MoveFirst
boolFoundFirst = False
Do Until ManagerListDB.EOF
strEmployeeDN = ManagerListDB.Fields.Item("EmployeeDN").Value
strEmployeeDN = mid(strEmployeeDN,4,instr(strEmployeeDN,",")-4)
if boolFoundFirst then
str_subordinates = str_subordinates & "; " & strEmployeeDN
else
boolFoundFirst = True
str_subordinates = str_subordinates & strEmployeeDN
end if
ManagerListDB.MoveNext
Loop
str_subordinates = str_subordinates & "<br>" & vbCRLF
else
str_subordinates = ""
end if
if chk_whencreated.Checked then
str_whencreated = "<b>Date Created: </b>" & arrData(19) & "<br>" & vbCRLF
else
str_whencreated = ""
end if
if chk_oupathuser.Checked then
str_oupathuser = "<b>OU Path - User: </b>" & GetOUPath(arrData(21)) & "<br>" & vbCRLF
else
str_oupathuser = ""
end if
if chk_lastlogintimestamp.Checked then
str_lastlogintimestamp = "<b>Last Logon: </b>" & arrData(22) & "<br>" & vbCRLF
else
str_lastlogintimestamp = ""
end if
if chk_groupmembership.Checked then
str_groupmembership = "<b>Group Membership: </b>" & ReportGroupMemberShipList(arrData(21), arrData(27)) & "<br>" & vbCRLF
else
str_groupmembership = ""
end if
str_message = str_message & _
str_seatno & _
str_building & _
str_extensionno & _
str_empid & _
str_department & _
str_designation & _
str_name & _
str_loginname & _
str_email & _
str_mailboxsize & _
str_mailboxstore & _
str_notes & _
str_computerserialno & _
str_oupathcomputer & _
str_computeros & _
str_computerservicepack & _
str_computerdescription & _
str_computercreated & _
str_mobileno & _
str_company & _
str_address & _
str_city & _
str_state & _
str_zipcode & _
str_country & _
str_homephone & _
str_manager & _
str_subordinates & _
str_whencreated & _
str_oupathuser & _
str_lastlogintimestamp & _
str_groupmembership & VbCrLf & "<br><hr><br><br>" & vbCRLF
next
end if
if trim(txt_EmailSubject.value) = "" then
strEmailSubject = "Active Directory Detail Report"
else
strEmailSubject = trim(txt_EmailSubject.value)
end if
Set objMessage = CreateObject("CDO.Message")
objMessage.From = strEmailFrom
objMessage.To = strEmailTo
objMessage.CC = strEmailCC
objMessage.BCC = strEmailBCC
objMessage.Subject = strEmailSubject
objMessage.HTMLBody = trim(txt_EmailBody.value) & "<br><br>" & vbCRLF & vbCRLF & str_message
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strEmailServer
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objMessage.Configuration.Fields.Update
objMessage.Send
MsgBox "An email has been sent"
End Sub
Sub Email_As_Attachment
ShowDialogTo
ShowDialogCC
ConvertNamesToEmailAddresses
strAnswer = fTemp & "\HTAResults.csv"
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(strAnswer) = True Then
objFSO.DeleteFile strAnswer, True
end if
Set objFile = objFSO.CreateTextFile(strAnswer, True)
objFile.Write CreateHeaderRow("") & vbCRLF
objFile.Write PopulateTableForCSV("")
objFile.Close
if trim(txt_EmailSubject.value) = "" then
strEmailSubject = "Active Directory Detail Report"
else
strEmailSubject = trim(txt_EmailSubject.value)
end if
Set objMessage = CreateObject("CDO.Message")
objMessage.From = strEmailFrom
objMessage.To = strEmailTo
objMessage.CC = strEmailCC
objMessage.BCC = strEmailBCC
objMessage.Subject = strEmailSubject
objMessage.TextBody = trim(txt_EmailBody.value) & vbCRLF & vbCRLF
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strEmailServer
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objMessage.Configuration.Fields.Update
objMessage.AddAttachment strAnswer
objMessage.Send
MsgBox "An email has been sent"
objFSO.DeleteFile strAnswer, True
End Sub
Sub SelectAllCheck
If chk_selectall.Checked then
CheckAllBoxes
TestToSeeWhatLinesAreHidden
else
UnCheckAllBoxes
end if
End Sub
Sub UnCheckAllBoxes
chk_selectall.Checked = False
chk_seatno.Checked = False
chk_replacementseatno.Checked = False
chk_building.Checked = False
chk_extensionno.Checked = False
chk_seatno.Checked = False
chk_empid.Checked = False
chk_department.Checked = False
chk_designation.Checked = False
chk_name.Checked = False
chk_loginname.Checked = False
chk_email.Checked = False
chk_mailboxsize.Checked = False
chk_mailboxstore.Checked = False
chk_notes.Checked = False
chk_computerserialno.Checked = False
chk_replacedmachine.Checked = False
chk_replacedcomputerserialno.Checked = False
chk_oupathcomputer.Checked = False
chk_computeros.Checked = False
chk_computerdescription.Checked = False
chk_computercreated.Checked = False
chk_mobileno.Checked = False
chk_company.Checked = False
chk_address.Checked = False
chk_city.Checked = False
chk_state.Checked = False
chk_zipcode.Checked = False
chk_country.Checked = False
chk_homephone.Checked = False
chk_manager.Checked = False
chk_whencreated.Checked = False
chk_oupathuser.Checked = False
chk_lastlogintimestamp.Checked = False
chk_groupmembership.Checked = False
chk_dgmembership.Checked = False
chk_managerlist.Checked = False
chk_subordinates.Checked = False
End Sub
Sub CheckAllBoxes
chk_selectall.Checked = True
chk_seatno.Checked = True
chk_replacementseatno.Checked = True
chk_building.Checked = True
chk_extensionno.Checked = True
chk_empid.Checked = True
chk_department.Checked = True
chk_designation.Checked = True
chk_name.Checked = True
chk_loginname.Checked = True
chk_email.Checked = True
chk_mailboxsize.Checked = True
chk_mailboxstore.Checked = True
chk_notes.Checked = True
chk_computerserialno.Checked = True
chk_replacedmachine.Checked = True
chk_replacedcomputerserialno.Checked = True
chk_oupathcomputer.Checked = True
chk_computeros.Checked = True
chk_computerdescription.Checked = True
chk_computercreated.Checked = True
chk_mobileno.Checked = True
chk_company.Checked = True
chk_address.Checked = True
chk_city.Checked = True
chk_state.Checked = True
chk_zipcode.Checked = True
chk_country.Checked = True
chk_homephone.Checked = True
chk_manager.Checked = True
chk_whencreated.Checked = True
chk_oupathuser.Checked = True
chk_lastlogintimestamp.Checked = True
chk_groupmembership.Checked = True
chk_dgmembership.Checked = True
chk_managerlist.Checked = True
chk_subordinates.Checked = True
End Sub
Function GetUsersEmailAddress
Set oNet = CreateObject("WScript.NetWork")
sSearchField = "(samAccountName=*" & oNet.UserName & "*)"
Set objRootDSE = GetObject("LDAP://RootDSE")
sDNSDomain = objRootDSE.Get("defaultNamingContext")
sBase = "<LDAP://" & sDNSDomain & ">"
sFilter = "(&(objectCategory=person)(objectClass=user)" & sSearchField & ")"
sAttributes = "cn,samAccountName,mail"
sQuery = sBase & ";" & sFilter & ";" & sAttributes & ";subtree"
Set aCommand = CreateObject("ADODB.Command")
Set aConnection = CreateObject("ADODB.Connection")
aConnection.Provider = "ADsDSOObject"
aConnection.Open "Active Directory Provider"
aCommand.ActiveConnection = aConnection
aCommand.CommandText = sQuery
aCommand.Properties("Page Size") = 100
aCommand.Properties("Timeout") = 30
aCommand.Properties("Cache Results") = False
Set aRecordset = aCommand.Execute
GetUsersEmailAddress = aRecordset.Fields("cn").Value
End Function
Sub ShowDialogCC
Const adVarChar = 200
Const MaxCharacters = 255
strValidEmail = ""
arrResolve = split(txt_EmailCC.Value,";")
for each strResolve in arrResolve
strResolve = trim(strResolve)
if instr(strResolve,"@") then
'Treat as valid email address
strValidEmail = strValidEmail & strResolve & ";"
elseif strResolve <> "" then
Set objRoot = GetObject("LDAP://rootDSE")
strDomain = "LDAP://" & objRoot.Get("defaultNamingContext")
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.CommandText = "<" & strDomain & ">;(&(objectCategory=person)" & _
"(mail=*)(cn=*" & strResolve & "*));cn,samAccountName,mail;subtree"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 90
objCommand.Properties("Cache Results") = False
Set objRecordSet1 = objCommand.Execute
intCount = 0
While Not objRecordSet1.EOF
intCount = intCount + 1
strFullName = objRecordSet1.Fields("cn").Value
objRecordSet1.MoveNext
Wend
if intCount = 0 then
msgbox "The name """ & strResolve & """ could not be found. The name has been removed from the field."
end if
if intCount = 1 then
strValidEmail = strValidEmail & strFullName & ";"
end if
if intCount > 1 then
strSample = ShowModalDialog("modaldialog.hta",strResolve)
strValidEmail = strValidEmail & strSample & ";"
end if
end if
next
txt_EmailCC.Value = strValidEmail
End Sub
Sub ShowDialogTo
Const adVarChar = 200
Const MaxCharacters = 255
strValidEmail = ""
arrResolve = split(txt_EmailTo.Value,";")
for each strResolve in arrResolve
strResolve = trim(strResolve)
if instr(strResolve,"@") then
'Treat as valid email address
strValidEmail = strValidEmail & strResolve & ";"
elseif strResolve <> "" then
Set objRoot = GetObject("LDAP://rootDSE")
strDomain = "LDAP://" & objRoot.Get("defaultNamingContext")
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.CommandText = "<" & strDomain & ">;(&(objectCategory=person)" & _
"(mail=*)(cn=*" & strResolve & "*));cn,samAccountName,mail;subtree"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 90
objCommand.Properties("Cache Results") = False
Set objRecordSet1 = objCommand.Execute
intCount = 0
While Not objRecordSet1.EOF
intCount = intCount + 1
strFullName = objRecordSet1.Fields("cn").Value
objRecordSet1.MoveNext
Wend
if intCount = 0 then
msgbox "The name """ & strResolve & """ could not be found. The name has been removed from the field."
end if
if intCount = 1 then
strValidEmail = strValidEmail & strFullName & ";"
end if
if intCount > 1 then
strSample = ShowModalDialog("modaldialog.hta",strResolve)
strValidEmail = strValidEmail & strSample & ";"
end if
end if
next
txt_EmailTo.Value = strValidEmail
End Sub
Sub ShowDialogFrom
Const adVarChar = 200
Const MaxCharacters = 255
strValidEmail = ""
arrResolve = split(txt_EmailFrom.Value,";")
for each strResolve in arrResolve
strResolve = trim(strResolve)
if instr(strResolve,"@") then
'Treat as valid email address
strValidEmail = strValidEmail & strResolve & ";"
elseif strResolve <> "" then
Set objRoot = GetObject("LDAP://rootDSE")
strDomain = "LDAP://" & objRoot.Get("defaultNamingContext")
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.CommandText = "<" & strDomain & ">;(&(objectCategory=person)" & _
"(mail=*)(cn=*" & strResolve & "*));cn,samAccountName,mail;subtree"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 90
objCommand.Properties("Cache Results") = False
Set objRecordSet1 = objCommand.Execute
intCount = 0
While Not objRecordSet1.EOF
intCount = intCount + 1
strFullName = objRecordSet1.Fields("cn").Value
objRecordSet1.MoveNext
Wend
if intCount = 0 then
msgbox "The name """ & strResolve & """ could not be found. The name has been removed from the field."
end if
if intCount = 1 then
strValidEmail = strValidEmail & strFullName & ";"
end if
if intCount > 1 then
strSample = ShowModalDialog("modaldialog.hta",strResolve)
strValidEmail = strValidEmail & strSample & ";"
end if
end if
next
txt_EmailFrom.Value = strValidEmail
End Sub
Sub FillGroupMembershipList(usersDistinguishedname,usersPrimaryGroupToken)
on error resume next
Set objlst_groupnames = document.getElementById( "lst_groupnames" )
objlst_groupnames.ListItems.Clear
Set objlst_dgnames = document.getElementById( "lst_dgnames" )
objlst_dgnames.ListItems.Clear
Set objlst_subordinates = document.getElementById( "lst_subordinates" )
objlst_subordinates.ListItems.Clear
' This section is to pull group membership names
GroupMembershipDB.Filter = "memberDistinguishedname = '" & usersDistinguishedname & "' OR PrimaryGroupToken = '" & usersPrimaryGroupToken & "'"
GroupMembershipDB.Sort = "SAMAccountName"
GroupMembershipDB.MoveFirst
strLastGroupDN = ""
Do Until GroupMembershipDB.EOF
strGroupType = GroupMembershipDB.Fields.Item("samaccounttype").Value
strNTName = GroupMembershipDB.Fields.Item("samaccountname").Value
strPrimary = GroupMembershipDB.Fields.Item("PrimaryGroupToken").Value
strdistinguishedName = GroupMembershipDB.Fields.Item("distinguishedName").Value
intNumberOfMembers = dicGroupNumbers.Item(strdistinguishedName)
if strLastGroupDN <> strdistinguishedName then
Select Case strGroupType
Case "[GDG]", "[LDG]", "[UDG]"
Set objListItem = objlst_dgnames.ListItems.Add
objListItem.Text = strNTName
objListItem.ListSubItems.Add.Text = intNumberOfMembers
objListItem.ListSubItems.Add.Text = strGroupType
objListItem.ListSubItems.Add.Text = strdistinguishedName
objListItem.ListSubItems.Add.Text = strPrimary
Case "[GSG]", "[LSG]", "[USG]"
Set objListItem = objlst_groupnames.ListItems.Add
objListItem.Text = strNTName
objListItem.ListSubItems.Add.Text = intNumberOfMembers
objListItem.ListSubItems.Add.Text = strGroupType
objListItem.ListSubItems.Add.Text = strdistinguishedName
objListItem.ListSubItems.Add.Text = strPrimary
Case "[Unknown]"
Set objListItem = objlst_groupnames.ListItems.Add
objListItem.Text = strNTName
objListItem.ListSubItems.Add.Text = intNumberOfMembers
objListItem.ListSubItems.Add.Text = strGroupType
objListItem.ListSubItems.Add.Text = strdistinguishedName
objListItem.ListSubItems.Add.Text = strPrimary
End Select
strLastGroupDN = strdistinguishedName
End if
GroupMembershipDB.MoveNext
Loop
' This section is to pull subordinate names
ManagerListDB.Filter = "ManagerDN = '" & usersDistinguishedname & "'"
ManagerListDB.MoveFirst
Do Until ManagerListDB.EOF
strEmployeeDN = ManagerListDB.Fields.Item("EmployeeDN").Value
strManagerDN = ManagerListDB.Fields.Item("ManagerDN").Value
Set objListItem = objlst_subordinates.ListItems.Add
objListItem.Text = mid(strEmployeeDN,4,instr(strEmployeeDN,",")-4)
objListItem.ListSubItems.Add.Text = int(dicManagerList.Item(strEmployeeDN))
objListItem.ListSubItems.Add.Text = ManagerListDB.Fields.Item("EmployeeDN").Value
ManagerListDB.MoveNext
Loop
ManagerListDB.Filter = ""
span_groupmembership.InnerHTML = "(" & lst_groupnames.ListItems.Count & ")"
span_dgmembership.InnerHTML = "(" & lst_dgnames.ListItems.Count & ")"
span_subordinates.InnerHTML = "(" & lst_subordinates.ListItems.Count & ")"
End Sub
Function ReportGroupMembershipList(usersDistinguishedname,usersPrimaryGroupToken)
GroupMembershipDB.Filter = "memberDistinguishedname = '" & usersDistinguishedname & "' OR PrimaryGroupToken = '" & usersPrimaryGroupToken & "'"
GroupMembershipDB.Sort = "SAMAccountName"
GroupMembershipDB.MoveFirst
strLastGroupDN = ""
Do Until GroupMembershipDB.EOF
strdistinguishedName = GroupMembershipDB.Fields.Item("distinguishedName").Value
if strLastGroupDN <> strdistinguishedName then
strGroupType = GroupMembershipDB.Fields.Item("samaccounttype").Value
strNTName = GroupMembershipDB.Fields.Item("samaccountname").Value
strValue = strValue & strNTName & " " & strGroupType & ";"
strLastGroupDN = strdistinguishedName
GroupMembershipDB.MoveNext
End if
Loop
strValue = mid(strValue,1,len(strValue)-1)
ReportGroupMembershipList = strValue
End Function
Function GetManagerDN(Manager)
Set objRootDSE = GetObject("LDAP://RootDSE")
strDNSDomain = objRootDSE.Get("defaultNamingContext")
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
strBase = "<LDAP://" & strDNSDomain & ">"
strFilter = "(&(objectCategory=person)(objectClass=user)(cn=*" & Manager & "*))"
strAttributes = "distinguishedName,CN"
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
Set adoRecordset = CreateObject("ADODB.Recordset")
adoRecordset.CursorLocation = 3
adoRecordset.Sort = "distinguishedname"
adoRecordset.Open strQuery, adoConnection, , , 1
strresults = ""
boolResultsFound = False
Do Until adoRecordset.EOF
strDN = adoRecordset.Fields("distinguishedName").Value
sResults = sResults & "(manager=" & strDN & ")"
boolResultsFound = True
adoRecordset.MoveNext
Loop
if boolResultsFound then
sResults = "(|" & sResults & ")"
end if
GetManagerDN = sResults
End Function
Sub FillGroupList
Set objlst_groupnames = document.getElementById( "lst_groupnames" )
objlst_groupnames.ListItems.Clear
Set objlst_dgnames = document.getElementById( "lst_dgnames" )
objlst_dgnames.ListItems.Clear
Set objlst_subordinates = document.getElementById( "lst_subordinates" )
objlst_subordinates.ListItems.Clear
for each strDomain in arrDomainNames
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(objectCategory=group)"
strAttributes = "sAMAccountName,primaryGroupToken,distinguishedName,samaccounttype,member"
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
Set adoRecordset = CreateObject("ADODB.Recordset")
adoRecordset.CursorLocation = 3
adoRecordset.Sort = "distinguishedname"
adoRecordset.Open strQuery, adoConnection, , , 1
Do Until adoRecordset.EOF
intNumberOfMembers = 0
strNTName = adoRecordset.Fields("sAMAccountName").Value
strPrimary = adoRecordset.Fields("primaryGroupToken").Value
strdistinguishedName = adoRecordset.Fields("distinguishedName").Value
strGroupType = GetSAMAccountType(adoRecordset.Fields("samaccounttype").Value)
if NOT IsNull(adoRecordset.Fields("member").Value) then
for each strMember in adoRecordset.Fields("member").Value
GroupMembershipDB.AddNew
GroupMembershipDB("sAMAccountName") = strNTName
GroupMembershipDB("primaryGroupToken") = strPrimary
GroupMembershipDB("distinguishedName") = strdistinguishedName
GroupMembershipDB("samaccounttype") = strGroupType
GroupMembershipDB("MemberDistinguishedName") = strMember
GroupMembershipDB.Update
intNumberOfMembers = intNumberOfMembers + 1
next
else
GroupMembershipDB.AddNew
GroupMembershipDB("sAMAccountName") = strNTName
GroupMembershipDB("primaryGroupToken") = strPrimary
GroupMembershipDB("distinguishedName") = strdistinguishedName
GroupMembershipDB("samaccounttype") = strGroupType
GroupMembershipDB("MemberDistinguishedName") = ""
GroupMembershipDB.Update
End if
if NOT dicGroupNumbers.Exists(strdistinguishedName) then
intNumberOfMembers = intNumberOfMembers + Int(GetUsersWithPrimaryGroupID(strPrimary, strdistinguishedName))
dicGroupNumbers.Add strdistinguishedName, intNumberOfMembers
end if
Select Case adoRecordset.Fields("samaccounttype").Value
Case 2,268435457,4,536870913,8,268435457 'Distribution Groups
Set objListItem = objlst_dgnames.ListItems.Add
objListItem.Text = strNTName
objListItem.ListSubItems.Add.Text = intNumberOfMembers
objListItem.ListSubItems.Add.Text = strGroupType
objListItem.ListSubItems.Add.Text = strdistinguishedName
objListItem.ListSubItems.Add.Text = strPrimary
Case -2147483646,268435456,-2147483644,536870912,-2147483640,268435456 'Security Groups
Set objListItem = objlst_groupnames.ListItems.Add
objListItem.Text = strNTName
objListItem.ListSubItems.Add.Text = intNumberOfMembers
objListItem.ListSubItems.Add.Text = strGroupType
objListItem.ListSubItems.Add.Text = strdistinguishedName
objListItem.ListSubItems.Add.Text = strPrimary
Case Else
Set objListItem = objlst_groupnames.ListItems.Add
objListItem.Text = strNTName
objListItem.ListSubItems.Add.Text = intNumberOfMembers
objListItem.ListSubItems.Add.Text = strGroupType
objListItem.ListSubItems.Add.Text = strdistinguishedName
objListItem.ListSubItems.Add.Text = strPrimary
End Select
adoRecordset.MoveNext
Loop
next
span_groupmembership.InnerHTML = "(" & lst_groupnames.ListItems.Count & ")"
span_dgmembership.InnerHTML = "(" & lst_dgnames.ListItems.Count & ")"
span_subordinates.InnerHTML = "(" & lst_subordinates.ListItems.Count & ")"
End Sub
Sub FillManagerList
for each strDomain in arrDomainNames
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(&(objectCategory=user)(manager=*))"
strAttributes = "distinguishedname,manager"
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
Set adoRecordset = CreateObject("ADODB.Recordset")
adoRecordset.CursorLocation = 3
adoRecordset.Sort = "manager"
adoRecordset.Open strQuery, adoConnection, , , 1
Do Until adoRecordset.EOF
strEmployeeDN = adoRecordset.Fields("distinguishedname").Value
strManagerDN = adoRecordset.Fields("manager").Value
ManagerListDB.AddNew
ManagerListDB("EmployeeDN") = strEmployeeDN
ManagerListDB("ManagerDN") = strManagerDN
ManagerListDB.Update
if dicManagerList.Exists(strManagerDN) then
dicManagerList.Item(strManagerDN) = dicManagerList.Item(strManagerDN) + 1
else
dicManagerList.Add strManagerDN, 1
End if
adoRecordset.MoveNext
Loop
next
PopulateManagerList
End Sub
Sub PopulateManagerList
Set objlst_managerlist = document.getElementById( "lst_managerlist" )
objlst_managerlist.ListItems.Clear
for each Manager in dicManagerList
if int(dicManagerList.Item(Manager)) > 0 then
Set objListItem = objlst_managerlist.ListItems.Add
objListItem.Text = mid(Manager,4,instr(Manager,",")-4)
objListItem.ListSubItems.Add.Text = int(dicManagerList.Item(Manager))
objListItem.ListSubItems.Add.Text = Manager
end if
next
span_managerlist.InnerHTML = "(" & lst_managerlist.ListItems.Count & ")"
End Sub
Function GetSAMAccountType(SAMAccountType)
Select Case SAMAccountType
Case 2, 268435457
GetSAMAccountType = "[GDG]" 'This is a global distribution group
Case 4, 536870913
GetSAMAccountType = "[LDG]" 'This is a domain local distribution group
Case 8, 268435457
GetSAMAccountType = "[UDG]" 'This is a universal distribution group
Case -2147483646, 268435456
GetSAMAccountType = "[GSG]" 'This is a global security group
Case -2147483644, 536870912
GetSAMAccountType = "[LSG]" 'This is a domain local security group
Case -2147483640, 268435456
GetSAMAccountType = "[USG]" 'This is a universal security group
Case Else
GetSAMAccountType = "[Unknown]" 'This is an unknown group type
End Select
End Function
Function GetUsersWithPrimaryGroupID(PrimaryGroupID,distinguishedName)
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
strSearchField = "(primaryGroupID=" & PrimaryGroupID & ")"
for each strDomain in arrDomainNames
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(&(objectCategory=user)(objectCategory=contact)" & strSearchField & ")"
strAttributes = "cn,primaryGroupID"
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 100
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False
Set adoRecordset = adoCommand.Execute
If Not adoRecordset.EOF Then
Do Until adoRecordset.EOF
n = n + 1
adoRecordset.movenext
Loop
End If
next
GetUsersWithPrimaryGroupID = n
End Function
Sub FillSubjectList
For Each objOption in txt_EmailSubject.Options
objOption.RemoveNode
Next
For each strSubjectlineText in arrSubjectText
set newOption = document.createElement("OPTION")
newOption.Text = strSubjectlineText
newOption.Value = strSubjectlineText
txt_EmailSubject.Add newOption
Next
End Sub
Sub ConvertNamesToEmailAddresses
txt_EmailToHidden.Value = GetEmailAddresses(txt_EmailTo.Value)
txt_EmailCCHidden.Value = GetEmailAddresses(txt_EmailCC.Value)
strEmailTo = txt_EmailToHidden.Value
End Sub
Function GetEmailAddresses(names)
Const adVarChar = 200
Const MaxCharacters = 255
strValidEmail = ""
arrResolve = split(names,";")
for each strResolve in arrResolve
strResolve = trim(strResolve)
if instr(strResolve,"@") then
'Treat as valid email address
strValidEmail = strValidEmail & strResolve & ";"
elseif strResolve <> "" then
Set objRoot = GetObject("LDAP://rootDSE")
strDomain = "LDAP://" & objRoot.Get("defaultNamingContext")
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.CommandText = "<" & strDomain & ">;(&(objectCategory=person)" & _
"(mail=*)(cn=*" & strResolve & "*));cn,samAccountName,mail;subtree"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 90
objCommand.Properties("Cache Results") = False
Set objRecordSet1 = objCommand.Execute
intCount = 0
While Not objRecordSet1.EOF
intCount = intCount + 1
strFullName = objRecordSet1.Fields("mail").Value
objRecordSet1.MoveNext
Wend
if intCount = 1 then
strValidEmail = strValidEmail & strFullName & ";"
end if
end if
next
GetEmailAddresses = strValidEmail
End Function
Function GetOUPath(OU)
strOU = ""
strFQDN = ""
boolFoundMatch = False
arrValues = split(OU,",")
for each strValue in arrValues
if instr(strValue,"OU=") then
strOU = strOU & replace(strValue,"OU=","") & "\"
end if
if instr(strValue,"DC=") then
strFQDN = strFQDN & replace(strValue,"DC=","") & "."
end if
if instr(strValue,"CN=") then
if boolFoundMatch then
strCN = strCN & replace(strValue,"CN=","") & "\"
else
'Skip the first match - this is always the user name
boolFoundMatch = True
end if
end if
next
if strFQDN <> "" then
strFQDN = left(strFQDN,len(strFQDN)-1)
if strOU <> "" then
strOU = left(strOU,len(strOU)-1)
else
'strOU = "{object not found in any OU}"
if strCN <> "" then
strOU = left(strCN,len(strCN)-1)
end if
end if
GetOUPath = (Split(strOU,"\")(0))
else
GetOUPath = ""
end if
End Function
Function GetComputerInfo(names)
strValidComputer = ""
strResolve = trim(names)
if strResolve <> "" then
Set objRoot = GetObject("LDAP://rootDSE")
strDomain = "LDAP://" & objRoot.Get("defaultNamingContext")
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.CommandText = "<" & strDomain & ">;(&(objectCategory=computer)" & _
"(cn=" & strResolve & "));cn,samAccountName,distinguishedName,operatingsystem,operatingsystemservicepack,whencreated,description;subtree"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 90
objCommand.Properties("Cache Results") = False
Set objRecordSet1 = objCommand.Execute
While Not objRecordSet1.EOF
if IsNull(objRecordSet1.Fields("distinguishedName").Value) then
sDN = ""
else
sDN = replace(objRecordSet1.Fields("distinguishedName").Value,vbCRLF,"")
End if
if IsNull(objRecordSet1.Fields("operatingsystem").Value) then
sOS = ""
else
sOS = replace(objRecordSet1.Fields("operatingsystem").Value,vbCRLF,"")
End if
if IsNull(objRecordSet1.Fields("operatingsystemservicepack").Value) then
sSP = ""
else
sSP = replace(objRecordSet1.Fields("operatingsystemservicepack").Value,vbCRLF,"")
End if
if IsNull(objRecordSet1.Fields("whencreated").Value) then
sWC = ""
else
sWC = replace(objRecordSet1.Fields("whencreated").Value,vbCRLF,"")
End if
if IsNull(objRecordSet1.Fields("description").Value) then
sDS = ""
else
sDS = join(objRecordSet1.Fields("description").Value)
sDS = replace(sDS,vbCRLF,"")
End if
strValidComputer = Array("""" & sDN & """","""" & sOS & """","""" & sSP & """","""" & sWC & """","""" & sDS & """")
objRecordSet1.MoveNext
Wend
end if
if isArray(strValidComputer) then
GetComputerInfo = strValidComputer
else
GetComputerInfo = ""
end if
End Function
Sub ShowSubMenu(Parent,Child)
If Child.style.display="block" Then
Parent.classname="Menuover"
Child.style.display="none"
Set LastChildMenu=Nothing
Else
Parent.classname="Menuin"
Child.style.display="block"
Set LastChildMenu=Child
End If
Set LastMenu=Parent
End Sub
Sub MenuOver(Parent,Child)
If LastChildMenu is Nothing Then
Parent.className="MenuOver"
Else
If LastMenu is Parent Then
Parent.className="MenuIn"
Else
HideMenu
ShowSubMenu Parent,Child
End If
End If
End Sub
Sub MenuOut(Menu)
If LastChildMenu is Nothing Then Menu.className="MenuOut"
End Sub
Sub HideMenu
If Not LastChildMenu is Nothing Then
LastChildMenu.style.display="none"
Set LastChildMenu=Nothing
LastMenu.classname="Menuout"
End If
End Sub
Sub SubMenuOver(Menu)
Menu.className="SubMenuOver"
End Sub
Sub SubMenuOut(Menu)
Menu.className="SubMenuOut"
End Sub
Sub SaveAs
on error resume next
Dim oDLG
Set oDLG=CreateObject("MSComDlg.CommonDialog")
if err.number > 0 then
err.clear
oDLG = window.prompt("Please enter the path and file name to save.", "C:\your-query.qry")
if oDLG <> "" then
FileName = oDLG
Save
End If
else
With oDLG
.DialogTitle = "Save As"
.Filter="Query|*.qry|Text Files|*.txt|All files|*.*"
.MaxFileSize = 255
.ShowSave
If .FileName <> "" Then
FileName = .FileName
Save
End If
End With
end if
Set oDLG=Nothing
DisplayTitle
End Sub
Sub Save()
Dim fso,f
If FileName <> "" Then
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.CreateTextFile(FileName,True)
'This is the text to get saved into the file
with f
.writeline "<root>"
.writeline "<searchfield>" & globalStrSearchField & "</searchfield>"
.writeline "<btnpush>" & globalStrSearchBtnPush & "</btnpush>"
.writeline "<to>" & txt_EmailTo.value & "</to>"
.writeline "<cc>" & txt_EmailCC.value & "</cc>"
.writeline "<bcc>" & strEmailBCC & "</bcc>"
.writeline "<subject>" & txt_EmailSubject.value & "</subject>"
.writeline "<emailbody>" & txt_EmailBody.value & "</emailbody>"
if chk_selectall.Checked then .writeline "<checkboxes>chk_selectall</checkboxes>"
if chk_seatno.Checked then .writeline "<checkboxes>chk_seatno</checkboxes>"
if chk_building.Checked then .writeline "<checkboxes>chk_building</checkboxes>"
if chk_extensionno.Checked then .writeline "<checkboxes>chk_extensionno</checkboxes>"
if chk_empid.Checked then .writeline "<checkboxes>chk_empid</checkboxes>"
if chk_department.Checked then .writeline "<checkboxes>chk_department</checkboxes>"
if chk_designation.Checked then .writeline "<checkboxes>chk_designation</checkboxes>"
if chk_name.Checked then .writeline "<checkboxes>chk_name</checkboxes>"
if chk_loginname.Checked then .writeline "<checkboxes>chk_loginname</checkboxes>"
if chk_email.Checked then .writeline "<checkboxes>chk_email</checkboxes>"
if chk_mailboxsize.Checked then .writeline "<checkboxes>chk_mailboxsize</checkboxes>"
if chk_mailboxstore.Checked then .writeline "<checkboxes>chk_mailboxstore</checkboxes>"
if chk_notes.Checked then .writeline "<checkboxes>chk_notes</checkboxes>"
if chk_computerserialno.Checked then .writeline "<checkboxes>chk_computerserialno</checkboxes>"
if chk_replacedmachine.Checked then .writeline "<checkboxes>chk_replacedmachine</checkboxes>"
if chk_replacedcomputerserialno.Checked then .writeline "<checkboxes>chk_replacedcomputerserialno</checkboxes>"
if chk_oupathcomputer.Checked then .writeline "<checkboxes>chk_oupathcomputer</checkboxes>"
if chk_computeros.Checked then .writeline "<checkboxes>chk_computeros</checkboxes>"
if chk_computerdescription.Checked then .writeline "<checkboxes>chk_computerdescription</checkboxes>"
if chk_computercreated.Checked then .writeline "<checkboxes>chk_computercreated</checkboxes>"
if chk_mobileno.Checked then .writeline "<checkboxes>chk_mobileno</checkboxes>"
if chk_company.Checked then .writeline "<checkboxes>chk_company</checkboxes>"
if chk_address.Checked then .writeline "<checkboxes>chk_address</checkboxes>"
if chk_city.Checked then .writeline "<checkboxes>chk_city</checkboxes>"
if chk_state.Checked then .writeline "<checkboxes>chk_state</checkboxes>"
if chk_zipcode.Checked then .writeline "<checkboxes>chk_zipcode</checkboxes>"
if chk_country.Checked then .writeline "<checkboxes>chk_country</checkboxes>"
if chk_homephone.Checked then .writeline "<checkboxes>chk_homephone</checkboxes>"
if chk_manager.Checked then .writeline "<checkboxes>chk_manager</checkboxes>"
if chk_whencreated.Checked then .writeline "<checkboxes>chk_whencreated</checkboxes>"
if chk_oupathuser.Checked then .writeline "<checkboxes>chk_oupathuser</checkboxes>"
if chk_lastlogintimestamp.Checked then .writeline "<checkboxes>chk_lastlogintimestamp</checkboxes>"
if chk_groupmembership.Checked then .writeline "<checkboxes>chk_groupmembership</checkboxes>"
if chk_dgmembership.Checked then .writeline "<checkboxes>chk_dgmembership</checkboxes>"
if chk_managerlist.Checked then .writeline "<checkboxes>chk_managerlist</checkboxes>"
if chk_subordinates.Checked then .writeline "<checkboxes>chk_subordinates</checkboxes>"
.writeline "</root>"
.Close
end with
Set xmlDom = CreateObject("Microsoft.XMLDOM")
XmlDom.async = False
XmlDom.Load(FileName)
xmlDom.Save(FileName)
Set f = Nothing
Set fso = Nothing
Else
SaveAs
End If
End Sub
Sub OpenIt
UnCheckAllBoxes
Set xmlDom = CreateObject("Microsoft.XMLDOM")
xmlDom.async="false"
xmlDom.load(FileName)
globalStrSearchField = xmlDom.getElementsByTagName("searchfield").item(0).text
globalStrSearchBtnPush = xmlDom.getElementsByTagName("btnpush").item(0).text
txt_EmailTo.value = xmlDom.getElementsByTagName("to").item(0).text
txt_EmailCC.value = xmlDom.getElementsByTagName("cc").item(0).text
strEmailBCC = xmlDom.getElementsByTagName("bcc").item(0).text
txt_EmailSubject.value = xmlDom.getElementsByTagName("subject").item(0).text
txt_EmailBody.value = xmlDom.getElementsByTagName("emailbody").item(0).text
for n = 0 to xmlDom.getElementsByTagName("checkboxes").Length-1
execute(xmlDom.getElementsByTagName("checkboxes").item(n).text & ".checked = True")
next
DisplayTitle
Submit_Form "FileOpen"
End Sub
Sub Open()
on error resume next
Dim oDLG
Set oDLG = CreateObject("MSComDlg.CommonDialog")
if err.number > 0 then
err.clear
oDLG = window.prompt("Please enter the path and file name to open.", "C:\your-query.qry")
if oDLG <> "" then
FileName = oDLG
OpenIt
End If
else
With oDLG
.DialogTitle = "Open"
.Filter = "Query|*.qry|Text Files|*.txt|All files|*.*"
.MaxFileSize = 255
.Flags = .Flags Or &H1000 'FileMustExist (OFN_FILEMUSTEXIST)
.ShowOpen
If .FileName <> "" Then
FileName = .FileName
OpenIt
End If
End With
end if
Set oDLG = Nothing
End Sub
Sub DisplayTitle
If FileName="" Then
document.Title="Default - " & oHTA.ApplicationName
Else
document.Title=FileName & " - " & oHTA.ApplicationName
End If
End Sub
Sub ClickTheSpecialReportButton
Submit_Form("Disabled")
End Sub
Sub SpecialReportNewUsersToday
Clear_Form ""
txt_whencreated.Value = FormatDateTime(Date(),2)
Detect_Search_Field("txt_whencreated")
Submit_Form("Main")
End Sub
Sub SpecialReportDisabledUsersToday
Clear_Form ""
txt_whencreated.Value = FormatDateTime(Date(),2)
Detect_Search_Field("txt_whencreated")
Submit_Form("DisabledToday")
End Sub
Sub SpecialReportDisabledUsersSomeDay
Clear_Form ""
sRtn = showModalDialog("Calendar.htm","","center=yes;dialogWidth=160pt;dialogHeight=180pt")
txt_whencreated.value = sRtn
Detect_Search_Field("txt_whencreated")
Submit_Form("DisabledToday")
End Sub
Sub GetChkProfiles
For Each objOption in lst_ChkProfiles.Options
objOption.RemoveNode
Next
strAnswer = fAppData & "\profile.xml"
Set objFSO = CreateObject("Scripting.FileSystemObject")
If NOT objFSO.FileExists(strAnswer) Then
'Create profile.xml
Set f = objFSO.CreateTextFile(strAnswer,True)
with f
.writeline "<root>"
.writeline "<profile val=""Default"">"
.writeline "<checkboxes val=""chk_selectall"" />"
.writeline "<checkboxes val=""chk_seatno"" />"
.writeline "<checkboxes val=""chk_replacementseatno"" />"
.writeline "<checkboxes val=""chk_building"" />"
.writeline "<checkboxes val=""chk_extensionno"" />"
.writeline "<checkboxes val=""chk_empid"" />"
.writeline "<checkboxes val=""chk_department"" />"
.writeline "<checkboxes val=""chk_designation"" />"
.writeline "<checkboxes val=""chk_name"" />"
.writeline "<checkboxes val=""chk_loginname"" />"
.writeline "<checkboxes val=""chk_email"" />"
.writeline "<checkboxes val=""chk_mailboxsize"" />"
.writeline "<checkboxes val=""chk_mailboxstore"" />"
.writeline "<checkboxes val=""chk_notes"" />"
.writeline "<checkboxes val=""chk_computerserialno"" />"
.writeline "<checkboxes val=""chk_replacedmachine"" />"
.writeline "<checkboxes val=""chk_replacedcomputerserialno"" />"
.writeline "<checkboxes val=""chk_oupathcomputer"" />"
.writeline "<checkboxes val=""chk_computeros"" />"
.writeline "<checkboxes val=""chk_computerdescription"" />"
.writeline "<checkboxes val=""chk_computercreated"" />"
.writeline "<checkboxes val=""chk_mobileno"" />"
.writeline "<checkboxes val=""chk_company"" />"
.writeline "<checkboxes val=""chk_address"" />"
.writeline "<checkboxes val=""chk_city"" />"
.writeline "<checkboxes val=""chk_state"" />"
.writeline "<checkboxes val=""chk_zipcode"" />"
.writeline "<checkboxes val=""chk_country"" />"
.writeline "<checkboxes val=""chk_homephone"" />"
.writeline "<checkboxes val=""chk_manager"" />"
.writeline "<checkboxes val=""chk_whencreated"" />"
.writeline "<checkboxes val=""chk_oupathuser"" />"
.writeline "<checkboxes val=""chk_lastlogintimestamp"" />"
.writeline "<checkboxes val=""chk_groupmembership"" />"
.writeline "<checkboxes val=""chk_dgmembership"" />"
.writeline "<checkboxes val=""chk_managerlist"" />"
.writeline "<checkboxes val=""chk_subordinates"" />"
.writeline "</profile>"
.writeline "</root>"
.Close
end with
Set xmlDom = CreateObject("Microsoft.XMLDOM")
XmlDom.async = False
XmlDom.Load(strAnswer)
xmlDom.Save(strAnswer)
End If
Set xmlDom = CreateObject("Microsoft.XMLDOM")
xmlDom.async="false"
XmlDom.Load(strAnswer)
Set oNodes = XmlDom.selectNodes("//profile")
for n = 0 to oNodes.length - 1
set newOption = document.createElement("OPTION")
newOption.Text = oNodes(n).selectSingleNode("@val").Text
newOption.Value = oNodes(n).selectSingleNode("@val").Text
lst_ChkProfiles.Add newOption
next
Set f = Nothing
Set objFSO = Nothing
End Sub
Sub lst_chkprofiles_OnChange
UnCheckAllBoxes
strAnswer = fAppData & "\profile.xml"
Set xmlDom = CreateObject("Microsoft.XMLDOM")
xmlDom.async="false"
XmlDom.Load(strAnswer)
Set oNodes = XmlDom.selectNodes("//profile[@val=""" & lst_chkprofiles.Value & """]/checkboxes")
For n = 0 To oNodes.length - 1
execute(oNodes(n).selectSingleNode("@val").Text & ".Checked = True")
Next
TestToSeeWhatLinesAreHidden
End Sub
Sub DeleteFromCheckboxProfile
if lst_chkprofiles.Value <> "Default" then
strAnswer = fAppData & "\profile.xml"
Set xmlDom = CreateObject("Microsoft.XMLDOM")
xmlDom.async="false"
XmlDom.Load(strAnswer)
Set oNodes = XmlDom.selectNodes("//profile[@val=""" & lst_chkprofiles.Value & """]")
For Each objNode in oNodes
xmlDom.documentElement.removeChild _
(objNode)
Next
XmlDom.Save(strAnswer)
For Each objOption in lst_chkprofiles.Options
If objOption.Value = lst_chkprofiles.Value Then
objOption.RemoveNode
End If
Next
msgbox "Checkbox profile deleted."
lst_chkprofiles_OnChange
else
msgbox "You cannot delete the default profile."
end if
End Sub
Sub ModifyCurrentCheckboxProfile
if lst_chkprofiles.Value <> "Default" then
strAnswer = fAppData & "\profile.xml"
Set xmlDom = CreateObject("Microsoft.XMLDOM")
xmlDom.async="false"
XmlDom.Load(strAnswer)
strProfileName = lst_chkprofiles.Value
Set oNodes = XmlDom.selectNodes("//profile[@val=""" & lst_chkprofiles.Value & """]")
For Each objNode in oNodes
xmlDom.documentElement.removeChild _
(objNode)
Next
XmlDom.Save(strAnswer)
Const ForReading = 1
Const ForWriting = 2
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(strAnswer, ForReading)
Do Until objFile.AtEndOfStream
strLine = objFile.Readline
strLine = Trim(strLine)
If strLine <> "</root>" Then
strContents = strContents & strLine & vbCrLf
End If
Loop
objFile.Close
Set f = objFSO.OpenTextFile(strAnswer, ForWriting)
with f
.writeline strContents & vbTab & "<profile val=""" & strProfileName & """>"
if chk_selectall.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_selectall"" />"
if chk_seatno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_seatno"" />"
if chk_replacementseatno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_replacementseatno"" />"
if chk_building.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_building"" />"
if chk_extensionno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_extensionno"" />"
if chk_empid.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_empid"" />"
if chk_department.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_department"" />"
if chk_designation.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_designation"" />"
if chk_name.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_name"" />"
if chk_loginname.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_loginname"" />"
if chk_email.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_email"" />"
if chk_mailboxsize.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_mailboxsize"" />"
if chk_mailboxstore.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_mailboxstore"" />"
if chk_notes.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_notes"" />"
if chk_computerserialno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_computerserialno"" />"
if chk_replacedmachine.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_replacedmachine"" />"
if chk_replacedcomputerserialno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_replacedcomputerserialno"" />"
if chk_oupathcomputer.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_oupathcomputer"" />"
if chk_computeros.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_computeros"" />"
if chk_computerdescription.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_computerdescription"" />"
if chk_computercreated.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_computercreated"" />"
if chk_mobileno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_mobileno"" />"
if chk_company.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_company"" />"
if chk_address.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_address"" />"
if chk_city.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_city"" />"
if chk_state.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_state"" />"
if chk_zipcode.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_zipcode"" />"
if chk_country.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_country"" />"
if chk_homephone.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_homephone"" />"
if chk_manager.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_manager"" />"
if chk_whencreated.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_whencreated"" />"
if chk_oupathuser.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_oupathuser"" />"
if chk_lastlogintimestamp.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_lastlogintimestamp"" />"
if chk_groupmembership.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_groupmembership"" />"
if chk_dgmembership.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_dgmembership"" />"
if chk_managerlist.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_managerlist"" />"
if chk_subordinates.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_subordinates"" />"
.writeline vbTab & "</profile>"
.writeline "</root>"
.close
end with
msgbox "Checkbox profile modified."
else
msgbox "You cannot modify the default profile."
end if
End Sub
Sub AddToCheckboxProfile
strProfileName = window.prompt("Please enter a profile name.", "My profile name")
strAnswer = fAppData & "\profile.xml"
Const ForReading = 1
Const ForWriting = 2
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(strAnswer, ForReading)
Do Until objFile.AtEndOfStream
strLine = objFile.Readline
strLine = Trim(strLine)
If strLine <> "</root>" Then
strContents = strContents & strLine & vbCrLf
End If
Loop
objFile.Close
Set f = objFSO.OpenTextFile(strAnswer, ForWriting)
with f
.writeline strContents & vbTab & "<profile val=""" & strProfileName & """>"
if chk_selectall.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_selectall"" />"
if chk_seatno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_seatno"" />"
if chk_replacementseatno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_replacementseatno"" />"
if chk_building.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_building"" />"
if chk_extensionno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_extensionno"" />"
if chk_empid.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_empid"" />"
if chk_department.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_department"" />"
if chk_designation.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_designation"" />"
if chk_name.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_name"" />"
if chk_loginname.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_loginname"" />"
if chk_email.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_email"" />"
if chk_mailboxsize.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_mailboxsize"" />"
if chk_mailboxstore.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_mailboxstore"" />"
if chk_notes.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_notes"" />"
if chk_computerserialno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_computerserialno"" />"
if chk_replacedmachine.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_replacedmachine"" />"
if chk_replacedcomputerserialno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_replacedcomputerserialno"" />"
if chk_oupathcomputer.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_oupathcomputer"" />"
if chk_computeros.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_computeros"" />"
if chk_computerdescription.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_computerdescription"" />"
if chk_computercreated.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_computercreated"" />"
if chk_mobileno.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_mobileno"" />"
if chk_company.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_company"" />"
if chk_address.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_address"" />"
if chk_city.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_city"" />"
if chk_state.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_state"" />"
if chk_zipcode.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_zipcode"" />"
if chk_country.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_country"" />"
if chk_homephone.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_homephone"" />"
if chk_manager.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_manager"" />"
if chk_whencreated.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_whencreated"" />"
if chk_oupathuser.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_oupathuser"" />"
if chk_lastlogintimestamp.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_lastlogintimestamp"" />"
if chk_groupmembership.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_groupmembership"" />"
if chk_dgmembership.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_dgmembership"" />"
if chk_managerlist.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_managerlist"" />"
if chk_subordinates.checked then .writeline vbTab & vbTab & "<checkboxes val=""chk_subordinates"" />"
.writeline vbTab & "</profile>"
.writeline "</root>"
.close
end with
set newOption = document.createElement("OPTION")
newOption.Text = strProfileName
newOption.Value = strProfileName
lst_ChkProfiles.Add newOption
lst_ChkProfiles.Value = strProfileName
End Sub
Sub AddToQueryBuilder
globalstrQueryBuilder = globalstrQueryBuilder & globalstrSearchField
if NOT chk_qbrecorder.Checked then
msgbox "The query has been added."
end if
End Sub
Sub QueryBuilderRecorder
if chk_qbrecorder.Checked then
msgbox "Query Builder is now recording."
else
msgbox "Query Builder has stopped recording." & vbCrLf & "Click OK to view the combined query."
RunQueryBuilder
end if
End Sub
Sub ViewQueryBuilder
if globalstrQueryBuilder <> "" then
msgbox "(|" & globalstrQueryBuilder & ")"
else
msgbox "There are no stored queries to view."
end if
End Sub
Sub RunQueryBuilder
globalStrSearchField = "(|" & globalstrQueryBuilder & ")"
globalstrSearchBtnPush = "FileOpen"
Submit_Form "FileOpen"
End Sub
Sub ClearQueryBuilder
globalstrQueryBuilder = ""
End Sub
Sub txt_EmailSubject_OnChange
For n = 0 to (txt_EmailSubject.Options.Length - 1)
If (txt_EmailSubject.Options(n).Selected) Then
strEmailTo = arrToSpecial(n)
strEmailCC = arrCCSpecial(n)
strEmailBody = arrBodySpecial(n)
strCheckBoxProfile = arrCheckBoxSpecial(n)
txt_EmailTo.Value = strEmailTo
txt_EmailCC.Value = strEmailCC
txt_EmailBody.Value = strEmailBody
For Each objOption in lst_chkprofiles.Options
If objOption.Value = strCheckBoxProfile Then
objOption.Selected = True
lst_chkprofiles_OnChange
End If
Next
End If
Next
End Sub
Sub PingComputer(name)
if name <> "" then
strComuptername = trim(name)
'Run PING command
Set objPingResults = GetObject("winmgmts:{impersonationLevel=impersonate}//./root/cimv2"). ExecQuery("SELECT * FROM Win32_PingStatus WHERE Address = '" & strComuptername & "'")
'Take ping reults and put into variable strPingResult
strPingResult = 0
For Each oPingResult In objPingResults
strPingResult = oPingResult.ResponseTime
strIPAddress = oPingResult.ProtocolAddress
Next
'Catch PINGS that do not have a result - typically this is for unreachable devices
if IsEmpty(strPingResult) then
strPingResult = 9999
end if
if IsNULL(strPingResult) then
strPingResult = 9999
end if
' Run ping again if first attempt fails
if strPingResult = 9999 then
'Run PING command
Set objPingResults = GetObject("winmgmts:{impersonationLevel=impersonate}//./root/cimv2"). ExecQuery("SELECT * FROM Win32_PingStatus WHERE Address = '" & strComuptername & "'")
'Take ping reults and put into variable strPingResult
strPingResult = 0
For Each oPingResult In objPingResults
strPingResult = oPingResult.ResponseTime
strIPAddress = oPingResult.ProtocolAddress
Next
'Catch PINGS that do not have a result - typically this is for unreachable devices
if IsEmpty(strPingResult) then
strPingResult = 9999
end if
if IsNULL(strPingResult) then
strPingResult = 9999
end if
end if
span_computerip.innerhtml = strIPAddress
if strPingResult = 9999 then
span_computeronline.innerhtml = "Offline"
else
span_computeronline.innerhtml = "Online"
end if
else
span_computerip.innerhtml = " "
span_computeronline.innerhtml = " "
end if
End Sub
Sub bt2Go_onclick()
'** Declarations:'
Dim OPR, DM, USR, strNTName, strUserDN, strNM, objUser, TNP, DENY, POS, NEG
Dim objNetwork, objShell
'** Objects:'
Set objNetwork = CreateObject("WScript.Network")
Set objShell = CreateObject("Wscript.Shell")
'** User/Domain:'
OPR = objNetwork.UserName
DM = objNetwork.UserDomain & "\"
'** Write username for the user that needs to be enabled or disabled:'
USR = InputBox("Username:", "Enable or Disable Active Directory User", _
"Write Username Here")
if USR = "" then
exit sub
End if
'** Prevent run-time errors:'
On Error Resume Next
'** Declare NameTranslate constants:'
Const ADS_NAME_INITTYPE_GC = 3
Const ADS_NAME_TYPE_NT4 = 3
Const ADS_NAME_TYPE_1779 = 1
'** Combine the user name and domain name:'
strNTName = DM & USR
strNT2 = DM & OPR
'** Translate operator name into DN:'
Set objTrans2 = CreateObject("NameTranslate")
objTrans2.Init ADS_NAME_INITTYPE_GC, ""
objTrans2.Set ADS_NAME_TYPE_NT4, strNT2
strUserDN2 = objTrans2.Get(ADS_NAME_TYPE_1779)
Set objUser2 = GetObject("LDAP://" & strUserDN2)
strUS3 = Mid(strUserDN2,4)
strUS4 = Split(strUS3, ",")
For n = LBound(strUS4) to UBound(strUS4)
strNM2 = strUS4(n)
Exit For
Next
'** Translate name into DN:'
Set objTrans = CreateObject("NameTranslate")
objTrans.Init ADS_NAME_INITTYPE_GC, ""
objTrans.Set ADS_NAME_TYPE_NT4, strNTName
strUserDN = objTrans.Get(ADS_NAME_TYPE_1779)
'** Do LDAP bind to object:'
Set objUser = GetObject("LDAP://" & strUserDN)
'** Get full name:'
strUS1 = Mid(strUserDN,4)
strUS2 = Split(strUS1, ",")
For n = LBound(strUS2) to UBound(strUS2)
strNM = strUS2(n)
Exit For
Next
'** If no error, enable or disable user:'
If Err = 0 Then
Const ADS_UF_ACCOUNTDISABLE = 2
intUAC = objUser.Get("userAccountControl")
objUser.Put "userAccountControl", intUAC XOR ADS_UF_ACCOUNTDISABLE
objUser.SetInfo
If intUAC AND ADS_UF_ACCOUNTDISABLE Then
POS = 1
Else
NEG = 1
End If
Else
objShell.Popup UCase(USR) & " was not found. Please try again.", _
5, "Unknown Username", 48
exit sub
End If
'** If no permission, give message:'
If Err = "-2147024891" Then
DENY = 1
objShell.Popup "You can not enable or disable this user.", _
5, "Permission Denied", 48
exit sub
End If
'** If no error, show result:'
If DENY <> 1 Then
If POS = 1 Then
MsgBox UCase(USR) & " were successfully enabled.", _
64, "User enabled by " & strNM2
End If
If NEG = 1 Then
MsgBox UCase(USR) & " were successfully disabled.", _
64, "User disabled by " & strNM2
End If
End If
End Sub
Sub bt1Go_onclick()
'** Declarations:'
Dim OPR, DM, USR, strNTName, strUserDN, strNM, objUser, TNP, EROR, ABS
Dim objNetwork, objShell, objFSO
'** Objects:'
Set objNetwork = CreateObject("WScript.Network")
Set objShell = CreateObject("Wscript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
'** User/Domain:'
OPR = objNetwork.UserName
DM = objNetwork.UserDomain & "\"
'** Type username for the user that needs password change:'
USR = InputBox("Username:", "Create Temporary Active Directory User Password", _
"Write Username Here")
if USR = "" then
exit sub
End if
'** Prevent run-time errors:'
On Error Resume Next
'** NameTranslate constants:'
Const ADS_NAME_INITTYPE_GC = 3
Const ADS_NAME_TYPE_NT4 = 3
Const ADS_NAME_TYPE_1779 = 1
'** Combine the user name and domain name:'
strNTName = DM & USR
strNT2 = DM & OPR
'** Translate operator name into DN:'
Set objTrans2 = CreateObject("NameTranslate")
objTrans2.Init ADS_NAME_INITTYPE_GC, ""
objTrans2.Set ADS_NAME_TYPE_NT4, strNT2
strUserDN2 = objTrans2.Get(ADS_NAME_TYPE_1779)
Set objUser2 = GetObject("LDAP://" & strUserDN2)
strUS3 = Mid(strUserDN2,4)
strUS4 = Split(strUS3, ",")
For n = LBound(strUS4) to UBound(strUS4)
strNM2 = strUS4(n)
Exit For
Next
'** Translate username into DN:'
Set objTrans = CreateObject("NameTranslate")
objTrans.Init ADS_NAME_INITTYPE_GC, ""
objTrans.Set ADS_NAME_TYPE_NT4, strNTName
If Err <> 0 Then
ABS = 1
End If
'** Execute if object is found:'
If ABS <> 1 Then
strUserDN = objTrans.Get(ADS_NAME_TYPE_1779)
'** Do LDAP bind to object:'
Set objUser = GetObject("LDAP://" & strUserDN)
'** Get full name:'
strUS1 = Mid(strUserDN,4)
strUS2 = Split(strUS1, ",")
For n = LBound(strUS2) to UBound(strUS2)
strNM = strUS2(n)
Exit For
Next
'** Assign password and parameters:'
If strNM <> "" Then
TNP = "changeme" & Mid(objFSO.GetTempName,4,4)
objUser.SetPassword TNP
If Err <> 0 Then
EROR = 1
End If
objUser.Put "pwdLastSet", 0
objUser.IsAccountLocked = False
objUser.SetInfo
End If
'** If no error, show new temporary password:'
If EROR <> 1 Then
MsgBox "New temporary password for " & UCase(USR) & " (" & strNM & "):" & _
vbCrLf & vbCrLf & TNP & vbCrLf, 64, "New Password, configured by " & strNM2
End If
End If
'** End if object not found:'
If ABS = 1 Then
MsgBox UCase(USR) & " was not found. Please try again.", _
48, "Unknown Username"
End If
'** If no permission, give message:'
If EROR = 1 Then
MsgBox "You can not change password for this user.", _
48, "Permission Denied"
End If
End Sub
Sub ImportFromExcel
on error resume next
boolEndofFile = False
Dim oDLG
Set oDLG = CreateObject("MSComDlg.CommonDialog")
if err.number > 0 then
err.clear
oDLG = window.prompt("Please enter the path and file name to open.", "D:\your-spreadsheet.xls")
if oDLG <> "" then
globalstrQueryBuilder = ""
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open(oDLG)
intRow = 2
Do Until boolEndofFile
'According to ticket Q__23804616, these are the fields that are in the spreadsheet;
'Emp ID,Seat No,Email ID,Full Name, NT Login,Machine Name
strCell1 = objExcel.Cells(intRow, 1).Value 'Must be the "Employee ID" field
strCell2 = objExcel.Cells(intRow, 2).Value 'Must be the "Seat No" field
strCell3 = objExcel.Cells(intRow, 3).Value 'Must be the "Email Address" field
strCell4 = objExcel.Cells(intRow, 4).Value 'Must be the "Full Name" field
strCell5 = objExcel.Cells(intRow, 5).Value 'Must be the "NT Login" field
strCell6 = objExcel.Cells(intRow, 6).Value 'Must be the "Machine Name" field
if strCell1 & strCell2 & strCell3 & strCell4 & strCell5 & strCell6 = "" then
boolEndofFile = True
else
if NOT IsEmpty(strCell1) then strValue = strValue & "(description=*" & strCell1 & "*)" 'Employee ID
if NOT IsEmpty(strCell2) then strValue = strValue & "(description=*" & strCell2 & "*)" 'Seat No
if NOT IsEmpty(strCell3) then strValue = strValue & "(mail=*" & strCell3 & "*)" 'Email Address
if NOT IsEmpty(strCell4) then strValue = strValue & "(cn=*" & strCell4 & "*)" 'Full Name
if NOT IsEmpty(strCell5) then strValue = strValue & "(samAccountName=*" & strCell5 & "*)" 'NT Login
if NOT IsEmpty(strCell6) then strValue = strValue & "(description=*" & strCell6 & "*)" 'Machine Name
end if
intRow = intRow + 1
Loop
objExcel.Quit
globalstrQueryBuilder = strValue
globalStrSearchField = "(|" & globalstrQueryBuilder & ")"
globalstrSearchBtnPush = "FileOpen"
Submit_Form "FileOpen"
End If
else
With oDLG
.DialogTitle = "Open"
.Filter = "Excel Workbook|*.xls"
.MaxFileSize = 255
.Flags = .Flags Or &H1000 'FileMustExist (OFN_FILEMUSTEXIST)
.ShowOpen
If .FileName <> "" Then
globalstrQueryBuilder = ""
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open(.FileName)
intRow = 2
Do Until boolEndofFile
strCell1 = objExcel.Cells(intRow, 1).Value 'Must be the "Employee ID" field
strCell2 = objExcel.Cells(intRow, 2).Value 'Must be the "Seat No" field
strCell3 = objExcel.Cells(intRow, 3).Value 'Must be the "Email Address" field
strCell4 = objExcel.Cells(intRow, 4).Value 'Must be the "Full Name" field
strCell5 = objExcel.Cells(intRow, 5).Value 'Must be the "NT Login" field
strCell6 = objExcel.Cells(intRow, 6).Value 'Must be the "Machine Name" field
if strCell1 & strCell2 & strCell3 & strCell4 & strCell5 & strCell6 = "" then
boolEndofFile = True
else
if NOT IsEmpty(strCell1) then strValue = strValue & "(description=*" & strCell1 & "*)" 'Employee ID
if NOT IsEmpty(strCell2) then strValue = strValue & "(description=*" & strCell2 & "*)" 'Seat No
if NOT IsEmpty(strCell3) then strValue = strValue & "(mail=*" & strCell3 & "*)" 'Email Address
if NOT IsEmpty(strCell4) then strValue = strValue & "(cn=*" & strCell4 & "*)" 'Full Name
if NOT IsEmpty(strCell5) then strValue = strValue & "(samAccountName=*" & strCell5 & "*)" 'NT Login
if NOT IsEmpty(strCell6) then strValue = strValue & "(description=*" & strCell6 & "*)" 'Machine Name
end if
intRow = intRow + 1
Loop
objExcel.Quit
globalstrQueryBuilder = strValue
globalStrSearchField = "(|" & globalstrQueryBuilder & ")"
globalstrSearchBtnPush = "FileOpen"
Submit_Form "FileOpen"
End If
End With
end if
Set oDLG = Nothing
End Sub
Sub About_OnClick
'Enter names as contibuters increase.
msgbox vbCRLF & "User and Computer Account Control" & vbCRLF & vbCRLF & "Written for Sharatha and contributed by;" & vbCRLF & vbCRLF & vbtab & _
"""rejoinder""" & vbCRLF & vbtab & _
" " & vbCRLF & vbtab & _
" " & vbCRLF & vbtab & _
" " & vbCRLF & vbtab & _
" " & vbCRLF & vbtab
End Sub
Sub RunHTA(NameOfHTA)
Set objShell = CreateObject("Wscript.Shell")
objShell.Run NameOfHTA
End Sub
Sub allowpings
if chk_allowpings.Checked then
boolAllowPing = True
else
boolAllowPing = False
end if
End Sub
Sub LookupLastLogin
if chk_LookupLastLogin.Checked then
boolLookupLastLogin = True
else
boolLookupLastLogin = False
end if
End Sub
Sub TableReports
if chk_TableReports.Checked then
boolTableReports = True
else
boolTableReports = False
end if
End Sub
Sub GetMailboxDetails
on error resume next
strExchangeServerQuery = "winmgmts://" & strEmailServer & "/root/cimv2/applications/exchange"
set serverList = GetObject(strExchangeServerQuery).InstancesOf("ExchangeServerState")
For each ExchangeServer in serverList
strExchangeQuery = "winmgmts://" & ExchangeServer.Name & "/root/MicrosoftExchangeV2"
strExchangeQuery = "winmgmts://" & strEmailServer & "/root/MicrosoftExchangeV2"
Set objMailboxes = GetObject(strExchangeQuery).InstancesOf("Exchange_Mailbox")
For each mailbox in objMailboxes
MailboxList.AddNew
MailboxList("legacyExchangeDN") = mailbox.LegacyDN
MailboxList("mailboxsize") = Round(mailbox.Size / 1024)
MailboxList.Update
Next
Next
MailboxList.MoveFirst
End Sub
Sub MailboxSizeCompare
oDLG = window.prompt("Enter the mailbox size limit in MB.", "1000")
if IsNumeric(oDLG) then
Submit_Form("MailboxSize:" & oDLG)
end if
End Sub
Sub DoCal(elTarget)
sRtn = showModalDialog("Calendar.htm","","center=yes;dialogWidth=160pt;dialogHeight=180pt")
Execute(elTarget & ".value = sRtn")
Detect_Search_Field(elTarget)
End Sub
Function GetOUMembers(OU)
strValue = ""
on error resume next
GroupMembershipDB.Filter = "MemberDistinguishedName LIKE '*OU=" & OU & "*'"
GroupMembershipDB.Sort = "SAMAccountName"
GroupMembershipDB.MoveFirst
Do While Not GroupMembershipDB.EOF
strValue = strValue & "(DistinguishedName=" & GroupMembershipDB.Fields.Item("MemberDistinguishedName").Value & ")"
GroupMembershipDB.MoveNext
Loop
if err.number > 0 then
GetOUMembers = "INVALID"
else
GetOUMembers = "(|" & strValue & ")"
End if
End Function
Function GetComputersForOSQuery(OS)
strValue = ""
strSearchField = "(operatingsystem=*" & OS & "*)"
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
boolFoundRecords = False
for each strDomain in arrDomainNames
' Search entire Active Directory domain.
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(&(objectCategory=computer)" & strSearchField & ")"
' Comma delimited list of attribute values to retrieve.
strAttributes = "cn,operatingsystem"
' Construct the LDAP syntax query.
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 1000
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False
' Run the query.
Set adoRecordset = adoCommand.Execute
' Enumerate the resulting recordset.
strDetails = ""
If Not adoRecordset.EOF Then
boolFoundRecords = True
Do Until adoRecordset.EOF
strValue = strValue & "(info=*" & adoRecordset.Fields("cn").Value & "*)"
adoRecordset.MoveNext
Loop
End if
next
if NOT boolFoundRecords then
GetComputersForOSQuery = "INVALID"
else
GetComputersForOSQuery = "(|" & strValue & ")"
End if
End Function
Function GetComputersForDateCreatedQuery(CreatedDate)
strValue = ""
strWhenCreated = Year(CreatedDate) & Right("0" & Month(CreatedDate), 2) & Right("0" & Day(CreatedDate), 2)
strSearchField = "(whenCreated>=" & strWhenCreated & "000000.0Z)(whenCreated<=" & strWhenCreated & "235959.0Z)"
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
boolFoundRecords = False
for each strDomain in arrDomainNames
' Search entire Active Directory domain.
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(&(objectCategory=computer)" & strSearchField & ")"
' Comma delimited list of attribute values to retrieve.
strAttributes = "cn,operatingsystem"
' Construct the LDAP syntax query.
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 1000
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False
' Run the query.
Set adoRecordset = adoCommand.Execute
' Enumerate the resulting recordset.
strDetails = ""
If Not adoRecordset.EOF Then
boolFoundRecords = True
Do Until adoRecordset.EOF
strValue = strValue & "(info=*" & adoRecordset.Fields("cn").Value & "*)"
adoRecordset.MoveNext
Loop
End if
next
if NOT boolFoundRecords then
GetComputersForDateCreatedQuery = "INVALID"
else
GetComputersForDateCreatedQuery = "(|" & strValue & ")"
End if
End Function
Function GetComputersBasedOnOU(OU)
strValue = ""
strSearchField = "(distinguishedName=*)"
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
boolFoundRecords = False
for each strDomain in arrDomainNames
' Search entire Active Directory domain.
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(&(objectCategory=computer)" & strSearchField & ")"
' Comma delimited list of attribute values to retrieve.
strAttributes = "cn,distinguishedName"
' Construct the LDAP syntax query.
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 1000
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False
' Run the query.
Set adoRecordset = adoCommand.Execute
' Enumerate the resulting recordset.
strDetails = ""
If Not adoRecordset.EOF Then
boolFoundRecords = True
Do Until adoRecordset.EOF
if InStr(adoRecordset.Fields("distinguishedName").Value,OU) > 0 then
strValue = strValue & "(info=*" & adoRecordset.Fields("cn").Value & "*)"
End if
adoRecordset.MoveNext
Loop
End if
next
if NOT boolFoundRecords then
GetComputersBasedOnOU = "INVALID"
else
GetComputersBasedOnOU = "(|" & strValue & ")"
End if
End Function
Sub txt_filtersecuritygroup_onKeyUP
on error resume next
if txt_filtersecuritygroup.Value <> "" then
Detect_Search_Field "txt_filtersecuritygroup"
Set objlst_groupnames = document.getElementById( "lst_groupnames" )
objlst_groupnames.ListItems.Clear
GroupMembershipDB.Filter = "samaccountname LIKE '*" & txt_filtersecuritygroup.Value & "*'"
GroupMembershipDB.Sort = "SAMAccountName"
GroupMembershipDB.MoveFirst
strLastGroupDN = ""
Do Until GroupMembershipDB.EOF
strNTName = GroupMembershipDB.Fields.Item("samaccountname").Value
strGroupType = GroupMembershipDB.Fields.Item("samaccounttype").Value
strPrimary = GroupMembershipDB.Fields.Item("PrimaryGroupToken").Value
strdistinguishedName = GroupMembershipDB.Fields.Item("distinguishedName").Value
intNumberOfMembers = dicGroupNumbers.Item(strdistinguishedName)
if strLastGroupDN <> strdistinguishedName then
Select Case strGroupType
Case "[GSG]", "[LSG]", "[USG]", "[Unknown]"
Set objListItem = objlst_groupnames.ListItems.Add
objListItem.Text = strNTName
objListItem.ListSubItems.Add.Text = intNumberOfMembers
objListItem.ListSubItems.Add.Text = strGroupType
objListItem.ListSubItems.Add.Text = strdistinguishedName
objListItem.ListSubItems.Add.Text = strPrimary
End Select
strLastGroupDN = strdistinguishedName
End if
GroupMembershipDB.MoveNext
Loop
span_GroupMembership.InnerHTML = "(" & lst_groupnames.ListItems.Count & ")"
end if
End Sub
Sub txt_filterdgmembership_onKeyUP
on error resume next
if txt_filterdgmembership.Value <> "" then
Detect_Search_Field "txt_filterdgmembership"
Set objlst_dgnames = document.getElementById( "lst_dgnames" )
objlst_dgnames.ListItems.Clear
GroupMembershipDB.Filter = "samaccountname LIKE '*" & txt_filterdgmembership.Value & "*'"
GroupMembershipDB.Sort = "SAMAccountName"
GroupMembershipDB.MoveFirst
strLastGroupDN = ""
Do Until GroupMembershipDB.EOF
strGroupType = GroupMembershipDB.Fields.Item("samaccounttype").Value
strNTName = GroupMembershipDB.Fields.Item("samaccountname").Value
strPrimary = GroupMembershipDB.Fields.Item("PrimaryGroupToken").Value
strdistinguishedName = GroupMembershipDB.Fields.Item("distinguishedName").Value
intNumberOfMembers = dicGroupNumbers.Item(strdistinguishedName)
if strLastGroupDN <> strdistinguishedName then
Select Case strGroupType
Case "[GDG]", "[LDG]", "[UDG]"
Set objListItem = objlst_dgnames.ListItems.Add
objListItem.Text = strNTName
objListItem.ListSubItems.Add.Text = intNumberOfMembers
objListItem.ListSubItems.Add.Text = strGroupType
objListItem.ListSubItems.Add.Text = strdistinguishedName
objListItem.ListSubItems.Add.Text = strPrimary
End Select
strLastGroupDN = strdistinguishedName
End if
GroupMembershipDB.MoveNext
Loop
span_groupmembership.InnerHTML = "(" & lst_dgnames.ListItems.Count & ")"
end if
End Sub
Sub txt_filtermanagerlist_onKeyUP
on error resume next
if txt_filtermanagerlist.Value <> "" then
Detect_Search_Field "txt_filtermanagerlist"
Set objlst_managerlist = document.getElementById( "lst_managerlist" )
objlst_managerlist.ListItems.Clear
for each Manager in dicManagerList
if InStr(UCase(Manager),UCase(txt_filtermanagerlist.Value)) then
Set objListItem = objlst_managerlist.ListItems.Add
objListItem.Text = mid(Manager,4,instr(Manager,",")-4)
objListItem.ListSubItems.Add.Text = int(dicManagerList.Item(Manager))
objListItem.ListSubItems.Add.Text = Manager
end if
next
span_managerlist.InnerHTML = "(" & lst_managerlist.ListItems.Count & ")"
end if
End Sub
Function GetMailboxStore(MailboxStore)
if MailboxStore <> "" OR NOT IsNull(MailboxStore) then
arrMailboxStoreString = Split(MailboxStore,"CN=")
GetMailboxStore = replace(arrMailboxStoreString(2),",","")
else
GetMailboxStore = ""
End if
End Function
Sub FillDomainComputers
On Error Resume Next
Const ADS_SCOPE_SUBTREE = 2
Set objlst_domaincomputers = document.getElementById( "lst_domaincomputers" )
objlst_domaincomputers.ListItems.Clear
Set objRootDSE = GetObject("LDAP://RootDSE")
strDNSDomain = objRootDSE.Get("defaultNamingContext")
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
adoCommand.Properties("Page Size") = 1000
adoCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
adoCommand.CommandText = "SELECT ADsPath FROM 'LDAP://" & strDNSDomain & "' WHERE objectCategory='organizationalUnit'"
Set objRecordSet = adoCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Set objOU = GetObject(objRecordSet.Fields("ADsPath").Value)
if InStr(objOU.ADsPath,"OU=") > 0 then
strOU = mid(objOU.ADsPath, InStr(objOU.ADsPath,"OU=")+3)
strOU = mid(strOU, 1,InStr(strOU,",")-1)
else
strOU = mid(objOU.ADsPath, InStr(objOU.ADsPath,"CN=")+3)
strOU = mid(strOU, 1,InStr(strOU,",")-1)
end if
objOU.Filter = Array("Computer")
For Each objItem in objOU
strCN = objItem.CN
strDN = objItem.distinguishedName
DomainComputersDB.AddNew
DomainComputersDB("CN") = strCN
DomainComputersDB("DistinguishedName") = strDN
DomainComputersDB.Update
Set objListItem = objlst_domaincomputers.ListItems.Add
objListItem.Text = strCN
objListItem.ListSubItems.Add.Text = strOU
objListItem.ListSubItems.Add.Text = strDN
Next
objRecordSet.MoveNext
Loop
span_domaincomputers.InnerHTML = "(" & lst_domaincomputers.ListItems.Count & ")"
End Sub
Sub lst_domaincomputers_onDblClick
strComputer = lst_domaincomputers.SelectedItem.Text
txt_notes.Value = strComputer
Detect_Search_Field "txt_notes"
Submit_Form "Main"
End Sub
Sub txt_filterdomaincomputers_onKeyUP
on error resume next
if txt_filterdomaincomputers.Value <> "" then
Detect_Search_Field "txt_filterdomaincomputers"
Set objlst_domaincomputers = document.getElementById( "lst_domaincomputers" )
objlst_domaincomputers.ListItems.Clear
intDomainComputers = 0
DomainComputersDB.Filter = "CN LIKE '*" & txt_filterdomaincomputers.Value & "*'"
DomainComputersDB.Sort = "CN"
DomainComputersDB.MoveFirst
Do Until DomainComputersDB.EOF
strCN = DomainComputersDB.Fields.Item("CN").Value
strDN = DomainComputersDB.Fields.Item("DistinguishedName").Value
Set objListItem = objlst_domaincomputers.ListItems.Add
objListItem.Text = strCN
objListItem.ListSubItems.Add.Text = strDN
DomainComputersDB.MoveNext
Loop
span_domaincomputers.InnerHTML = "(" & lst_domaincomputers.ListItems.Count & ")"
else
populatedomaincomputers
end if
End Sub
Sub populatedomaincomputers
on error resume next
Set objlst_domaincomputers = document.getElementById( "lst_domaincomputers" )
objlst_domaincomputers.ListItems.Clear
intDomainComputers = 0
DomainComputersDB.Filter = ""
DomainComputersDB.Sort = "CN"
DomainComputersDB.MoveFirst
Do Until DomainComputersDB.EOF
strCN = DomainComputersDB.Fields.Item("CN").Value
strDN = DomainComputersDB.Fields.Item("DistinguishedName").Value
Set objListItem = objlst_domaincomputers.ListItems.Add
objListItem.Text = strCN
objListItem.ListSubItems.Add.Text = strDN
DomainComputersDB.MoveNext
Loop
span_domaincomputers.InnerHTML = "(" & lst_domaincomputers.ListItems.Count & ")"
End Sub
Sub ResetComputerPassword
if txt_notes.value <> "" then
DomainComputersDB.Filter = "CN='" & txt_notes.value & "'"
DomainComputersDB.MoveFirst
strLDAP = "LDAP://" & DomainComputersDB.Fields.Item("DistinguishedName").Value
set objComputer = GetObject(strLDAP)
objComputer.SetPassword txt_notes.value & "$"
else
msgbox "Please enter a valid computer name."
End if
End Sub
Sub SaveList(ListBox)
on error resume next
Dim oDLG
Set oDLG=CreateObject("MSComDlg.CommonDialog")
if err.number > 0 then
err.clear
oDLG = window.prompt("Please enter the path and file name to save.", "D:\HTA-Result-Set.csv")
if oDLG <> "" then
strAnswer = oDLG
End If
else
With oDLG
.DialogTitle = "Save As"
.Filter="CSV File|*.csv"
.MaxFileSize = 255
.ShowSave
If .FileName <> "" Then
strAnswer = .FileName
End If
End With
end if
Set oDLG=Nothing
If IsNull(strAnswer) or strAnswer = "" Then
'Do nothing
Else
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(strAnswer) = True Then
objFSO.DeleteFile strAnswer, True
Else
' do nothing
end if
Set objFile = objFSO.CreateTextFile(strAnswer, True)
Set objListBox = document.getElementById(ListBox)
strValue = """" & objListBox.ColumnHeaders(1).Text & """"
for n = 2 to objListBox.ColumnHeaders.Count
strValue = strValue & ",""" & objListBox.ColumnHeaders(n).Text & """"
next
objFile.write strValue & vbCRLF
for n = 1 to objListBox.ListItems.Count
strValue = """" & objListBox.ListItems(n).Text & """"
for y = 1 to objListBox.ListItems(n).ListSubItems.Count
strValue = strValue & ",""" & objListBox.ListItems(n).ListSubItems(y).Text & """"
next
objFile.write strValue & vbCRLF
next
objFile.Close
MsgBox "Saved."
End If
End Sub
Sub Report_ManagerAndEmployees
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
Set objManagers = CreateObject("Scripting.Dictionary")
for each strDomain in arrDomainNames
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(&(objectCategory=person)(objectClass=user))"
' Comma delimited list of attribute values to retrieve.
strAttributes = "samAccountName,cn,Manager"
' Construct the LDAP syntax query.
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 1000
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False
' Run the query.
Set adoRecordset = adoCommand.Execute
' Enumerate the resulting recordset.
Do Until adoRecordset.EOF
' Retrieve values and display.
strUserName = Replace(adoRecordset.Fields("cn").Value, "CN=", "")
If Len(adoRecordset.Fields("Manager").Value) > 0 Then
strManager = Split(replace(adoRecordset.Fields("Manager").Value,"CN=",""), ",")(0)
Else
strManager = "<No Manager>"
End If
If objManagers.Exists(strManager) = False Then
objManagers.Add strManager, strUserName
Else
objManagers(strManager) = objManagers(strManager) & ";" & strUserName
End If
' Move to the next record in the recordset.
adoRecordset.MoveNext
Loop
Next
' Clean up.
adoRecordset.Close
Set adoRecordset = Nothing
adoConnection.Close
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objWB = objExcel.workbooks.add
Set objSheet = objWB.Sheets(1)
objSheet.Rows("1:1").font.Bold = True
objSheet.Cells(1, "A").Value = "Manager"
objSheet.Cells(1, "B").Value = "Employee"
intRow = 2
For Each strManager In objManagers
objSheet.Cells(intRow, "A").Value = strManager
intRow = intRow + 1
arrEmployees = Split(objManagers(strManager), ";")
For Each strEmployee In arrEmployees
objSheet.Cells(intRow, "B").Value = strEmployee
intRow = intRow + 1
Next
intRow = intRow + 1
Next
End Sub
</script>
<script language ='javascript' for ='lst_groupnames' event ='ColumnClick(ColumnHeader)'>
if(ColumnHeader.SubItemIndex == lst_groupnames.SortKey)
{
if(lst_groupnames.SortOrder == 0) lst_groupnames.SortOrder = 1
else lst_groupnames.SortOrder = 0
}
else
{
lst_groupnames.SortKey = ColumnHeader.SubItemIndex
if(lst_groupnames.SortOrder == 0) lst_groupnames.SortOrder = 1
else lst_groupnames.SortOrder == 0
}
</script>
<script language ='javascript' for ='lst_groupnames' event ='DblClick'>
Submit_Form('Group')
</script>
<script language ='javascript' for ='lst_dgnames' event ='ColumnClick(ColumnHeader)'>
if(ColumnHeader.SubItemIndex == lst_dgnames.SortKey)
{
if(lst_dgnames.SortOrder == 0) lst_dgnames.SortOrder = 1
else lst_dgnames.SortOrder = 0
}
else
{
lst_dgnames.SortKey = ColumnHeader.SubItemIndex
if(lst_dgnames.SortOrder == 0) lst_dgnames.SortOrder = 1
else lst_dgnames.SortOrder == 0
}
</script>
<script language ='javascript' for ='lst_dgnames' event ='DblClick'>
Submit_Form('DistributionGroup')
</script>
<script language ='javascript' for ='lst_domaincomputers' event ='ColumnClick(ColumnHeader)'>
if(ColumnHeader.SubItemIndex == lst_domaincomputers.SortKey)
{
if(lst_domaincomputers.SortOrder == 0) lst_domaincomputers.SortOrder = 1
else lst_domaincomputers.SortOrder = 0
}
else
{
lst_domaincomputers.SortKey = ColumnHeader.SubItemIndex
if(lst_domaincomputers.SortOrder == 0) lst_domaincomputers.SortOrder = 1
else lst_domaincomputers.SortOrder == 0
}
</script>
<script language ='javascript' for ='lst_domaincomputers' event ='DblClick'>
lst_domaincomputers_onDblClick()
</script>
<script language ='javascript' for ='lst_managerlist' event ='ColumnClick(ColumnHeader)'>
if(ColumnHeader.SubItemIndex == lst_managerlist.SortKey)
{
if(lst_managerlist.SortOrder == 0) lst_managerlist.SortOrder = 1
else lst_managerlist.SortOrder = 0
}
else
{
lst_managerlist.SortKey = ColumnHeader.SubItemIndex
if(lst_managerlist.SortOrder == 0) lst_managerlist.SortOrder = 1
else lst_managerlist.SortOrder == 0
}
</script>
<script language ='javascript' for ='lst_managerlist' event ='DblClick'>
Submit_Form('ManagerList')
</script>
<script language ='javascript' for ='lst_subordinates' event ='ColumnClick(ColumnHeader)'>
if(ColumnHeader.SubItemIndex == lst_subordinates.SortKey)
{
if(lst_subordinates.SortOrder == 0) lst_subordinates.SortOrder = 1
else lst_subordinates.SortOrder = 0
}
else
{
lst_subordinates.SortKey = ColumnHeader.SubItemIndex
if(lst_subordinates.SortOrder == 0) lst_subordinates.SortOrder = 1
else lst_subordinates.SortOrder == 0
}
</script>
<script language ='javascript' for ='lst_subordinates' event ='DblClick'>
Submit_Form('Subordinate')
</script>
<STYLE TYPE="text/css">
<!--
body {background-color: menu;color: menutext;}
td {font-family: MS Sans Serif;font-size: 8pt;}
input {font-family: MS Sans Serif;font-size: 8pt;}
button {font-family: MS Sans Serif;font-size: 8pt;}
option {font-family: MS Sans Serif;font-size: 8pt;}
select {font-family: MS Sans Serif;font-size: 8pt;}
.submenu {position:absolute;top=35;
background-color:Menu;
border="1px outset";}
.MenuIn {border:"1px inset";cursor:default;}
.Menuover {border:"1px outset";cursor:default;}
.Menuout {}
.Submenuover {background-color:highlight;color:highlighttext;cursor:default;}
.Submenuout {background-color:Menu;color:MenuText;cursor:default;}
.HideFromGUI {display:none;}
-->
</STYLE>
<body>
<!-- Main menu -->
<TABLE id=MenuTable height=25><TR>
<TD onclick='ShowSubMenu Me,MyFileMenu'
onmouseover='MenuOver Me,MyFileMenu'
onmouseout='MenuOut Me'> Query </TD>
<TD >|</TD>
<TD onclick='ShowSubMenu Me,MyEditMenu'
onmouseover='MenuOver Me,MyEditMenu'
onmouseout='MenuOut Me'> Reports </TD>
<TD >|</TD>
<TD onclick='ShowSubMenu Me,QueryBuilderMenu'
onmouseover='MenuOver Me,QueryBuilderMenu'
onmouseout='MenuOut Me'> Query Builder </TD>
<TD >|</TD>
<TD onclick='ShowSubMenu Me,ToolsMenu'
onmouseover='MenuOver Me,ToolsMenu'
onmouseout='MenuOut Me'> Tools </TD>
<TD >|</TD>
<TD > Checkbox Profile <select id="lst_chkprofiles" name="lst_chkprofiles">
</select>
</TD>
<!-- Main menu, Checkbox profile tools -->
<TD onclick='AddToCheckboxProfile'
onmouseover='MenuOver Me,MyFileMenu'
onmouseout='MenuOut Me' NOWRAP> [+]Add</TD>
<TD onclick='DeleteFromCheckboxProfile'
onmouseover='MenuOver Me,MyFileMenu'
onmouseout='MenuOut Me' NOWRAP> [-]Delete</TD>
<TD onclick='ModifyCurrentCheckboxProfile'
onmouseover='MenuOver Me,MyFileMenu'
onmouseout='MenuOut Me' NOWRAP> [!]Modify</TD>
<TD >|</TD>
<TD onclick='About_OnClick'
onmouseover='MenuOver Me,MyFileMenu'
onmouseout='MenuOut Me'> About</TD>
<TD >|</TD>
<TD onclick="HideMenu" width="100%" border="2"></TD>
</TR></TABLE>
<!-- Drop down for QUery -->
<TABLE ID=MyFileMenu class=submenu style="left=10;display:none;">
<TR><TD onclick="HideMenu:open"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Open</TD></TR>
<TR><TD onclick="HideMenu:importfromexcel"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Import from Excel</TD></TR>
<TR><TD onclick="HideMenu:save"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Save</TD></TR>
<TR><TD onclick="HideMenu:saveAs"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Save As</TD></TR>
<TR><TD><HR></TD></TR>
<TR><TD onclick="HideMenu:window.close"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Quit</TD></TR>
</TABLE>
<!-- Drop down for Reports -->
<TABLE ID=MyEditMenu class=submenu style="left=50;display:none;">
<TR><TD onclick="HideMenu:Email_This_Record"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Email This Record</TD></TR>
<TR><TD onclick="HideMenu:Email_All_Records"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Email All Records</TD></TR>
<TR><TD onclick="HideMenu:Email_As_Attachment"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Email as Attachment</TD></TR>
<TR><TD><HR></TD></TR>
<TR><TD onclick="HideMenu:RunScript"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Save to</TD></TR>
<TR><TD><HR></TD></TR>
<TR><TD onclick="HideMenu:ClickTheSpecialReportButton"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> All Disabled Users</TD></TR>
<TR><TD onclick="HideMenu:SpecialReportDisabledUsersToday"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Disabled Users Last Modified Today</TD></TR>
<TR><TD onclick="HideMenu:SpecialReportDisabledUsersSomeDay"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Disabled Users Last Modified...</TD></TR>
<TR><TD onclick="HideMenu:SpecialReportNewUsersToday"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> New Users Created Today</TD></TR>
<TR><TD><HR></TD></TR>
<TR><TD onclick="HideMenu:Submit_Form('Logon:7')"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Not logged in for 1 week</TD></TR>
<TR><TD onclick="HideMenu:Submit_Form('Logon:30')"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Not logged in for 1 month</TD></TR>
<TR><TD onclick="HideMenu:Submit_Form('Logon:60')"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Not logged in for 2 months</TD></TR>
<TR><TD><HR></TD></TR>
<TR><TD onclick="HideMenu:MailboxSizeCompare"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Users with mailbox size over...</TD></TR>
<TR><TD><HR></TD></TR>
<TR><TD onclick="HideMenu:Report_ManagerAndEmployees"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Managers and Employees</TD></TR>
</TABLE>
<!-- Drop down for Query Builder -->
<TABLE ID=QueryBuilderMenu class=submenu style="left=97;display:none;">
<TR><TD onclick="HideMenu:AddToQueryBuilder"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Add recent query to Query Builder</TD></TR>
<TR><TD onclick="HideMenu:QueryBuilderRecorder"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Query Builder Recorder<input type="checkbox" id="chk_qbrecorder" name="chk_qbrecorder"></TD></TR>
<TR><TD onclick="HideMenu:ViewQueryBuilder"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> View Query Builder</TD></TR>
<TR><TD onclick="HideMenu:RunQueryBuilder"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Run Query Builder</TD></TR>
<TR><TD onclick="HideMenu:ClearQueryBuilder"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Clear Query Builder</TD></TR>
</TABLE>
<!-- Drop down for Tools -->
<TABLE ID=ToolsMenu class=submenu style="left=170;display:none;">
<TR><TD onclick="HideMenu:allowpings"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Allow Pings<input type="checkbox" id="chk_allowpings" name="chk_allowpings"></TD></TR>
<TR><TD onclick="HideMenu:LookupLastLogin"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Look up last login<input type="checkbox" id="chk_LookupLastLogin" name="chk_LookupLastLogin"></TD></TR>
<TR><TD onclick="HideMenu:tablereports"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Invert emails to table format<input type="checkbox" id="chk_tablereports" name="chk_tablereports"></TD></TR>
<TR><TD><HR></TD></TR>
<TR><TD onclick="HideMenu:RunHTA('HTA1.HTA')"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Launch HTA 1</TD></TR>
<TR><TD onclick="HideMenu:RunHTA('HTA2.HTA')"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Launch HTA 2</TD></TR>
<TR><TD onclick="HideMenu:RunHTA('Q_23768297.hta')"
onmouseover='Submenuover Me'
onmouseout='Submenuout Me'> Add Users to Groups</TD></TR>
</TABLE>
<hr>
<table width="100%" border="0" onclick="HideMenu">
<tr>
<td align="left" colspan="2" valign="top">
<table border="0" padding="1">
<tr>
<td>
<fieldset>
<LEGEND>Email Settings</LEGEND>
<table border="0">
<tr><td>To:</td><td><button onclick="ShowDialogTo">Resolve</button></td><td><input type="text" id="txt_EmailTo" name="txt_EmailTo" size="50"><input type="hidden" id="txt_EmailToHidden" name="txt_EmailToHidden" size="50"><br></td></td><td rowspan="4" valign="top">Email Body:</td><td rowspan="3" valign="top"><textarea id="txt_EmailBody" name="txt_EmailBody" rows=5 cols=40></TEXTAREA></td></tr>
<tr><td>CC:</td><td><button onclick="ShowDialogCC">Resolve</button></td><td><input type="text" id="txt_EmailCC" name="txt_EmailCC" size="50"><input type="hidden" id="txt_EmailCCHidden" name="txt_EmailCCHidden" size="50"><br></td></tr>
<tr><td>Email Subject:</td><td></td><td><select id="txt_EmailSubject" name="txt_EmailSubject"></select></td></tr>
</table>
</fieldset>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="left" valign="top" width="38%">
<table border="0">
<tr>
<td>
</td>
<td>
<input type="checkbox" id="chk_selectall" name="chk_selectall" checked=True onclick="vbs:SelectAllCheck">Select/Deselect All
</td>
</tr>
<tr id=tr_seatno>
<td>
Seat No:
</td>
<td>
<input type="checkbox" id="chk_seatno" name="chk_seatno" checked=True><input type="text" size="40" id="txt_seatno" name="txt_seatno" onkeypress="vbs:Detect_Search_Field('txt_seatno')">
</td>
</tr>
<tr id=tr_replacementseatno>
<td>
Replacement Seat No:
</td>
<td>
<input type="checkbox" id="chk_replacementseatno" name="chk_replacementseatno" checked=True><input type="text" size="40" id="txt_replacementseatno" name="txt_replacementseatno">
</td>
</tr>
<tr id=tr_building>
<td>
Building:
</td>
<td>
<input type="checkbox" id="chk_building" name="chk_building" checked=True><input type="text" size="40" id="txt_building" name="txt_building" onkeypress="vbs:Detect_Search_Field('txt_building')">
</td>
</tr>
<tr id=tr_extensionno>
<td>
Extension No:
</td>
<td>
<input type="checkbox" id="chk_extensionno" name="chk_extensionno" checked=True><input type="text" size="40" id="txt_extensionno" name="txt_extensionno" onkeypress="vbs:Detect_Search_Field('txt_extensionno')">
</td>
</tr>
<tr id=tr_empid>
<td>
Emp ID:
</td>
<td>
<input type="checkbox" id="chk_empid" name="chk_empid" checked=True><input type="text" size="10" id="txt_empid" name="txt_empid" onkeypress="vbs:Detect_Search_Field('txt_empid')">
</td>
</tr>
<tr id=tr_department>
<td>
Department:
</td>
<td>
<input type="checkbox" id="chk_department" name="chk_department" checked=True><input type="text" size="50" id="txt_department" name="txt_department" onkeypress="vbs:Detect_Search_Field('txt_department')">
</td>
</tr>
<tr id=tr_designation>
<td>
Designation:
</td>
<td>
<input type="checkbox" id="chk_designation" name="chk_designation" checked=True><input type="text" size="50" id="txt_designation" name="txt_designation" onkeypress="vbs:Detect_Search_Field('txt_designation')">
</td>
</tr>
<tr id=tr_name>
<td>
User Name:
</td>
<td>
<input type="checkbox" id="chk_name" name="chk_name" checked=True><input type="text" size="40" id="txt_name" name="txt_name" onkeypress="vbs:Detect_Search_Field('txt_name')">
<span id="span_userorcontact">
</span>
</td>
</tr>
<tr id=tr_loginname>
<td>
Login Name:
</td>
<td>
<input type="checkbox" id="chk_loginname" name="chk_loginname" checked=True><input type="text" size="40" id="txt_loginname" name="txt_loginname" onkeypress="vbs:Detect_Search_Field('txt_loginname')">
<span id="span_enabled">
</span>
</td>
</tr>
<tr id=tr_email>
<td>
Email Address:
</td>
<td>
<input type="checkbox" id="chk_email" name="chk_email" checked=True><input type="text" size="50" id="txt_email" name="txt_email" onkeypress="vbs:Detect_Search_Field('txt_email')">
</td>
</tr>
<tr id=tr_mailboxsize>
<td>
Mailbox Size (MB):
</td>
<td>
<input type="checkbox" id="chk_mailboxsize" name="chk_mailboxsize" checked=True><input type="text" size="20" id="txt_mailboxsize" name="txt_mailboxsize" onkeypress="vbs:Detect_Search_Field('txt_mailboxsize')">
</td>
</tr>
<tr id=tr_mailboxstore>
<td>
Mailbox Store:
</td>
<td>
<input type="checkbox" id="chk_mailboxstore" name="chk_mailboxstore" checked=True><input type="text" size="50" id="txt_mailboxstore" name="txt_mailboxstore" onkeypress="vbs:Detect_Search_Field('txt_mailboxstore')">
</td>
</tr>
<tr id=tr_mobileno>
<td>
Mobile Number:
</td>
<td>
<input type="checkbox" id="chk_mobileno" name="chk_mobileno" checked=True><input type="text" size="20" id="txt_mobileno" name="txt_mobileno" onkeypress="vbs:Detect_Search_Field('txt_mobileno')">
</td>
</tr>
<tr id=tr_company>
<td>
Company:
</td>
<td>
<input type="checkbox" id="chk_company" name="chk_company" checked=True><input type="text" size="20" id="txt_company" name="txt_company" onkeypress="vbs:Detect_Search_Field('txt_company')">
</td>
</tr>
<tr id=tr_address>
<td>
Address:
</td>
<td>
<input type="checkbox" id="chk_address" name="chk_address" checked=True><input type="text" size="20" id="txt_address" name="txt_address" onkeypress="vbs:Detect_Search_Field('txt_address')">
</td>
</tr>
<tr id=tr_city>
<td>
City:
</td>
<td>
<input type="checkbox" id="chk_city" name="chk_city" checked=True><input type="text" size="20" id="txt_city" name="txt_city" onkeypress="vbs:Detect_Search_Field('txt_city')">
</td>
</tr>
<tr id=tr_state>
<td>
State:
</td>
<td>
<input type="checkbox" id="chk_state" name="chk_state" checked=True><input type="text" size="20" id="txt_state" name="txt_state" onkeypress="vbs:Detect_Search_Field('txt_state')">
</td>
</tr>
<tr id=tr_zipcode>
<td>
Zip Code:
</td>
<td>
<input type="checkbox" id="chk_zipcode" name="chk_zipcode" checked=True><input type="text" size="20" id="txt_zipcode" name="txt_zipcode" onkeypress="vbs:Detect_Search_Field('txt_zipcode')">
</td>
</tr>
<tr id=tr_country>
<td>
Country:
</td>
<td>
<input type="checkbox" id="chk_country" name="chk_country" checked=True><input type="text" size="20" id="txt_country" name="txt_country" onkeypress="vbs:Detect_Search_Field('txt_country')">
  Must search by 2 letter country code
</td>
</tr>
<tr id=tr_homephone>
<td>
Home Phone:
</td>
<td>
<input type="checkbox" id="chk_homephone" name="chk_homephone" checked=True><input type="text" size="20" id="txt_homephone" name="txt_homephone" onkeypress="vbs:Detect_Search_Field('txt_homephone')">
</td>
</tr>
<tr id=tr_manager>
<td>
Manager:
</td>
<td>
<input type="checkbox" id="chk_manager" name="chk_manager" checked=True><input type="hidden" size="20" id="txt_manager" name="txt_manager"><input type="text" size="20" id="txt_managerseen" name="txt_managerseen" onkeypress="vbs:Detect_Search_Field('txt_managerseen')">
</td>
</tr>
<tr id=tr_whencreated>
<td>
Date Created:
</td>
<td>
<input type="checkbox" id="chk_whencreated" name="chk_whencreated" checked=True><input type="text" size="40" id="txt_whencreated" name="txt_whencreated" onkeypress="vbs:Detect_Search_Field('txt_whencreated')"><input type=button value="Pick" onclick="DoCal('txt_whencreated')">
</td>
</tr>
<tr id=tr_oupathuser>
<td>
OU Path:
</td>
<td>
<input type="checkbox" id="chk_oupathuser" name="chk_oupathuser" checked=True><input type="text" size="50" id="txt_oupathuser" name="txt_oupathuser" onkeypress="vbs:Detect_Search_Field('txt_oupathuser')">
</td>
</tr>
<tr id=tr_lastlogintimestamp>
<td>
Last Login:
</td>
<td>
<input type="checkbox" id="chk_lastlogintimestamp" name="chk_lastlogintimestamp" checked=True><input type="text" size="50" id="txt_lastlogintimestamp" name="txt_lastlogintimestamp" onkeypress="vbs:Detect_Search_Field('txt_lastlogintimestamp')">
</td>
</tr>
<tr>
<td colspan="2" align="center">
<br>Showing record 
<span id="span_currentrecord">
0
</span>
of
<span id="span_totalrecords">
0
</span>
<br><br>
<input type="button" value='||< First' name='btnFirstEvent' onClick='vbs:First_Event'>
<input type="button" value='<< Previous' name='btnPreviousEvent' onClick='vbs:Previous_Event'>
<input type="button" value='Next >>' name='btnNextEvent' onClick='vbs:Next_Event'>
<input type="button" value='Last >||' name='btnLastEvent' onClick='vbs:Last_Event'><br><br>
<input type="button" value='Email this record' name='btnEmailThisRecord' onClick='vbs:Email_This_Record'>
<input type="button" value='Email all records' name='btnEmailAllRecords' onClick='vbs:Email_All_Records'>
<input type="button" value='Email as attachment' name='btnEmailAsAttachment' onClick='vbs:Email_As_Attachment'><br><br>
<input type="button" value='Clear Form' name='btnClearForm' onClick='vbs:Clear_Form("resetGroupLists")'>
<input type="submit" value="Submit" name="btn_submit" onClick="vbs:Submit_Form('Main')">
<input id="runbutton" class="button" type="button" value="Save to" name="run_button" onClick="Runscript">
<input id="runbutton" class="button" type="button" value="Change PWD" name="bt1go">
<input id="runbutton" class="button" type="button" value="Enable/Disable User" name="bt2go">
</td>
</tr>
</table>
</td>
<td align="left" valign="top" width="31%">
<fieldset>
<LEGEND>Computer Information</LEGEND>
<table>
<tr id=tr_notes>
<td valign="top">
Machine Name:
</td>
<td>
<input type="checkbox" id="chk_notes" name="chk_notes" checked=True><input type="text" size="40" id="txt_notes" name="txt_notes" onkeypress="vbs:Detect_Search_Field('txt_notes')"><input type="button" value='Reset' name='btnResetComputerPassword' onClick='vbs:ResetComputerPassword'>
<br>IP: <span id="span_computerip"> </span><br>
Status: <span id="span_computeronline"> </span>
</td>
</tr>
<tr id=tr_computerserialno>
<td>
Serial No:
</td>
<td>
<input type="checkbox" id="chk_computerserialno" name="chk_computerserialno" checked=True><input type="text" size="40" id="txt_computerserialno" name="txt_computerserialno" onkeypress="vbs:Detect_Search_Field('txt_computerserialno')">
</td>
</tr>
<tr id=tr_replacedmachine>
<td>
Replaced Machine:
</td>
<td>
<input type="checkbox" id="chk_replacedmachine" name="chk_replacedmachine" checked=True><input type="text" size="40" id="txt_replacedmachine" name="txt_replacedmachine">
</td>
</tr>
<tr id=tr_replacedcomputerserialno>
<td>
Replaced Serial No:
</td>
<td>
<input type="checkbox" id="chk_replacedcomputerserialno" name="chk_replacedcomputerserialno" checked=True><input type="text" size="40" id="txt_replacedcomputerserialno" name="txt_replacedcomputerserialno">
</td>
</tr>
<tr id=tr_oupathcomputer>
<td>
OU Path:
</td>
<td>
<input type="checkbox" id="chk_oupathcomputer" name="chk_oupathcomputer" checked=True><input type="text" size="40" id="txt_oupathcomputer" name="txt_oupathcomputer" onkeypress="vbs:Detect_Search_Field('txt_oupathcomputer')">
</td>
</tr>
<tr id=tr_computeros>
<td>
Computer OS:
</td>
<td>
<input type="checkbox" id="chk_computeros" name="chk_computeros" checked=True><input type="text" size="19" id="txt_computeros" name="txt_computeros" onkeypress="vbs:Detect_Search_Field('txt_computeros')">
<input type="text" size="18" id="txt_computerservicepack" name="txt_computerservicepack" onkeypress="vbs:Detect_Search_Field('txt_computerservicepack')">
</td>
</tr>
<tr id=tr_computerdescription>
<td>
Description:
</td>
<td>
<input type="checkbox" id="chk_computerdescription" name="chk_computerdescription" checked=True><input type="text" size="40" id="txt_computerdescription" name="txt_computerdescription" onkeypress="vbs:Detect_Search_Field('txt_computerdescription')">
</td>
</tr>
<tr id=tr_computercreated>
<td>
Created:
</td>
<td>
<input type="checkbox" id="chk_computercreated" name="chk_computercreated" checked=True><input type="text" size="40" id="txt_computercreated" name="txt_computercreated" onkeypress="vbs:Detect_Search_Field('txt_computercreated')"><input type=button value="Pick" onclick="DoCal('txt_computercreated')">
</td>
</tr>
</table>
</fieldset>
<br>
<fieldset id=tr_domaincomputers>
<LEGEND><!--<input type="checkbox" id="chk_domaincomputers" name="chk_domaincomputers" checked=True>-->Domain Computers <span id="span_domaincomputers"></span></LEGEND>
<OBJECT id="lst_domaincomputers" name="lst_domaincomputers" classid="clsid:BDD1F04B-858B-11D1-B16A-00C0F0283628"></OBJECT>
<br>Filter: <input type="text" size="40" id="txt_filterdomaincomputers" name="txt_filterdomaincomputers"> <input type="button" value="Save to CSV" name="btnSavelst_domaincomputers" onClick="vbs:SaveList('lst_domaincomputers')">
</fieldset>
<br><br>
</td>
<td align="left" valign="top" width="31%">
<fieldset id=tr_groupmembership>
<LEGEND><input type="checkbox" id="chk_groupmembership" name="chk_groupmembership" checked=True>Group Membership <span id="span_groupmembership"></span></LEGEND>
<OBJECT id="lst_groupnames" name="lst_groupnames" classid="clsid:BDD1F04B-858B-11D1-B16A-00C0F0283628"></OBJECT>
<br>Filter: <input type="text" size="40" id="txt_filtersecuritygroup" name="txt_filtersecuritygroup"> <input type="button" value="Save to CSV" name="btnSavelst_groupnames" onClick="vbs:SaveList('lst_groupnames')">
</fieldset>
<br>
<fieldset id=tr_dgmembership>
<LEGEND><input type="checkbox" id="chk_dgmembership" name="chk_dgmembership" checked=True>Distribution Group Membership <span id="span_dgmembership"></span></LEGEND>
<OBJECT id="lst_dgnames" name="lst_dgnames" classid="clsid:BDD1F04B-858B-11D1-B16A-00C0F0283628"></OBJECT>
<br>Filter: <input type="text" size="40" id="txt_filterdgmembership" name="txt_filterdgmembership"> <input type="button" value="Save to CSV" name="btnSavelst_dgnames" onClick="vbs:SaveList('lst_dgnames')">
</fieldset>
<br>
<fieldset id=tr_managerlist>
<LEGEND><input type="checkbox" id="chk_managerlist" name="chk_managerlist" checked=True>Manager <span id="span_managerlist"></span></LEGEND>
<OBJECT id="lst_managerlist" name="lst_managerlist" classid="clsid:BDD1F04B-858B-11D1-B16A-00C0F0283628"></OBJECT>
<br>Filter: <input type="text" size="40" id="txt_filtermanagerlist" name="txt_filtermanagerlist"> <input type="button" value="Save to CSV" name="btnSavelst_managerlist" onClick="vbs:SaveList('lst_managerlist')">
</fieldset>
<br>
<fieldset id=tr_subordinates>
<LEGEND><input type="checkbox" id="chk_subordinates" name="chk_subordinates" checked=True>Subordinates <span id="span_subordinates"></span></LEGEND>
<OBJECT id="lst_subordinates" name="lst_subordinates" classid="clsid:BDD1F04B-858B-11D1-B16A-00C0F0283628"></OBJECT>
</select>
</fieldset>
</td>
</tr>
</table>
</body>
ASKER
Thank U rejoinder... All fine till now...
Can you add the other points i mentioned when time permits please....
Do let me know when you are free so i can post few more post's on some more additions to this...
Guess you dont get wild on me...
:-)
Can you add the other points i mentioned when time permits please....
Do let me know when you are free so i can post few more post's on some more additions to this...
Guess you dont get wild on me...
:-)
ASKER
Hi rejoinder closed this Q... Please have a look at this...
https://www.experts-exchange.com/questions/23849854/Rejoinder-code-need-these-additions-into-the-hta-that-queries-the-ADS.html
https://www.experts-exchange.com/questions/23849854/Rejoinder-code-need-these-additions-into-the-hta-that-queries-the-ADS.html
ASKER
Any help with these
https://www.experts-exchange.com/questions/23848556/Now-can-i-create-a-shortcut-in-excel-to-mail-the-selection-of-cells.html
https://www.experts-exchange.com/questions/23850116/Enable-Diskquota-of-all-shared-folders-in-the-file-server-with-a-script.html
https://www.experts-exchange.com/questions/23882011/Is-there-a-way-to-schedule-a-mail-to-be-sent-each-day-on-a-specific-time-with-a-file-in-the-UNC-path.html
https://www.experts-exchange.com/questions/23848556/Now-can-i-create-a-shortcut-in-excel-to-mail-the-selection-of-cells.html
https://www.experts-exchange.com/questions/23850116/Enable-Diskquota-of-all-shared-folders-in-the-file-server-with-a-script.html
https://www.experts-exchange.com/questions/23882011/Is-there-a-way-to-schedule-a-mail-to-be-sent-each-day-on-a-specific-time-with-a-file-in-the-UNC-path.html
Done.
I also added filter box to reduce the number of items shown. Filter acts like the other filter boxes - as you type, the list get reduced.
6. Any way to have an option to reset the local password of the machine i want i am quering.
Done.
There is a button called Reset next to the computer name box. The computer name must be valid for this to work. As you might know, any computer account that has been reset will have to be added to your domain again.
Open in new window