Avatar billede johncleese Nybegynder
14. august 2006 - 14:36 Der er 12 kommentarer og
1 løsning

VBScript Active Directory IADsContainer

jeg har prøvet at lave et script der forbinder op mod en ldap forbindelse og skal finde alle bruger der findes i en mappe struktur så den også medtager "child" objekter. men jeg får en fejl når jeg prøver at kører scriptet. er der nogen der kan fortælle mig hvad jeg gør forkert her?
overordnet er en ou, hvor der ligger mange under ou' er som indeholder forskellige brugere. og jeg vil via mit script få alle brugere ud. så man ikke behøver få fat i hver enkel bruger ud fra en nøjagtig sti til hver enkel bruger CN i hver deres tilhørende under OUfra ldap.


Dim cont As IADsContainer
Dim usr As IADsUser
On Error GoTo Cleanup



Set cont = GetObject("LDAP://OU=overordnet, DC=test, DC=root, DC=local")

' Filter users.
cont.Filter = Array("user")

For Each usr In cont
  Debug.Print usr.Name
Next


Cleanup:
    If (Err.Number<>0) Then
        MsgBox("An error has occurred. " & Err.Number)
    End If
    Set cont = Nothing
    Set usr = Nothing
Avatar billede kedde65 Praktikant
14. august 2006 - 14:40 #1
Hvad fejl fremkommer der?

/Christian
ck@officekonsulenterne.dk
Avatar billede johncleese Nybegynder
14. august 2006 - 14:59 #2
den kan ikke engang forstå første linje IADsContainer. hmm burde man ikke kunne bruge den variabel i vb script`?
Avatar billede kedde65 Praktikant
14. august 2006 - 15:02 #3
Nej du har ikke variabel typer i VBSCript. Der har du kun Variant som typen, og alle dine variable skal erklæres som

Dim cont
Dim usr


/Christian
Avatar billede johncleese Nybegynder
14. august 2006 - 15:27 #4
okey, men hvad skal man så gøre for at få det til at virke ? for den kan ikke finde ud af det hvis man as.... så får jeg intet resultat. dog kommer der ingen fejl
Avatar billede kedde65 Praktikant
14. august 2006 - 15:42 #5
Det er fordi den ikke finder noget I den OU du har taget fat i.


/Christian
Avatar billede johncleese Nybegynder
14. august 2006 - 16:24 #6
jo men det er det der er hele humlen de bruger jeg skal hava fat i ligger i forskellige under ou'er. jeg kan godt finde ud af det hvis jeg finder hver ou og skriver stien ind i ldap opslaget men den skal finde alle brugere der ligger i under ou'er.
Avatar billede kedde65 Praktikant
14. august 2006 - 21:10 #7
Så ville jeg bruge ADO til det istedet.

Følgende kode lder efter et bestemt navn i alle subOU i AD. Prøv at se om du kan få det omformuleret så du kan bruge det.

CheckForUser("testew")
Sub CheckForUser(samAccountName)
    dtStart = TimeValue(Now())
    strUserName = samAccountName
    Set objConnection = CreateObject("ADODB.Connection")
    objConnection.Open "Provider=ADsDSOObject;"

    Set objCommand = CreateObject("ADODB.Command")
    objCommand.ActiveConnection = objConnection

    objCommand.CommandText = _
        "<LDAP://dc=fabrikam,dc=com>;(&(objectCategory=User)" & _
            "(samAccountName=" & strUserName & "));samAccountName;subtree"
 
    Set objRecordSet = objCommand.Execute

    If objRecordset.RecordCount = 0 Then
        WScript.Echo "sAMAccountName: " & strUserName & " does not exist."
    Else
        WScript.Echo strUserName & " exists."
    End If

    objConnection.Close
    WScript.Echo "Script completed in " & _
        Second(TimeValue(now()) - dtStart) & _
            " second or less."
End Sub


Ellers sig til, så skal jeg gerne hjælpe dig yderligere :-)

Christian
ck@officekonsulenterne.dk
Avatar billede johncleese Nybegynder
15. august 2006 - 09:45 #8
sejt det virkede :) 
jeg kan se man kan filtrere på samAccountName på den måde :P hvad så hvis man vil filtrere på alle brugere der er medlem af en specifik sikkerhedsgruppe der ligger i en ou ? Er der en go side  på nettet man kan læse om AD og ADO ?
jeg skal nok give dig point.. men hvis du lige havde det på tungen sååå.. :)
Avatar billede kedde65 Praktikant
15. august 2006 - 09:57 #9
Hej

Tja, der findes rigtigt mange sider på nettet af meget svingende kvalitet. Men et godt sted at starte er altid ved kilden selv - Microsoft :-)

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adsi/adsi/active_directory_service_interfaces_adsi.asp

/Christian

ck@officekonsulenterne.dk
Avatar billede johncleese Nybegynder
15. august 2006 - 10:34 #10
Jeg fandt lige lidt info om ADO og ad når man skal søge efter noget.

The attributes to return - A list of Active Directory attributes separated by commas. Use the LDAP display names of the attributes. An example would be "sAMAccountName,displayName,description". Note that most property methods cannot be returned by ADO. For example, LastName is a property method whose value cannot be returned by ADO. The only property methods that can be returned by ADO are "Name" and "AdsPath".

Der står í teksten at LastName er en egenskabs metode hvis værdi ikke kan blive vist af ADO .. ved du hvorfor man ikke kan se den værdi? jeg forstår det ikke hmm jeg er lidt af en nybegynder :(
Avatar billede kedde65 Praktikant
15. august 2006 - 14:17 #11
Hej

Tja, jeg kender ikke grunden til at ADO Ikke kan finde de felter, men jeg vil sige. Sålænge du kan finde AdsPath så har du med ADSI programmering mulighed for at finde resten.

/Christian
Avatar billede johncleese Nybegynder
15. august 2006 - 18:00 #12
okey tak for det.så har jeg lige lidt at gå efter :)
Avatar billede johncleese Nybegynder
16. august 2006 - 12:53 #13
hvis du stadig lige læser denne her så har lige et hurtig spørgsmål angående AdsPath
hvordan plejer du at gøre hvis du skal have placeringen ud uden selve Stien. f.eks. en bruger der er i en ou. så man kun får placeringen over i en variabel uden den CN med. hvis du forstår.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester