morpheus 10 Geschrieben 27. März 2008 Melden Teilen Geschrieben 27. März 2008 Hallo, ich möchte die Computerkonten im AD per vbs abfragen. Das Problem was ich dabei habe ist, dass ich einmal die Objektklasse "computers" und noch eine weitere Objektklasse "enatelSoftwareVersion" (durch Schemaerweiterung hinzukommen) abfragen möchte. Hintergrund ist, dass ich als Ausgabe den Computername (Klasse Computers) und ein Attribut aus der Klasse enatelSoftwareVersion haben möchte. Im Grunde soll das Script wie folgt aussehen: - frage alle Computerkonten im AD ab, wo das Attribut enatelSoftwareVersion gefüllt ist - gebe mir den Value von enatelSoftwareVersion zurück - gebe mir den Value name aus der Klasse computers zurück Danke für die Hilfe. Zitieren Link zu diesem Kommentar
phoenixcp 10 Geschrieben 27. März 2008 Melden Teilen Geschrieben 27. März 2008 Ist das enatelSoftwareVersion eine eigene Objektklasse oder nur ein zusätzliches Attribut auf der Objektklasse computers? So wie ich das verstehe, ist es nur ein Attribut auf der Schemaklasse computers und sollte sich dort genauso abfragen lassen wie jedes andere Attribut... Zitieren Link zu diesem Kommentar
morpheus 10 Geschrieben 27. März 2008 Autor Melden Teilen Geschrieben 27. März 2008 Hallo, nein, enatelSoftwareModule ist die Klasse von dem Attribut enatelSoftwareModuleVersion. Deswegen auch mein Problem, zwei Klassen in einem Skript abzufragen. Ein AD-Computerkonto sieht im ADSI-Edit wie folgt aus: - CN=Computername,OU=XY,DC=meine,DC=dom,DC=de (klar ... Objectclass = computer) - CN=SSOWatch,CN=Computername,OU=XY,DC=meine,DC=dom,DC=de (Objectclass = enatalSoftwareVersion) - CN=Extended Manager,CN=Computername,OU=XY,DC=meine,DC=dom,DC=de (Objectclass = enatalSoftwareVersion) Zitieren Link zu diesem Kommentar
phoenixcp 10 Geschrieben 27. März 2008 Melden Teilen Geschrieben 27. März 2008 Ok... also was ist jetzt die Klasse und was das Attribut???? Dein erstes Posting: erst: weitere Objektklasse "enatelSoftwareVersion" dann: gebe mir den Value von enatelSoftwareVersion zurück[/Quote] Dein zweites Posting: erst: enatelSoftwareModule ist die Klasse von dem Attribut enatelSoftwareModuleVersion Off-Topic:Wenn, dann ist das Attribut Bestandteil der Klasse und nicht andersherum... dann: Objectclass = enatalSoftwareVersion Also: die Objektklasse scheint enatelSoftwareVersion zu sein Was ist denn nun das Attribut was du Abfragen willst? Zitieren Link zu diesem Kommentar
morpheus 10 Geschrieben 27. März 2008 Autor Melden Teilen Geschrieben 27. März 2008 ja stimmt, sorry falsch gepostet. Also ich möchte mit einem Script: - erstens das Attribut "name" der Objektklasse "computer" abfragen - zweitens das Attribut "enatelSoftwareModuleVersion" der Objektklasse "enatelSoftwareModule" abfragen Gruß Zitieren Link zu diesem Kommentar
phoenixcp 10 Geschrieben 27. März 2008 Melden Teilen Geschrieben 27. März 2008 So, war das dann die endgültige Entscheidung oder entscheidest du dich nochmal um? :-) Aber hier mal was zum selber spielen: ADSI (Active Directory Service Interfaces) Scriptomatic Damit lässt sich das AD-Skripting von "fast" alleine bewerkstelligen... Zitieren Link zu diesem Kommentar
morpheus 10 Geschrieben 27. März 2008 Autor Melden Teilen Geschrieben 27. März 2008 Hallo, wenn ich etwas korrigiert poste, dann denke ich, dass ich mich entschieden habe. Meine Anforderung steht im letzten Posting. Danke und Gruß Zitieren Link zu diesem Kommentar
phoenixcp 10 Geschrieben 27. März 2008 Melden Teilen Geschrieben 27. März 2008 Das sollte kein Angriff sein, deswegen ist auch ein Smily dahinter... Hoffe das dir die ADSI-Scriptomatic ein wenig weiterhilft. Ansonsten meld dich einfach nochmal... Zitieren Link zu diesem Kommentar
morpheus 10 Geschrieben 27. März 2008 Autor Melden Teilen Geschrieben 27. März 2008 Ja ist schon klar ;) So richtig komme ich nicht weiter. So sieht man script momentan aus: Const ADS_SCOPE_SUBTREE = 2 Set fso=CreateObject("Scripting.FileSystemObject") Set tf=fso.OpenTextFile("SSOWatch.txt",2,1) Set objConnection = CreateObject("ADODB.Connection") Set objCommand = CreateObject("ADODB.Command") objConnection.Provider = "ADsDSOObject" objConnection.Open "Active Directory Provider" '############################################################ 'SSOSoftware-Abfrage 4.54 Build 2678 '############################################################ Set objCommand.ActiveConnection = objConnection objCommand.CommandText = _ "Select distinguishedName from " & _ "'LDAP://DC=test,DC=de' where objectClass='enatelSoftwareModule'" & _ " and enatelSoftwareModuleVersion = '72623751'" objCommand.Properties("Page Size") = 1000 objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE Set objRecordSet = objCommand.Execute objRecordSet.MoveFirst Do Until objRecordSet.EOF tf.Writeline objRecordSet.Fields("distinguishedName").Value objRecordSet.MoveNext Loop Zitieren Link zu diesem Kommentar
phoenixcp 10 Geschrieben 27. März 2008 Melden Teilen Geschrieben 27. März 2008 Und an was scheitert es im Moment? Zitieren Link zu diesem Kommentar
morpheus 10 Geschrieben 27. März 2008 Autor Melden Teilen Geschrieben 27. März 2008 ganz einfach ;-) mit tf.Writeline objRecordSet.Fields("distinguishedName").Value erhalte ich zwar den DN des Clients. Der ist jedoch optisch nicht so toll (z.b. CN=Extended Manager,CN=PCNAME,OU=xy,OU=xyz,DC=test,DC=de) und nicht direkt verwertbar. Schöner und besser wäre es, wenn ich hier den Value aus dem Attribut "name" der Objektklasse "computer" erhalten würde. Zitieren Link zu diesem Kommentar
phoenixcp 10 Geschrieben 27. März 2008 Melden Teilen Geschrieben 27. März 2008 Dann setz doch einfach statt des Feldes "distinguishedName" das Feld "cn" ein und frag einfach nur den CN des Computers ab. Wie wäre es damit? :D Zitieren Link zu diesem Kommentar
morpheus 10 Geschrieben 27. März 2008 Autor Melden Teilen Geschrieben 27. März 2008 geht leider nicht, weil der cn von der objektklasse "enatelSoftwareModule" z.B. als Value "Extended Manager" zurückgibt. Zitieren Link zu diesem Kommentar
phoenixcp 10 Geschrieben 27. März 2008 Melden Teilen Geschrieben 27. März 2008 Ok, dann musst du denn String den du von objRecordSet.Fields("distinguishedName").Value[/Code] bekommst, aufsplitten (als Trenner am günstigsten "," verwenden ;) ), das enstehende Array nehmen, davon die zweite Position [Code]CN=PCNAME[/Code] und davon die ersten 3 Zeichen abschneiden... Dazu kann ich dir die Stringfunktionen Split wärmstens empfehlen ;) VB String Examples: Split String into Array of Words Zitieren Link zu diesem Kommentar
morpheus 10 Geschrieben 27. März 2008 Autor Melden Teilen Geschrieben 27. März 2008 oje ... mal sehen ob ich das hinbekomme Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.