mboost-dp1

VBS problemer!


Gå til bund
Gravatar #1 - Internet-Ekspert KopNudler
2. feb. 2012 10:09
Hej!

(Vidste ikke om det var Support eller Programmering den skulle ligge i, hvis jeg har fejlet undskylder jeg)

Jeg sidder og skal exportere alle brugere fra et AD ned i en excel fil, men det fejler på linie 125, tegn 6

"Indekset er uden for området"

Nogen VBS geeks der kan hjælpe?

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.Class = "user" Then ' if not User object, move on.
x = x +1 ' counter used to increment the cells in Excel

objwb.Cells(x, 1).Value = objMember.Class
' 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
Cn = ObjMember.CN
FirstName = objMember.GivenName
LastName = objMember.sn
initials = objMember.initials
Descrip = objMember.description
Office = objMember.physicalDeliveryOfficeName
Telephone = objMember.telephonenumber
EmailAddr = objMember.mail
WebPage = objMember.wwwHomePage
Addr1 = objMember.streetAddress
City = objMember.l
State = objMember.st
ZipCode = objMember.postalCode
Title = ObjMember.Title
Department = objMember.Department
Company = objMember.Company
Manager = ObjMember.Manager
Profile = objMember.profilePath
LoginScript = objMember.scriptpath
HomeDirectory = ObjMember.HomeDirectory
HomeDrive = ObjMember.homeDrive
AdsPath = Objmember.Adspath
LastLogin = objMember.LastLogin

zz = 1 ' Counter for array of 2ndary email addresses
For Each email in ObjMember.proxyAddresses
If Left (email,5) = "SMTP:" Then
Primary = Mid (email,6) ' if SMTP is all caps, then it's the Primary
Elseif Left (email,5) = "smtp:" Then
Secondary(zz) = Mid (email,6) ' load the list of 2ndary SMTP emails into Array.
zz = zz + 1
End If
Next
' Write the values to Excel, using the X counter to increment the rows.

objwb.Cells(x, 2).Value = SamAccountName
objwb.Cells(x, 3).Value = CN
objwb.Cells(x, 4).Value = FirstName
objwb.Cells(x, 5).Value = LastName
objwb.Cells(x, 6).Value = Initials
objwb.Cells(x, 7).Value = Descrip
objwb.Cells(x, 8).Value = Office
objwb.Cells(x, 9).Value = Telephone
objwb.Cells(x, 10).Value = EmailAddr
objwb.Cells(x, 11).Value = WebPage
objwb.Cells(x, 12).Value = Addr1
objwb.Cells(x, 13).Value = City
objwb.Cells(x, 14).Value = State
objwb.Cells(x, 15).Value = ZipCode
objwb.Cells(x, 16).Value = Title
objwb.Cells(x, 17).Value = Department
objwb.Cells(x, 18).Value = Company
objwb.Cells(x, 19).Value = Manager
objwb.Cells(x, 20).Value = Profile
objwb.Cells(x, 21).Value = LoginScript
objwb.Cells(x, 22).Value = HomeDirectory
objwb.Cells(x, 23).Value = HomeDrive
objwb.Cells(x, 24).Value = Adspath
objwb.Cells(x, 25).Value = LastLogin
objwb.Cells(x,26).Value = Primary

' 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
SamAccountName = "-"
Cn = "-"
FirstName = "-"
LastName = "-"
initials = "-"
Descrip = "-"
Office = "-"
Telephone = "-"
EmailAddr = "-"
WebPage = "-"
Addr1 = "-"
City = "-"
State = "-"
ZipCode = "-"
Title = "-"
Department = "-"
Company = "-"
Manager = "-"
Profile = "-"
LoginScript = "-"
HomeDirectory = "-"
HomeDrive = "-"
Primary = "-"
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, 2).Value = "SamAccountName"
objwb.Cells(1, 3).Value = "CN"
objwb.Cells(1, 4).Value = "FirstName"
objwb.Cells(1, 5).Value = "LastName"
objwb.Cells(1, 6).Value = "Initials"
objwb.Cells(1, 7).Value = "Description"
objwb.Cells(1, 8).Value = "Office"
objwb.Cells(1, 9).Value = "Telephone"
objwb.Cells(1, 10).Value = "Email"
objwb.Cells(1, 11).Value = "WebPage"
objwb.Cells(1, 12).Value = "Addr1"
objwb.Cells(1, 13).Value = "City"
objwb.Cells(1, 14).Value = "State"
objwb.Cells(1, 15).Value = "ZipCode"
objwb.Cells(1, 16).Value = "Title"
objwb.Cells(1, 17).Value = "Department"
objwb.Cells(1, 18).Value = "Company"
objwb.Cells(1, 19).Value = "Manager"
objwb.Cells(1, 20).Value = "Profile"
objwb.Cells(1, 21).Value = "LoginScript"
objwb.Cells(1, 22).Value = "HomeDirectory"
objwb.Cells(1, 23).Value = "HomeDrive"
objwb.Cells(1, 24).Value = "Adspath"
objwb.Cells(1, 25).Value = "LastLogin"
objwb.Cells(1, 26).Value = "Primary SMTP"
'formatting for header
Set objRange = objExcel.Range("A1","Z1")
objRange.Interior.ColorIndex = 33
objRange.Font.Bold = True
objRange.Font.Underline = True
End Sub
'autofit the output
Set objRange = objwb.UsedRange
objRange.EntireColumn.Autofit()
ObjExcel.Save("ADoutput.xls")
MsgBox "Done" ' show that script is complete
Gravatar #2 - Mnc
2. feb. 2012 10:18
Fejlen må sige mere end blot
KopNudler (1) skrev:
"Indekset er uden for området"
Gravatar #3 - Internet-Ekspert KopNudler
2. feb. 2012 10:21
Mnc (2) skrev:
Fejlen må sige mere end blot


