Einfaches Tool um AD Felder zu exportieren
Hallo zusammen,
gibt es ein einfaches, kostenloses Tool, um alle möglichen Felder im AD (Name, Funktion, Abteilung, Niederlassung, Fax, Pager, Kostenstelle, Straße usw..) in Excel, CSV oder Text zu exportieren?
Mit dem AD integrierten "Liste exportieren" Feature ist das zwar möglich, ich kann aber nicht alle Felder exportieren, die ich benötige, wie z.B. Fax, Pager oder Kostenstelle?
Ist leider noch ein Windows Server 2008 Sp2, aber kein R2, daher leider noch kein Active Directory Module...
Wäre nett, wenn mir jemand Tipps geben könnte.
Gruß
lordofremixes
gibt es ein einfaches, kostenloses Tool, um alle möglichen Felder im AD (Name, Funktion, Abteilung, Niederlassung, Fax, Pager, Kostenstelle, Straße usw..) in Excel, CSV oder Text zu exportieren?
Mit dem AD integrierten "Liste exportieren" Feature ist das zwar möglich, ich kann aber nicht alle Felder exportieren, die ich benötige, wie z.B. Fax, Pager oder Kostenstelle?
Ist leider noch ein Windows Server 2008 Sp2, aber kein R2, daher leider noch kein Active Directory Module...
Wäre nett, wenn mir jemand Tipps geben könnte.
Gruß
lordofremixes
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 251168
Url: https://administrator.de/contentid/251168
Ausgedruckt am: 24.11.2024 um 11:11 Uhr
30 Kommentare
Neuester Kommentar
Windows Server 2007
hä?? den gibt's nicht höchstens 2008 und der hat das AD Module für die PowershellImport-Module ActiveDirectory
get-aduser -Filter * -Properties * | select * | Export-Csv 'c:\export.csv' -delimiter ';' -NoType -Encoding UTF8
Hallo,
falls dir Htm Dateien auch weiter helfen, könnte José Active-Directory-Dokumentation etwas für dich sein.
Tom
falls dir Htm Dateien auch weiter helfen, könnte José Active-Directory-Dokumentation etwas für dich sein.
Tom
Zitat von @lordofremixes:
> Zitat von @Tommy70:
>
> Hallo,
>
> falls dir Htm Dateien auch weiter helfen, könnte [http://www.faq-o-matic.net/jose/ José
> Active-Directory-Dokumentation] etwas für dich sein.
>
> Tom
José Active-Directory-Dokumentation ist echt gut, gibt aber leider kein Auslesen von den Feldern Fax, Pager usw...
lordofremixes
> Zitat von @Tommy70:
>
> Hallo,
>
> falls dir Htm Dateien auch weiter helfen, könnte [http://www.faq-o-matic.net/jose/ José
> Active-Directory-Dokumentation] etwas für dich sein.
>
> Tom
José Active-Directory-Dokumentation ist echt gut, gibt aber leider kein Auslesen von den Feldern Fax, Pager usw...
lordofremixes
Hallo,
im Standard nicht. Ist aber selbst erweiterbar da alles über die Datei JoseExec.vbs ausgelesen wird.
Somit sollte es auch möglich sein, die noch fehlenden Felder (Fax, Pager usw...) auch anzuzeigen.
Tom
Moin lordofremixes,
ohne das AD-Modul kannst du es mit einem ADSI-SearcherObjekt in Powershell machen:
Grüße Uwe
ohne das AD-Modul kannst du es mit einem ADSI-SearcherObjekt in Powershell machen:
# Datei für den Export angeben
$csvPath = 'C:\export.csv'
# OU angeben (es wird der Subtree duchsucht)
$OU = 'ou=Marketing,dc=domain,dc=intern'
$objSearch = New-Object System.DirectoryServices.DirectorySearcher
$objSearch.PageSize = 15000
$objSearch.Filter = "(&(objectCategory=User)(objectCategory=Person))"
$objSearch.SearchRoot = "LDAP://$OU"
$objSearch.SearchScope = [System.DirectoryServices.SearchScope]::Subtree
$allUsers = $objSearch.FindAll()
$all = @()
foreach ($user in $allUsers) {
$o = $user.GetDirectoryEntry()
$propertyHT = @"
Username = $($o.SamAccountName.toString())
Vorname = $($o.Givenname.ToString())
Nachname = $($o.sn.toString())
Initialien = $($o.initials.toString())
Rufnummer = $($o.telephoneNumber.toString())
E-Mail = $($o.mail.toString())
Webseite = $($o.wWWHomePage.toString())
Straße = $($o.streetAddress.toString())
Ort = $($o.l.toString())
PLZ = $($o.postalCode.toString())
Nummer Privat = $($o.HomePhone.toString())
Nummer Pager = $($o.pager.toString())
Nummer Fax = $($o.facsimileTelephonenumber.toString())
Position = $($o.Title.toString())
Abteilung = $($o.Department.toString())
Firma = $($o.Company.toString())
"@
$all += new-Object PSObject -Property (ConvertFrom-StringData -StringData $propertyHT)
}
$all | export-csv $csvPath -Delimiter ";" -NoTypeInformation -Encoding UTF8 -Force
Zitat von @lordofremixes:
ich habe den Quellcode direkt in die Powershell kopiert. Es kommen zig Fehlermeldungen.
GROBER FEHLER! Das kommt in eine Powershelldatei mit der Endung *.ps1ich habe den Quellcode direkt in die Powershell kopiert. Es kommen zig Fehlermeldungen.
Falls du das noch nie gemacht hast hier die Anleitung dazu ...
Anleitung: Wie starte ich Powershell-Scripte
- Zuerst speichert man den Code in einer Textdatei mit der Endung .ps1.
- Wenn man zum ersten mal Powershell-Scripte ausführt, musst man einmalig vorher noch das Ausführen von Scripten im User-Account freischalten. Dazu öffnet man eine Powershell-Konsole und gibt dort den Befehl
Set-ExecutionPolicy RemoteSigned -Force
ein. Um diese Policy für alle User auf dem Rechner zu setzen muss man diesen Befehl in einer Powershell-Konsole mit Admin-Rechten starten. Noch ein Hinweis für 64-Bit-Systeme: Hier sollte sowohl für die 32bit und 64Bit Variante der Powershell die Policy in einer Admin-Konsole gesetzt werden:Set-ExecutionPolicy RemoteSigned -Force; start-job { Set-ExecutionPolicy RemoteSigned -Force } -RunAs32
- Jetzt kann das Powershell-Script wie weiter unten erläutert in einer Powershell-Konsole oder aus einer CMD-Fenster heraus ausgeführt werden. Wer lieber mit der Maus arbeitet macht einen Rechtsklick auf die Script-Datei und wählt: Mit Powershell ausführen.
- Alternativ lässt sich ein Script auch ohne das globale Ändern der ExecutionPolicy ausführen indem man die Policy als Parameter auf der Kommandozeile mitgibt:
powershell.exe -ExecutionPolicy RemoteSigned -File "C:\Pfad\Script.ps1"
Starten eines Scriptes in einer Powershell-Konsole
Immer den kompletten Pfad zum Script angeben, und wenn er Leerzeichen beinhaltet in Anführungszeichen einschließen:"C:\Pfad\script.ps1"
.\script.ps1
Starten von PS-Scripten aus Batch und Kommandozeilen heraus:
Hier gibt es unterschiedliche Methoden, je nach Anforderungen gibt es hier einige Besonderheiten vor allem bei Leerzeichen in Pfaden zu beachten!Der einfachste Aufruf sieht hier so aus:
powershell.exe -File "C:\Pfad\Script.ps1"
powershell.exe -File "C:\Pfad\Script.ps1" "Parameter 1" "Parameter 2"
powershell.exe -command "&'C:\Pfad\Script.ps1' -par1 'Wert1' -par2 'Wert2'"
powershell.exe -command "&'C:\Pfad\Script1.ps1';&'C:\Pfad\Script2.ps1'"
powershell -?
in einer Konsole an.Starten von PS-Scripten in der Aufgabenplanung (Taskplaner)
In der jeweiligen Aktion unter "Programm/Script" trägt man powershell.exe ein und unter "Argumente hinzufügen (optional)" trägt man wie oben geschrieben alles was hinter powershell.exe kommt ein - also z.B. -File "C:\Pfad\Script.ps1" "Parameter 1" "Parameter 2"
Wie oben geschrieben kommt der Code in eine .ps1-Datei !!!
ebenso ist deine Formatierung der OU falsch.
Das wird so gemacht ...
Das Format sollte eigentlich jeder Admin beherrschen ...
Den Pfad zu CSV in der zweiten Zeile kannst du natürlich auch anpassen ....
ebenso ist deine Formatierung der OU falsch.
Das wird so gemacht ...
$OU = 'ou=leingarten,dc=lan,dc=blabla,dc=de'
Den Pfad zu CSV in der zweiten Zeile kannst du natürlich auch anpassen ....
abä sichä
http://msdn.microsoft.com/en-us/library/ms677937%28v=vs.85%29.aspx
Du noch eine Frage: Wie müsste man das Script ändern, um die Unter - OU wegzulassen?
$objSearch.SearchScope = [System.DirectoryServices.SearchScope]::OneLevel
du hast wahrscheinlich den zitierten Code von @lordofremixes kopiert ... da sind die führenden ">"-Zeichen natürlich nicht powershell-konform !
Zitat von @lordofremixes:
Wie kann ich das oben stehendes Script erweitern, um auch noch das AD Feld Vorgesetzter und das Feld Mitarbeiter im Reiter
'Organisation' auszulesen?
Hast du da eine Idee?
Moin lordo,Wie kann ich das oben stehendes Script erweitern, um auch noch das AD Feld Vorgesetzter und das Feld Mitarbeiter im Reiter
'Organisation' auszulesen?
Hast du da eine Idee?
für den Vorgesetzten kannst du die Hashtable durch diesen Eintrag erweitern
Vorgesetzter = $(if($o.Manager -ne $null){$o.Manager.toString().Split(",").Substring(3)})
http://www.selfadsi.de/user-attributes-w2k8.htm
Das lass ich dir mal als Hausaufgabe. Habe hier gerade kein Objekt mit dieser Eigenschaft zur Hand ...
Grüße Uwe
Yup, ist zwar nicht mehr die Codevariante von oben (hatte das damals ganz oben noch etwas optimiert) aber soweit syntaktisch i.O.
Grüße Uwe
Grüße Uwe