AD User auslesen und in Datei mit Logo abspeichern

Mitglied: makaroni

makaroni (Level 1) - Jetzt verbinden

29.07.2015, aktualisiert 22.10.2015, 4833 Aufrufe, 31 Kommentare, 1 Danke

Hallo zusammen,

ich stehe vor eine neuern Aufgabe. Ich möchte gerne AD-User aus einer entsprechende Gruppe auslesen.

Diese sollen in eine Datei, csv, html, doc... exportiert werden. Wichtig ist, dass sich die Anzahl der vorhandenen User, sowie deren Name in dem Dokument befindet.

außerdem soll noch ein Logo der Firma automatisch in der Dokument bei der Erzeugung eingepflegt werden.

Mit csv wird es denke ich nicht möglich sein.



Das sind meine ersten Überlegungen, allerdings wird in die HTML-Datei die Anzahl der Nutzer nicht mit exportiert.
Außerdem weiß ich keine Lösung für das Logo...

Kann mir da von euch wer weiterhelfen?

VG
31 Antworten
Mitglied: killtec
29.07.2015 um 15:27 Uhr
Hi,
wie wäre es, wenn du das als csv exportierst und das nachher via Makro in Exceleinlädst? Da hast du dann auch die Sache mit dem Logo :) face-smile

Gruß
Bitte warten ..
Mitglied: makaroni
29.07.2015 um 15:44 Uhr
Also das soll alles manuell via batch Datei für mehrere Domänen passieren. Wäre das damit auch umsetzbar? Mit Makros habe ich bis jetzt sehr wenig Berührung gehabt.. :) face-smile
Bitte warten ..
Mitglied: killtec
29.07.2015 um 16:03 Uhr
Manuell ist ok -> Du brauchst ein Excel auf dem System, dann frühst du das in der jeweiligen Domain aus und startest via Excel ein Makro.

Gruß
Bitte warten ..
Mitglied: AdminKnecht
LÖSUNG 29.07.2015 um 16:23 Uhr
Hallo makaroni,

probiere es mal mit diesem VB-Skipt, das liest dir aus einer AD-Datenbank eine bestimmte OU aus und erzeugt eine HTA-Datei (ähnlich einer HTM), dazu habe ich mir noch eingebaut, das nur Mitarbeiter einer bestimmten "Company" ausgelesen werden, passe das einfach für dich an:

In Zeile 67 packst du den Link zum Logo, in Zeile 87 die abzufragende OU, in Zeile 93 kannst du ggfs. noch das Feld "Company" abfragen:


Natürlich muss das Konto, unter dem du das Skript ausführst, auch entsprechende Berechtigungen haben :-) face-smile

Das ganze packst du in eine BAT und taksplanst das:


Schöne Grüße

Marcus
Bitte warten ..
Mitglied: makaroni
29.07.2015 um 16:46 Uhr
Hey Marcus,

danke für deine ausführliche Antwort. Es ist allerdings vorgesehen, dass dieses via Powershell umgesetzt werden soll.
Trotzdem vielen Dank
Bitte warten ..
Mitglied: makaroni
29.07.2015 um 16:47 Uhr
Oh pardon, ich meinte natürlich automatisch, jeden 1. Tag im Monat ...
Bitte warten ..
Mitglied: colinardo
LÖSUNG 29.07.2015, aktualisiert 19.08.2015
Aha, gibt wieder mal Makaroni :-) face-smile

Ich liefere den Emmentaler dazu ;-P

Im Beispiel wird das Logo als Base64 String direkt in die HTML-Datei eingebettet, man kann natürlich auch einen festen Pfad nehmen und das Bild verlinken, wie man es halt benötigt... Oder man schickt das ganze hinterher an einen PDF-Printer, jedem wie er es mag..

Ich habe deinen Code aufgegriffen und entsprechend ergänzt...
Eine Beispielhafte Ausgabe sieht dann so aus:

5d444259ece092948f81ace732a78a3a - Klicke auf das Bild, um es zu vergrößern

dem kreativen Gemüt sind bei der Gestaltung natürlich keine Grenzen gesetzt.

Als denn gutes Gelingen.
Grüße Uwe
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
Bitte warten ..
Mitglied: AdminKnecht
30.07.2015 um 12:52 Uhr
Super Uwe!

In der Powershell bin ich jetzt noch nicht soooooo firm, deswegen 2 Fragen dazu:

- wie bekomme ich die Namensliste alphabetisch sortiert?
- wie bekomme ich weitere AD-Attribute ausgegeben, z.B. POSTALCODE, L und DEPARTMENT etc.? Wenn ich das cmdlet get-adgroupmember benutze, bekomme ich ja nur 6 Attribute zurück...

Schöne Grüße

