Annonce

Nyt fra microsoft

Indsend nyhed

Del dine opdagelser!

Afstemning

Ser du frem til Baldur's Gate-remaket?

  • 47%Ja!
  • 31%Nej!
  • 23%Ved ikke endnu

VBS problemer!

#1: KopNudler

2. feb. 2012 11: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(shtN
ame) 
     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

#2: Mnc

2. feb. 2012 11:18

Fejlen må sige mere end blot

"Indekset er uden for området"KopNudler (#1)

#3: KopNudler

2. feb. 2012 11:21

Fejlen må sige mere end blotMnc (#2)

Fuld fejlmeddelse

http://i44.tinypic.com/fvfj1i.png

#4: XorpiZ

2. feb. 2012 11:23

Er det hele scriptet du har smidt ind her?

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

#5: KopNudler

2. feb. 2012 11:29

Er det hele scriptet du har smidt ind her?

Jeg får en kørselsfejl på linje 1 :<XorpiZ (#4)

Ja, kopieret fra Notepad++

Hvilken fejl får du?

#6: XorpiZ

2. feb. 2012 11:32

"Tegnet er ugyldigt" - linje 1, tegn 1.

#7: Mnc

2. feb. 2012 11: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:

' I set AD properties to variables so if needed you could do Null checks or add if/then's to this code KopNudler (#1)

#8: XorpiZ

2. feb. 2012 11:35

Nå, det er fixet. Ændrede encoding til ANSI istedet for UTF-8.

#9: XorpiZ

2. feb. 2012 11: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 

#10: KopNudler

2. feb. 2012 11:40

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:Mnc (#7)

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

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 

XorpiZ (#9)

Tak tak!

Åbner nu denne tråd op for TOG!

#11: KopNudler

2. feb. 2012 12: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.

#12: XorpiZ

2. feb. 2012 13:07

I linje 5 kan du skrive:
strDNC = "dc=killershark,dc=net"

Kigger lige på OU'en

#13: KopNudler

2. feb. 2012 13:12

I linje 5 kan du skrive:
strDNC = "dc=killershark,dc=net"

Kigger lige på OU'enXorpiZ (#12)

Får en fejl hvis jeg kører den med domain i linie 5.
Er det fordi jeg mangler OU?

#14: XorpiZ

2. feb. 2012 13:21

Jeg har skrevet

strDNC = "DC=domænenavn,DC=local" i min. Det fungerer fint.

#15: KopNudler

2. feb. 2012 13:23

Glemte at slette ("DefaultNamingContext")

Det virker nu!

#16: XorpiZ

2. feb. 2012 13: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

#17: KopNudler

2. feb. 2012 13:26

Fandt ud af det med OU!

Linie 5 skal bare have det tilføjet

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

#18: apkat

3. feb. 2012 10:45

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. :)
XorpiZ (#9)

I lol'd

#19: XorpiZ

3. feb. 2012 11:13

Good for you.

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