it-eric
Goto Top

AD Computerbeschreibung mittels VBScript einen Wert über ADODB.Connection inserten

Hallo,

ich möchte nun meine bestehende ADODB.Connection zum AD nutzen und in die Beschreibung des AD Objekts Computer einen Wert reinschreiben.

Wie mache ich das?

Hier meine Verbindung:
Const ADS_SCOPE_SUBTREE = 2
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.CommandText = "??????????????????????"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
Set objRecordSet = objCommand.Execute

Mir fehlt, soweit ich das beurteilen kann der richtige insert Befehl für "??????????????????????" im Script oben.

Irgendwas wie: insert beschreibung into 'LDAP://DC=test,DC=org' where typ=Computer ans name='Computername' values('Beschreibungstext1')

Gruß und Danke vorweg
IT-Eric

Content-Key: 41450

Url: https://administrator.de/contentid/41450

Ausgedruckt am: 28.03.2024 um 15:03 Uhr

Mitglied: bastla
bastla 04.10.2006 um 19:22:19 Uhr
Goto Top
Hallo IT-Eric!

Zu Deinem Ansatz: Im Original-Beispiel aus dem MS-TechNet Script Center geht es so weiter ...

...
objCommand.CommandText = _
    "Select Name, Location, operatingSystemVersion from " & _  
        "'LDAP://DC=fabrikam,DC=com' where objectClass='computer'" & _  
            " and operatingSystemVersion = '5.1 (3600)'"    

...

Ergebnis: Recordset mit den entsprechenden Feldern "Name", "Location", "operatingSystemVersion" - daher müsstest Du das SQL-Statement um das Feld "Description" und um "Name = 'Computername'" ergänzen und in weiterer Folge das (hoffentlich nur aus einem face-wink Satz bestehende) Recordset zum Zurückschreiben der Description verwenden.


Einfacher könnte es so gehen (neues Script):
Set objComputer = GetObject _ 
    ("LDAP://CN=Computername,CN=Computers,DC=test,DC=org")  

objComputer.Put "Description" , "WasAuchImmer"  
objComputer.SetInfo

HTH
bastla
Mitglied: IT-Eric
IT-Eric 05.10.2006 um 07:23:34 Uhr
Goto Top
Danke erstmal für Deine Antwort. Den Select und das Recordset habe ich schon.
Ich habe aber keine Ahnung, wie ich das veränderte Recordset dann wieder ins AD rein bekomme.

Mit dem objComputer.Put "Description" , "WasAuchImmer" wäre es sicherlich einfacher, allerdings muss ich dann aber LDAP verwenden und wissen in welcher OU der PC steht, das will ich aber nicht bei jedem PC extra eintragen müssen.

Hier mein mein Code, den ich bisher habe, dieses möchte ich erweitern und Werte in die Computer Beschreibung ins AD eines bestimmten PCs schreiben(Später werden die Beschreibungen und PCs aus einer Textdatei ausgelesen:

Const ADS_SCOPE_SUBTREE = 2
Const ForReading = 1, ForWriting = 2, ForAppending = 8

Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
Set objFileSystem = CreateObject("Scripting.FileSystemObject")
sFilePath = "c:\misc\vbs\description.txt"
Set fOutput = objFileSystem.OpenTextFile(sFilePath, ForWriting, True)
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"

Set objCommand.ActiveConnection = objConnection
objCommand.CommandText ="Select Name, Description, Location from " & "'LDAP://DC=DOMAINE,DC=ORG' where objectClass='computer'"

objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst

'Zeigt das ganze auch noch an

Do Until objRecordSet.EOF
if objRecordSet.Fields("Name").Value ="COMPUTERNAME1" then
fOutput.WriteLine join(objRecordset.Fields("Description").Value)

'Set objRecordSet = objCommand.Execute
end if
objRecordSet.MoveNext
Loop
fOutput.Close
Set fOutput = Nothing


Im Script wird die Beschreibung von COMPUTERNAME1 in die Textdatei geschrieben. Die Erweiterung soll das einfach umgekehrt machen, ohne zu wissen in welcher OU der PC ist.

Viele Grüße
Eric
Mitglied: IT-Eric
IT-Eric 05.10.2006 um 07:46:57 Uhr
Goto Top
Ich habe mir wie folgt nun geholfen:
Nachdem ich im Recordset den entsprechenden PC gefunden habe, kann ich ja den LDAP Pfad mit auslesen. Den weiss ich ja dann auch. Danach kann ich mit Deinen Befehlen den Wert schreiben.

Danke!

Hier mein Code:
Const ADS_SCOPE_SUBTREE = 2
Const ForReading = 1, ForWriting = 2, ForAppending = 8

Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
Set objFileSystem = CreateObject("Scripting.FileSystemObject")
set objDomain = GetObject("WinNT:" & domain)
domain = "DOMAINE.org"

sFilePath = "c:\misc\vbs\description.txt"
Set fOutput = objFileSystem.OpenTextFile(sFilePath, ForWriting, True)
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"

Set objCommand.ActiveConnection = objConnection
objCommand.CommandText ="Select Name, Description, ADsPath from " & "'LDAP:
DC=DOMAINE,DC=org' where objectClass='computer'"

objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst


Do Until objRecordSet.EOF
if objRecordSet.Fields("Name").Value ="ComputerName1" then

Set objaktuellerPC = GetObject (objRecordset.Fields("ADsPath").Value)
objaktuellerPC.Put "Description" , "WasAuchImmer"
objaktuellerPC.SetInfo

end if
objRecordSet.MoveNext
Loop