MArcus
Bitte warten ..
Mitglied: colinardo
LÖSUNG 30.07.2015, aktualisiert um 16:21 Uhr
Hallo Marcus,
- wie bekomme ich die Namensliste alphabetisch sortiert?
Zeile 87 so umschreiben:
wie bekomme ich weitere AD-Attribute ausgegeben
Mit (get-aduser USERNAME -Properties *) kommst du an alle Attribute eines Users, diese kannst du dann dem Objekt hinzufügen und in neuen Spalten im HTML-Code ausgeben.

Mach dir später noch ein Beispiel dazu wenn du nicht zurecht kommst ...

-edit- hier das Update das mit den Variablen im oberen Teil gesteuert werden kann:
Grüße Uwe
Bitte warten ..
Mitglied: AdminKnecht
31.07.2015 um 13:21 Uhr
..danke dir, Uwe! Ich versuche das mal auf die Reihe zu kriegen ... :-) face-smile

Du hast nun keine "Credentials" mehr benutzt für die Abfragen?

Schönes Wochenende,

Marcus
Bitte warten ..
Mitglied: colinardo
31.07.2015, aktualisiert um 13:26 Uhr
Zitat von @AdminKnecht:
Du hast nun keine "Credentials" mehr benutzt für die Abfragen?
Nein, habe das hier nur lokal getestet, deswegen, aber kannst du ja einfach wieder einbauen.

Ebenfalls ein schönes Wochenende
Grüße Uwe
Bitte warten ..
Mitglied: makaroni
19.08.2015 um 09:07 Uhr
Sehr geil Uwe, habe es gerade Mal getestet und es sieht super aus.
Vielen Dank :) face-smile

Eine Frage habe ich nun noch. Mehrere Benutzer sind in mehreren Gruppen enthalten. Soweit auch alles gut. Wie bekomme ich es allerdings hin, die Gesamtanzahl der Nutzer als -unique zu bekommen? Sprich ich benötige alle Gruppen mit allen Usern, das klappt ja schon und zum Schluss bei "Gesamtanzahl der User aus allen Gruppen: " die Anzahl der Nutzer ohne doppelte Gruppenzugehörigkeit.

Sprich Beispiel:

Gruppr A:

Test1
Test2
Test3

Gruppe B:
Test2
Test4

Gesamtanzahl der User aus allen Gruppen: 3
Also Test 2 soll nur einmal mitgezählt werden.

Wie kann ich das umsetzen?
Bitte warten ..
Mitglied: colinardo
19.08.2015 um 09:30 Uhr
Hallo Makaroni,
das wird im zweiten Skript bereits in Zeile 44 gemacht:
Grüße Uwe
Bitte warten ..
Mitglied: makaroni
19.08.2015 um 10:27 Uhr
Ja das hatte ich gesehen, es scheint aber nicht zu funktionieren. Die Gesamtanzahl beträgt ALLE Nutzer, die in den Gruppen sind, also auch doppelte werden mitgezählt. Ich verstehe ja, dass das Script nicht weiß, aus welcher Gruppe er die bereits vorhandenen User entfernen soll (für die Auflistung) , nur bei der Gesamtanzahl müsste ja eigentlich dann das unique greifen oder?!
Bitte warten ..
Mitglied: colinardo
19.08.2015, aktualisiert um 10:54 Uhr
Dann gebe mal explizit die Eigenschaft an welche unique sein soll, also
Das sollte auf jeden Fall auch bei dir problemlos laufen...was es hier auch zuverlässig tut ...
Bitte warten ..
Mitglied: makaroni
21.08.2015 um 09:48 Uhr
Leider nein :( face-sad

Habe es nochmal explizit mit Testgruppen getestet:

Gruppe1:
User 1
User 2

Gruppe2:
User 2

Gesamtanzahl der User aus allen Gruppen 3

Also eine Person zu viel.
Bitte warten ..
Mitglied: makaroni
21.08.2015 um 11:57 Uhr
So hat geklappt, ist klar dass das Unique nicht funktioniert hat. Er hat es ja nur auf die Gruppen angewandt.
Habe nun noch eine neue Variable in der Schleife der Gruppenmitglieder erstellt, die alle Mitglieder erhält, nicht nach Gruppen sortiert. und darauf dann ein Unique ausgeführt. Nun gehts :) face-smile Dankt Euch :) face-smile
Bitte warten ..
Mitglied: colinardo
21.08.2015, aktualisiert um 13:05 Uhr
So hat geklappt, ist klar dass das Unique nicht funktioniert hat. Er hat es ja nur auf die Gruppen angewandt.
Dann hast du es an der falschen Stelle angewandt, vermutlich auf $all, da wäre das klar.
Aber für die Gesamtanzahl der User kannst du auch folgendes hernehmen:

