andi999
Goto Top

Auflisten (zählen) aller Betriebsysteme im Acitve Directory

Hallo

Ich möchte aus mehreren Domänen eine Auflistung von allen Computern und deren AD Attributen Operatingsystem,Operatingsystemservicepack und Operatingsystemversion haben und diese dann sortiert in eine Datei schreiben.
d.h ich möchte ein Textfile wo drinnen steht:

Domäne: eins.firma.de
52 Windows XP Professional 5.1 (2600) Service Pack 3
10 Windows 7 Enterprise 6.1 (7601) Service Pack 1

Domäne: zwei.firma.de
120 Windows XP Professional 5.1 (2600) Service Pack 3
1 Windows 7 Enterprise 6.1 (7601) Service Pack 1

Also ich hab es mal geschafft von einer Domäne ein Textfile zu erstellen, dass alle Computer mit den Operatingsystem anzeigt.

const FileName ="domaincomputers.csv"  
set cmd = createobject("ADODB.Command")  
set cn = createobject("ADODB.Connection")  
set rs = createobject("ADODB.Recordset")  

cn.open "Provider=ADsDSOObject;"  
cmd.activeconnection = cn

set objRoot = getobject("LDAP://DC=eins,DC=firma,DC=de")  

cmd.commandtext = "<LDAP://" & objRoot.get ("distinguishedName") & ">;(objectCategory=Computer);" & _  
		  "name,operatingsystem,operatingsystemservicepack, operatingsystemversion;subtree"  
'**** Bypass 1000 record limitation ****  
cmd.properties("page size")=1000  

set rs = cmd.execute
set objFSO = createobject("Scripting.FileSystemObject")  
set objCSV = objFSO.createtextfile(FileName)

q = """"  

while rs.eof <> true and rs.bof <> true
	objcsv.writeline(q & rs("name") & q & "," &  q & rs("operatingsystem") & q & _  
		"," & q & rs("operatingsystemservicepack") & _  
		q & "," & q & rs("operatingsystemversion") & q)  
	rs.movenext
wend

objCSV.Close
cn.close

wscript.echo "Finished"  

Wie schafe ich es jetzt aus einem Textfile mit dem Inhalt (Domänen Namen)
eins
zwei
drei
so in den Code einzubringen, das dieser für jede Domäne durchläuft und auch den Ausgabe Textfile Namen auf domaincomputers_eins.csv, domaincomputers_zwei.csv,... ändert.

Danke für einen Tip

Gruß
Andre

Content-Key: 176114

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

Ausgedruckt am: 29.03.2024 um 10:03 Uhr

Mitglied: lenny4me
lenny4me 11.11.2011 um 12:48:44 Uhr
Goto Top
Hallo,

ich denke das sollte mit Powershell viel einfacher gehen.

als Tipps hätte ich
Get-ADComputer und Get-WmiObject Win32_Operatingsystem

Das ganze in ne CSV gelenkt und ein wenig angepasst und fertig :D

Grüße
Mitglied: bastla
bastla 11.11.2011 um 13:19:59 Uhr
Goto Top
Hallo Andi999 und willkommen in Forum!

Völlig ungetestet etwa so:
const DomList = "D:\DomList.txt"  
const FileName ="domaincomputers.csv"  

set objFSO = createobject("Scripting.FileSystemObject")  
arrDoms = Split(Trim(objFSO.OpenTextFile(DomList).ReadAll)), vbCrLf)

set cmd = createobject("ADODB.Command")  
set cn = createobject("ADODB.Connection")  
set rs = createobject("ADODB.Recordset")  

cn.open "Provider=ADsDSOObject;"  
cmd.activeconnection = cn

for each strDom in arrDoms
    if Dom <> "" Then  
        set objRoot = getobject("LDAP://DC=" & strDom & ",DC=firma,DC=de")  

        cmd.commandtext = "<LDAP://" & objRoot.get ("distinguishedName") & ">;(objectCategory=Computer);" & _  
            "name,operatingsystem,operatingsystemservicepack, operatingsystemversion;subtree"  
        '**** Bypass 1000 record limitation ****  
        cmd.properties("page size")=1000  

        set rs = cmd.execute
        set objCSV = objFSO.createtextfile(strDom & FileName)

        q = """"  

        while rs.eof <> true and rs.bof <> true
            objCSV.writeline(q & rs("name") & q & "," &  q & rs("operatingsystem") & q & _  
    	        "," & q & rs("operatingsystemservicepack") & _  
                q & "," & q & rs("operatingsystemversion") & q)  
            rs.movenext
        wend
        objCSV.Close
    end if
next
cn.close

wscript.echo "Finished"  
Grüße
bastla
Mitglied: Andi999
Andi999 17.11.2011 um 10:26:15 Uhr
Goto Top
Vorerst Danke, das Script funktioniert fast.

Ich hab jetzt nur das Problem, dass ich immer nur die Ergebnisse von der Domäne bekomme wo ich das Script aufrufe.

z.B: ich starte das Script am DC der Domäne eins.firma.de, dann bekomme ich die Informationen von dieser Domäne, aber nicht von der zwei.firma.de, bzw. drei.firma.de, die Dateien sind einfach leer.

Muss ich hier auf eine Berechtigung noch achten ?

Danke
Mitglied: bastla
bastla 17.11.2011 um 16:27:31 Uhr
Goto Top
Hallo Andi999!
Muss ich hier auf eine Berechtigung noch achten ?
Kann ich leider nicht beantworten ...

Grüße
bastla