Jump to content

Batchdatei oder Script zum auslesen von der AD


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Danke für eure schnelle hilfe.. Hab da auch noch etwas gefunden...

und ein wenig erweitert

Option Explicit

' Liest eine Liste aller PCs aus dem Active Directory
' (OUs "Anwender-PCs") aus und gibt diese aus.

Dim oLog			'TextLogfile
Dim sLogFolder, sLogName	'Name des Log-Folder, Pfad der Log-Datei
Dim fso				'Filesystem Objekt
Dim sTemp			'temporäre String-Variable
Dim WshShell			'Windows Shell

'--- Variablen vorbelegen
sLogFolder = "Logs\"
sLogName = sLogFolder &"Server.txt"

'--- Windows Shell initialisieren
Set WshShell = CreateObject("WScript.Shell")

'Dateisystem bereitstellen
Set fso = CreateObject("Scripting.FileSystemObject")

'--- Text-Log öffnen
TextLogOpen()

call AlleUnterobjekteAuflisten("OU=", "computer", True)

' ==========================================================================


Sub AlleUnterobjekteAuflisten(strRootContainer, varObjektTyp, varRekursiv)
' Gibt die Namen aller Objekte im angegebenen AD-Container aus.
' <strObjektTyp> Objekttyp, der ausgegeben werden soll (class - z.B. "user")
' Falls <varRekursiv> True ist, werden auch ggf. enthaltene OUs (Organisational Units)
' durchsucht.
' Aufruf, z.B.:
'     call AlleUnterobjekteAuflisten("OU=Anwender-PCs,OU=Computer,OU=MyOrg,DC=myDomain,DC=de", _
'         "computer", True)
Dim objRootContainer, objADObjekt, strPCName
Const strDomainController = "DC"
Set objRootContainer = GetObject("LDAP://" & strDomainController & "/" & strRootContainer)
For Each objADObjekt In objRootContainer
   If objADObjekt.class = varObjektTyp Then
   ' Gesuchter Objekttyp gefunden
       strPCName = LCase(objADObjekt.cn)
       TextLogWrite(strPCName)
	'WScript.Echo  strPCName
   End If
   If objADObjekt.class = "organizationalUnit" And varRekursiv = True Then
       Call AlleUnterobjekteAuflisten(objADObjekt.distinguishedName, _
           varObjektTyp, varRekursiv)
   End If
Next
Set objRootContainer = Nothing
Set objADObjekt = Nothing


End Sub
'--- Text-Log schließen
TextLogClose()

function TextLogOpen()
   if not fso.FolderExists(sLogFolder) then FSO.CreateFolder(sLogFolder)
   On Error Resume Next
   Err.Clear
   set oLog = fso.OpenTextFile(sLogName,2,true)
   if err.Number <> 0 then
MsgBox("Das Logfile ist bereits geöffnet. Das Skript wurde wahrscheinlich schon von einem " & _
       "Kollegen gestartet. Einfach mal in den Raum hineinfragen hilft...  :-)" & vbCrLf & _
       "Skript wird abgebrochen.")
WScript.Quit
   end if
   On Error Resume Next
end function

function TextLogClose()
   oLog.Close()
end function

function TextLogWrite(sText)
   oLog.Writeline(sText)
end function

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...