Bitte warten ..
Mitglied: makaroni
04.09.2015 um 10:52 Uhr
Hey Uwe,

ich hätte noch, für dich bestimmt eine sehr einfache, Frage. Ich möchte mit dem bereits oben genannten Skript, nun alle User auslesen, die NICHT deaktiviert sind.
Was muss ich da "kleines" noch hinzufügen? Mit Get-ADGroupmember bekomme ich es denke ich nicht hin. Wahrscheinlich muss ich Get-ADGroup einbinden.
Viele Grüße und vielen Dank schon einmal :) face-smile

Die Nudel
Bitte warten ..
Mitglied: colinardo
04.09.2015, aktualisiert um 11:25 Uhr
Moin again du Nudel ;-) face-wink,
dafür fügst du einfach im zweiten Skript noch der Variablen $aditionalProperties die Eigenschaft Enabled hinzu. Diese sagt aus ob ein Benutzeraccount aktiviert oder deaktiviert ist ($true / $false)

Dann filterst du die User einfach am Schluss bevor sie zur Variablen $all hinzugefügt werden noch zusätzlich mit
Fertig.

Grüße Uwe
Bitte warten ..
Mitglied: makaroni
04.09.2015 um 16:01 Uhr
Danke Uwe ;)

es workt :) face-smile

Schönes Wochenende
Bitte warten ..
Mitglied: colinardo
04.09.2015, aktualisiert um 16:07 Uhr
Zitat von @makaroni:
es workt :) face-smile
Schön :-) face-smile
Schönes Wochenende
Wünsche ich dir ebenfalls.
Bitte warten ..
Mitglied: makaroni
21.09.2015 um 16:17 Uhr
Hey ho zusammen,

wie behandel ich den Sonderfall, wenn es im AD Vertrauensstellungen zu anderen AD Controllern gibt und sich in einer Gruppe der Domäne (contoso.com) eine weitere Gruppe befindet, die in einer anderen Domäne (contoso1.com) bzw. Unterdomäne (demo.contoso.com) verwendet wird. Im Grunde könnte ich mir in den anderen Domänen den identischen User mit dem gleichen Passwort anlegen. Was ich allerdings als sehr unschöne und statische Methode sehe. Mein Powershellscript wirft mir dann den Berechtigungsfehler:


Hat jemand eine Idee?
Bitte warten ..
Mitglied: colinardo
21.09.2015, aktualisiert um 16:24 Uhr
Einen Admin nehmen der in "beiden" Domains über genügend Rechte verfügt.
Bitte warten ..
Mitglied: makaroni
08.10.2015 um 10:30 Uhr
Hey Uwe,

für Get-ADuser gibt es keine Properties, die anzeigen lassen, ob ein Account abgelaufen ist. Bislang lese ich ja nur die Accounts aus, die enabled sind. Allerdings sind auch Accounts enabled, die bereits abgelaufen sind. Diese Accounts möchte ich allerdings auch nicht in der Liste haben.

Ich kenne nur für Search-ADAccount das AccountExpiring Propertie.

Wie kann ich das denn in unser tolles Script noch mit einbauen, dass wirklich nur die Nutzer angezeigt werden, die sich ans System anmelden können?

Und sorry für meine viele Fragerei, ich bin auf einem guten Weg, das vllt irgendwann mal selber hinzubekommen.
Bitte warten ..
Mitglied: colinardo
LÖSUNG 08.10.2015, aktualisiert 20.10.2015
für Get-ADuser gibt es keine Properties, die anzeigen lassen, ob ein Account abgelaufen ist.
Doch die Eigenschaft gibt es..., lautet AccountExpirationDate
Beispiel
Grüße Uwe
Bitte warten ..
Mitglied: makaroni
20.10.2015 um 11:15 Uhr
ich habe immer neue Probleme :) face-smile

So kurz zur Sache:

Rootdomain: test.de
Subdomain: info.test.de

Eine universelle Gruppe:
test.de\Mitglied1
info.test.de\Sicherheitsgruppe

Nun möchte ich mit dem bereits hier "erarbeiteten" Skript, nur die User aus der Gruppe auslesen OHNE Recursive.
Also nur den user test.de\Mitglied1
Ausgelesen werden soll mit einem User nur mit Domänen User Berechtigungen aus der Rootdomain.
Trotz, dass ich die Gruppe nicht Recursive auslesen lasse, kommt der Credential error.

1. Frage: Müssen Universelle Gruppen anders ausgelesen werden als globale oder locale?
2. Frage: Überprüft das Skript trotzdem, obwohl ich nicht recursive auslesen lasse, die Credentials des Ordners?
3. Frage: Wie kann ich es umsetzen, ohne den Fehler zu bekommen und ohne dem Benutzer Enterprise Admin Rechte zu geben?

