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

Geschrieben

Hallo Zusammen,

 

ich würde eine Batchdatei oder ein Script benötigen welches mir aus einem bestimmten Container meines AD's alle computer ausliest und diese dann in eine Textdatei ausgibt.

Könnt ihr mir da helfen?

 

Mit dsquery usw habe ich es nicht geschafft da hier ja der volle Pfad angezeigt wird also OU= usw usw.

 

Bitte helft mir ;)

Geschrieben

Hallo

 

Probiers mal so:

 

FOR /F usebackq %%a IN (`dsquery computer "ou=test,dc=domain,dc=de" -o rdn`) DO echo %%a

 

(wenn die Anfuehrungszeichen stoerenm vor das letzte a eine Tilde schreiben. )

 

cu

blub

Geschrieben

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

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

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...