Fuld fejlmeddelse

http://i44.tinypic.com/fvfj1i.png
Gravatar #4 - XorpiZ
2. feb. 2012 10:23
Er det hele scriptet du har smidt ind her?

Jeg får en kørselsfejl på linje 1 :<
Gravatar #5 - Internet-Ekspert KopNudler
2. feb. 2012 10:29
XorpiZ (4) skrev:
Er det hele scriptet du har smidt ind her?

Jeg får en kørselsfejl på linje 1 :<


Ja, kopieret fra Notepad++

Hvilken fejl får du?
Gravatar #6 - XorpiZ
2. feb. 2012 10:32
"Tegnet er ugyldigt" - linje 1, tegn 1.
Gravatar #7 - Mnc
2. feb. 2012 10:33
Jeg har aldrig sat mig ind i VBS, men udfra en snak jeg har haft med Google, så fanger denne linie mit øje...
linie 22:
KopNudler (1) skrev:
' I set AD properties to variables so if needed you could do Null checks or add if/then's to this code
Gravatar #8 - XorpiZ
2. feb. 2012 10:35
Nå, det er fixet. Ændrede encoding til ANSI istedet for UTF-8.
Gravatar #9 - XorpiZ
2. feb. 2012 10:37
Problemet er, at du i linje 7 kalder Excel-arket der hedder "Sheet1". Har du en dansk excel eksisterer dette ikke, da det hedder Ark1. :)

Retter du det, så fungerer scriptet fint.

Call ExcelSetup("Ark1") ' Sub to make Excel Document 
Gravatar #10 - Internet-Ekspert KopNudler
2. feb. 2012 10:40
Mnc (7) skrev:
Jeg har aldrig sat mig ind i VBS, men udfra en snak jeg har haft med Google, så fanger denne linie mit øje...
linie 22:


Det har ikke noget med det at gøre. (eftersom XorpiZ har fundet fejlen) (;



XorpiZ (9) skrev:
Problemet er, at du i linje 7 kalder Excel-arket der hedder "Sheet1". Har du en dansk excel eksisterer dette ikke, da det hedder Ark1. :)

Retter du det, så fungerer scriptet fint.

Call ExcelSetup("Ark1") ' Sub to make Excel Document 


Tak tak!

Åbner nu denne tråd op for TOG!
Gravatar #11 - Internet-Ekspert KopNudler
2. feb. 2012 11:58
Prøver lige at genåbne tråden! Med koden ovenover skal jeg søge i en bestemt OU. Vi kalder den "Awesome Sauce" på domænet "killershark.net"

Har fundet frem til at jeg skal smide en linie ind der hedder

ou=Awesome Sauce,dc=killershark,dc=net


Men kan ikke gennemskue hvor.
Gravatar #12 - XorpiZ
2. feb. 2012 12:07
I linje 5 kan du skrive:
strDNC = "dc=killershark,dc=net"

Kigger lige på OU'en
Gravatar #13 - Internet-Ekspert KopNudler
2. feb. 2012 12:12
XorpiZ (12) skrev:
I linje 5 kan du skrive:
strDNC = "dc=killershark,dc=net"

Kigger lige på OU'en


Får en fejl hvis jeg kører den med domain i linie 5.
Er det fordi jeg mangler OU?
Gravatar #14 - XorpiZ
2. feb. 2012 12:21
Jeg har skrevet

strDNC = "DC=domænenavn,DC=local" i min. Det fungerer fint.
Gravatar #15 - Internet-Ekspert KopNudler
2. feb. 2012 12:23
Glemte at slette ("DefaultNamingContext")

Det virker nu!
Gravatar #16 - XorpiZ
2. feb. 2012 12:25
Også med den korrekte OU?

hvis ja - super!

hvis nej, så skal der stå dette:

strDNC = "OU=Awesome Sauce,DC=killershark,DC=net"

i linje 5
Gravatar #17 - Internet-Ekspert KopNudler
2. feb. 2012 12:26
Fandt ud af det med OU!

Linie 5 skal bare have det tilføjet

strDNC = "ou=Awesome Sauce,dc=killershark,dc=net"
Gravatar #18 - apkat
3. feb. 2012 09:45
XorpiZ (9) skrev:
Problemet er, at du i linje 7 kalder Excel-arket der hedder "Sheet1". Har du en dansk excel eksisterer dette ikke, da det hedder Ark1. :)


I lol'd
Gravatar #19 - XorpiZ
3. feb. 2012 10:13
Good for you.
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login