Viele Grüße und vielen Dank schon einmal :) face-smile
Bitte warten ..
Mitglied: makaroni
22.10.2015 um 08:10 Uhr
Alternativ gibt es eine Möglichkeit, mit einem identisch heißenden Benutzer sowie dem identischen Passwort in jeder Subdomain, das Script mit mehreren Credentials so anzupassen, dass aus allen Domains die Daten ausgelesen werden?
Ein Benutzer mit übergreifenden Berechtigungen der allerdings nur Domain User sein soll ist meines Wissens so nicht umsetzbar.

Ziel:
- Entweder für jede Domain bzw. Subdomain eine Auswertung (Problem Credentials s.o.)
- Oder eine Auswertung zusammen (ggf. mehrere Credentials, nur wie?)
Bitte warten ..
Mitglied: makaroni
28.10.2015 um 09:33 Uhr
Irgendwie lässt es mich die Gruppen ohne Recursion trotzdem nicht auslesen. Ich habe nun bzgl. meines Wissenstandes fast alles versucht. Hat keiner eine Idee wie ich das hinbekommen könnte?
Bitte warten ..
Mitglied: patrickebert
20.07.2016, aktualisiert um 08:05 Uhr
Klasse Script @colinardo

Spende folgt :D

Gibt es denn soetwas auch als Computerabfrage mit jeweiligen installierten Programmen?
Bitte warten ..
Mitglied: colinardo
20.07.2016, aktualisiert um 15:13 Uhr
Zitat von @patrickebert:
Klasse Script @colinardo
Bitte :-) face-smile
Spende folgt :D
Danke Dir :-) face-smile Das gibt extra Kugeln beim Italiener...
Gibt es denn soetwas auch als Computerabfrage mit jeweiligen installierten Programmen?
Kann man selbstverständlich auch machen, aber das gehört ja nicht in diesen Thread.

Grüße Uwe
Bitte warten ..
Heiß diskutierte Inhalte
Router & Routing
FB und Archer 2 getrennte Netze mit einer WAN-Verbindung
neuhier14Vor 18 StundenFrageRouter & Routing25 Kommentare

Hallo, ich habe eine Fritzbox 7490 und einen Archer C5 mit OpenWRT. Die Fritzbox ist mein Hauptrouter. Ich würde daneben gerne ein komplett getrenntes ...

Entwicklung
Plattformübergreifende Programmierung mit Visual Studio
gelöst nagitaVor 1 TagAllgemeinEntwicklung11 Kommentare

Hallo ich habe mir vor einiger Zeit die aktuellste Version von Visual Studio installiert und bin eigentlich auch recht zufrieden damit. Ich habe vor, ...

Netzwerke
PFSense und Transferprobleme
Xaero1982Vor 1 TagFrageNetzwerke23 Kommentare

Moin Zusammen, leidiges Thema PFSense - ich hab mich mal wieder ran gewagt. Ich hab hier so ein paar VLANs laufen und nen ESX. ...

Datenbanken
Liste als PDF ausdrucken
jensgebkenVor 1 TagFrageDatenbanken6 Kommentare

Hallo Gemeinschaft, Ich habe eine Access Datenbank und darin eine Abfrage in der Kunden Adressen und Kosten angezeigt werden pro Kunde. Nun möchte ich, ...

Exchange Server
Postfach für öffentliche Ordner ist voll
gelöst Tommy525600Vor 1 TagFrageExchange Server6 Kommentare

Hallo an alle, ich habe folgendes Problem: Mein primäres Postfach für öffentliche Ordner ist voll (99,58 GB) (und ja, ich kann auch nix dafür). ...

Linux
Bootable Win7 stick from Raspberry commandline
winlinVor 14 StundenFrageLinux12 Kommentare

Hallo zusammen Ich benötige einen bootfähigen Win7 USB Stick. Muss diesen über meine Raspberry erstellen. Was ist die beste Variante habe schon ein paar ...

Windows Server
Kein Netzwerkzugriff auf Windows Server 2019?
Henk86Vor 1 TagFrageWindows Server8 Kommentare

Ich habe mir einen neuen "Heimserver" mit Windows Server 2019 (evaluation vorerst) aufgesetzt. Gestern habe ich von meinem Hauptrechner einige Daten auf den Server ...

Windows Server
Problem bei Windows 10 Deployment mit MDT
gelöst neophyte2021Vor 1 TagFrageWindows Server7 Kommentare

Hallo, ich habe folgendes Problem, ich habe in einem Artikel auf englisch gelesen, das wenn man mit dem MDT Windows 10 ausrollen will und ...