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-Key: 170655

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

Printed on: April 25, 2024 at 18:04 o'clock

Mitglied: 99780
99780 Jul 30, 2011 at 11:06:55 (UTC)
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é
Member: filippg
filippg Jul 30, 2011 at 13:55:33 (UTC)
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
Member: bastla
bastla Jul 30, 2011 at 13:57:33 (UTC)
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
Member: SarekHL
SarekHL Jul 30, 2011 at 13:58:40 (UTC)
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 ;)
Member: filippg
filippg Jul 30, 2011 at 14:01:08 (UTC)
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