sarekhl

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é
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 170655

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

Ausgedruckt am: 05.05.2025 um 23:05 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