sarekhl
Goto Top

Benutzer aus dem AD in eine Textdatei ausgeben

Hallo zusammen,

wie kann ich auf einem Server 2008 alle Benutzer aus dem AD unterhalb einer bestimmten OU (die wiederum Unter-OUs haben kann) in eine CSV-Datei ausgeben und zwar mit folgenden Informationen:

Name, Vorname, Anmeldename, OU (wobei OU nur die unterste OU sein soll)


Danke im Voraus,
André

Content-ID: 170655

Url: https://administrator.de/forum/benutzer-aus-dem-ad-in-eine-textdatei-ausgeben-170655.html

Ausgedruckt am: 06.04.2025 um 06:04 Uhr

99780
99780 30.07.2011 um 13:06:55 Uhr
Goto Top
Eine Liste mit den Login names bekommst Du mit "net user /DOMAIN > userlist.txt"
detailierte Infos bekommst Du mit "wmic useraccount > userlist.txt"

damit kann man uA auch nette Abfragen aufbauen wie z.B. "wmic UserAccount where PasswordExpires=False get Name"

lg. J.H.


Zitat von @SarekHL:
Hallo zusammen,

wie kann ich auf einem Server 2008 alle Benutzer aus dem AD unterhalb einer bestimmten OU (die wiederum Unter-OUs haben kann) in
eine CSV-Datei ausgeben und zwar mit folgenden Informationen:

Name, Vorname, Anmeldename, OU (wobei OU nur die unterste OU sein soll)


Danke im Voraus,
André
filippg
filippg 30.07.2011 um 15:55:33 Uhr
Goto Top
Hallo,

ich würde PowerShell und die ADSI-Klasse verwenden, http://technet.microsoft.com/en-us/library/ff730967.aspx liefert eine Anleitung dafür. Leider ist ADSI nicht so richtig straigthforward, da verschiedene Klassen beteiligt sind, da muss man manchmal etwas knobeln.
Außerdem könntest du die (kostenlosen) Quest AD-Tools verwenden, die erlauben auch Spezifizierung von SearchRoot & -scope: http://wiki.powergui.org/index.php/Get-QADUser

Gruß

Filipp
bastla
bastla 30.07.2011 um 15:57:33 Uhr
Goto Top
Hallo SarekHL!

Per Batch etwa so:
@echo off & setlocal
set "OU=ou=Benutzer,dc=firma,dc=local"  
set "CSV=D:\Liste.csv"  

del "%CSV%" 2>nul  
for /f "delims=" %%i in ('dsquery user -limit 1000 "%OU%"^|dsget user -L -dn -samid -ln -fn') do set "Zeile=%%~i" & call :ProcessLine  
goto :eof

:ProcessLine
for /f "tokens=1* delims=: " %%a in ("%Zeile%") do set "%%a=%%b"  
if "%Zeile:~,3%" neq "ln:" goto :eof  

if not defined dn goto :eof
for /f "tokens=4 delims==," %%a in ("%dn%") do set "LastOU=%%a"  
>>"%CSV%" echo %ln%;%fn%;%samid%;%LastOU%  
goto :eof
Es wird die Ausgabe, zB
dn: CN=Vorname.Nachname,OU=Test,OU=Benutzer,DC=firma,DC=local
samid: Vorname.Nachname
fn: Vorname
ln: Nachname
anhand der Bezeichnungen ("dn", "samid", etc) gleichnamigen Variablen zugewiesen und aus %dn% dann die OU extrahiert.

Wenn bei Dir die Ausgabe von
dsquery user -limit 1000 "ou=Benutzer,dc=firma,dc=local"|dsget user -L -dn -samid -ln -fn
anders aussähe, müsste der Auswertungsteil entsprechend angepasst werden.

Grüße
bastla
SarekHL
SarekHL 30.07.2011 um 15:58:40 Uhr
Goto Top
Es geht, wie ich inzwischen herausgefunden habe, viel einfacher: Bei Server 2008 gibt es ein kleines Befehlszeilenprogramm namens CSVDE ... das macht genau das, was ich möchte ;)
filippg
filippg 30.07.2011 um 16:01:08 Uhr
Goto Top
Hallo,

Es geht, wie ich inzwischen herausgefunden habe, viel einfacher: Bei Server 2008 gibt es ein kleines Befehlszeilenprogramm namens
CSVDE ... das macht genau das, was ich möchte ;)
Ja, das sind so die "Billigtools" an die ich nie denke, wäre ja viel zu einfach.

Gruß

Filipp