Quantcast
Channel: The Official Scripting Guys Forum! forum
Viewing all articles
Browse latest Browse all 15028

exporting Active directory users to excel with conditions

$
0
0

I'm trying to export AD users with selected fields out to a spreadsheet, with the condition that the employeeid field is greater than 99999.    I found a VBScript elsewhere on this site that does everything i need, even filtering on the employeeid field except that when it export to the spreadsheet the employeeid field comes back as if it's blank.  But i know it's not as it will do the filtering correctly.  Below is the script i've been using.   As i said it will correctly list all users with employeeid greated than 5 digits but it just won't export the actual employeeid field

----------------------------------------

Dim ObjWb 
Dim ObjExcel 
Dim x, zz 
Set objRoot = GetObject("LDAP://RootDSE") 
strDNC = objRoot.Get("DefaultNamingContext") 
Set objDomain = GetObject("LDAP://" & strDNC) ' Bind to the top of the Domain using LDAP using ROotDSE 
Call ExcelSetup("Sheet1") ' Sub to make Excel Document 
x = 1 
Call enummembers(objDomain) 

Sub enumMembers(objDomain) 
On Error Resume Next 
Dim Secondary(20) ' Variable to store the Array of 2ndary email alias's 
For Each objMember In objDomain ' go through the collection 


if ObjMember.EmployeeID > 199999 Then  'if employee id greater than 199999 then add to spreadsheet (meaning physician)
x = x +1 ' counter used to increment the cells in Excel 


' I set AD properties to variables so if needed you could do Null checks or add if/then's to this code 
' this was done so the script could be modified easier. 
SamAccountName = ObjMember.samAccountName 
FirstName = objMember.GivenName 
LastName = objMember.sn 
EmployeeID = ojbMember.employeeID
EmailAddr = objMember.mail 
Addr1 = objMember.streetAddress 
Title = ObjMember.Title 
Department = objMember.Department


' Write the values to Excel, using the X counter to increment the rows. 
objwb.Cells(x, 1).Value = EmployeeID
objwb.Cells(x, 2).Value = SamAccountName 
objwb.Cells(x, 3).Value = FirstName 
objwb.Cells(x, 4).Value = LastName 
objwb.Cells(x, 5).Value = EmailAddr
objwb.Cells(x, 6).Value = Addr1 
objwb.Cells(x, 7).Value = Title 
objwb.Cells(x, 8).Value = Department 

' Write out the Array for the 2ndary email addresses. 
For ll = 1 To 20 
objwb.Cells(x,26+ll).Value = Secondary(ll) 
Next 
' Blank out Variables in case the next object doesn't have a value for the property 
EmployeeID = "-"
SamAccountName = "-" 
FirstName = "-" 
LastName = "-" 
EmailAddr = "-" 
Addr1 = "-" 
Title = "-" 
Department = "-" 

For ll = 1 To 20 
Secondary(ll) = "" 
Next 
End If 

' If the AD enumeration runs into an OU object, call the Sub again to itinerate 

If objMember.Class = "organizationalUnit" or OBjMember.Class = "container" Then 
enumMembers (objMember) 
End If 
Next 
End Sub 


Sub ExcelSetup(shtName) ' This sub creates an Excel worksheet and adds Column heads to the 1st row 
Set objExcel = CreateObject("Excel.Application") 
Set objwb = objExcel.Workbooks.Add 
Set objwb = objExcel.ActiveWorkbook.Worksheets(shtName) 
Objwb.Name = "Active Directory Users" ' name the sheet 
objwb.Activate 
objExcel.Visible = True 
objwb.Cells(1, 1).Value = "EmployeeID"
objwb.Cells(1, 2).Value = "SAMAccountName"
objwb.Cells(1, 3).Value = "FirstName" 
objwb.Cells(1, 4).Value = "LastName"  
objwb.Cells(1, 5).Value = "Email" 
objwb.Cells(1, 6).Value = "Addr1" 
objwb.Cells(1, 7).Value = "Title" 
objwb.Cells(1, 8).Value = "Department" 
End Sub 
MsgBox "User dump has completed.", 64, "AD Dump" ' show that script is complete


Viewing all articles
Browse latest Browse all 15028

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>