TobiBe92 1 Geschrieben 23. September 2021 Melden Teilen Geschrieben 23. September 2021 (bearbeitet) Hallo zusammen, Schon mal vorab, ich hab absolut keine Erfahrung mit PowerShell. Es geht darum, dass ich herausfinden muss, welche Benutzer in einer oder mehreren Gruppen sind, die immer mit V beginnen und dann 8 Nummer folgen z. B. V12345678. Also ich sehe die Gruppe V12345678 und gehe dann da auf Mitglieder, die Mitglieder die ich darin auffinde, soll ich über Powershell ausgeben. Da sind da sind dann 0 bis x Mitglieder drin, diese sollten Pro V* - Gruppe angezeigt werden. Da es aber mehrere Gruppen im Active Directory gibt, muss ich das da ja schon mal Filtern aufg Gruppen, die mit V beginnen und 8 Zahlen folgen. Der nächste Schritt wäre, diese dann zählen zu lassen. Was noch wichtig wäre ist, dass man rausfindet, ob ein Mitglied einer solchen V* - Gruppe dann auch noch in anderen V* - Gruppen ist oder nicht. Hintergrund ist der, dass ich schauen muss ob sich eine Lizenz pro Maschine mehr lohnt oder Lizenzen für User. Es geht um Virtuelle Umgebung Lizenzen. Ich hab jetzt Stundenlang gegooglet, finde immer wieder sowas wie Get-ADUser oder Get-ADGroupMember aber ich hab keinerlei Erfahrungen im programmieren, sodass mir diese Filterlogik und die Syntax nicht einfällt. Könnte mir da jemand bitte eine kleine Starthilfe geben? bearbeitet 23. September 2021 von TobiBe92 Zitieren Link zu diesem Kommentar
cj_berlin 1.329 Geschrieben 23. September 2021 Melden Teilen Geschrieben 23. September 2021 Moin, naja, mit Get-ADUser bist Du ja schon fast am Ziel, ein user hat ja ein berechnetes Attribut memberOf 1 Zitieren Link zu diesem Kommentar
TobiBe92 1 Geschrieben 23. September 2021 Autor Melden Teilen Geschrieben 23. September 2021 vor 23 Minuten schrieb cj_berlin: Moin, naja, mit Get-ADUser bist Du ja schon fast am Ziel, ein user hat ja ein berechnetes Attribut memberOf Hallo :) danke erst mal für Ihre Antwort. Also damit hab ichs mal probieren wollen: Get-ADUser | WHERE {$_.MemberOf -eq "V*"} Ich komm nicht drauf, wie man Powershell sagt, dass nach dem V noch 8 Zahlen kommen Wenn ich Get-ADUser | WHERE {$_.MemberOf -eq "V*"} eingebe, dann fragt mich die Konsole nach einem Filter, wüsste aber nicht was da hinkommt, hab den doch im Code? Zitieren Link zu diesem Kommentar
cj_berlin 1.329 Geschrieben 23. September 2021 Melden Teilen Geschrieben 23. September 2021 Naja, ganz so simpel ist es nicht. Get-ADUser musst Du erst mal sagen, dass memberOf benötigt wird. Dann stehen im memberOf nicht Namen, sondern Distinguished Names von Gruppen Und das mit 8 Zeichen: Regulärer Ausdruck. Jetzt hast Du wieder was zum Googlen. 1 Zitieren Link zu diesem Kommentar
TobiBe92 1 Geschrieben 23. September 2021 Autor Melden Teilen Geschrieben 23. September 2021 vor 3 Stunden schrieb cj_berlin: Naja, ganz so simpel ist es nicht. Get-ADUser musst Du erst mal sagen, dass memberOf benötigt wird. Dann stehen im memberOf nicht Namen, sondern Distinguished Names von Gruppen Und das mit 8 Zeichen: Regulärer Ausdruck. Jetzt hast Du wieder was zum Googlen. Super, vielen Dank erst mal, also zu Punkt ein, da habe ich -Properties memberOf gefunden, das passt, jetzt weiß Get-AdUser dass das dabei sein muss und es wird auhc angezeigt. bezüglich des regulären Ausdrucks bin ich auf -match gestoßen, vermute mal, dass es eine mischung aus einem Quantifizierer und noch etwas sein muss, dass es mir erlaubt, nur nach usern zu suchen die V und 8 drauffolgende Random zahlen beinhaltet, da steh ich aber auf dem Schlauch, mir fehlt die logische Umsetzung. Bin ich aufm Holzweg? 1 Zitieren Link zu diesem Kommentar
cj_berlin 1.329 Geschrieben 23. September 2021 Melden Teilen Geschrieben 23. September 2021 (bearbeitet) vor 1 Minute schrieb TobiBe92: Bin ich aufm Holzweg? Nö, alles richtig bearbeitet 23. September 2021 von cj_berlin 3 Zitieren Link zu diesem Kommentar
NilsK 2.957 Geschrieben 23. September 2021 Melden Teilen Geschrieben 23. September 2021 Moin, ja, soweit passen die Erkenntnisse schon. Abhängig von der Umgebung kann es allerdings sein, dass der logische Ansatz trotzdem nicht passt: mit dem Verfahren über "memberOf" findet man nur direkte Mitglieder der Gruppen, keine indirekten (wenn also ein User nur in einer "GruppeX" ist und diese Gruppe ist per Verschachtelung Mitglied einer gesuchten Gruppe "GroupY", dann taucht die gesuchte Gruppe "GroupY" unter "memberOf" nicht auf) in großen AD-Umgebungen kann dieses Vorgehen viel Last erzeugen, weil vom DC zu Client alle Daten übertragen werden müssen und erst der Client das Filtern übernimmt Ist das eine Ausbildungs-Aufgabe? Oder geht es nur darum, das Ergebnis zu erhalten? Gruß, Nils 2 Zitieren Link zu diesem Kommentar
TobiBe92 1 Geschrieben 29. September 2021 Autor Melden Teilen Geschrieben 29. September 2021 (bearbeitet) Am 23.9.2021 um 17:13 schrieb NilsK: Moin, ja, soweit passen die Erkenntnisse schon. Abhängig von der Umgebung kann es allerdings sein, dass der logische Ansatz trotzdem nicht passt: mit dem Verfahren über "memberOf" findet man nur direkte Mitglieder der Gruppen, keine indirekten (wenn also ein User nur in einer "GruppeX" ist und diese Gruppe ist per Verschachtelung Mitglied einer gesuchten Gruppe "GroupY", dann taucht die gesuchte Gruppe "GroupY" unter "memberOf" nicht auf) in großen AD-Umgebungen kann dieses Vorgehen viel Last erzeugen, weil vom DC zu Client alle Daten übertragen werden müssen und erst der Client das Filtern übernimmt Ist das eine Ausbildungs-Aufgabe? Oder geht es nur darum, das Ergebnis zu erhalten? Gruß, Nils Moin, entschuldigen Sie die späte Antwort, ich hatte Berufsschule :). Ich befinde mich tatsächlich in der Ausbildung, jedoch ist das Ergebnis das Entscheidende. Man möchte anhand der Anzahl die ich da rausbekomme entscheiden, ob man Lizenzen pro Maschine oder Lizenzen pro User kauft. Daher ist das eine Mischung aus lernen und Ergebnis, vermute ich mal. :) Ich denke aber, dass das Ergebnis im Vordergrund steht. Ich habe auch nochmals einen Arbeitskollegen gefragt, er meinte ich muss eher in diese Richtung: Get-ADGroup -Filter 'name -like "V*RDP*"' Wobei der Filter noch immer nicht korrekt ist, zumindest sehe ich so erst mal alle Gruppen die mit V beginnen , da müsste ich noch den regulären Ausdruck hinklatschen, damit er auch nur nach V12345678, also mit 8 random zahlen sucht. Danach muss ich wohl nur noch aus diesen Gruppen die User rausziehen, quasi alle groupmember in Gruppen mit dem genannten Filter. Igrendwie fühlt sicht da aber noch was falsch an, weiß nur nicht was :D. Die aktuelle Fragestellung ist: Welche User sind in Gruppe V* mit 8 random zahlen, also die Gruppennamen sehen immer so aus: V12345678_RDP-Users V12345678_Administrators Zahlen 1-8 sind immer unterschiedlich LG bearbeitet 29. September 2021 von TobiBe92 Zitieren Link zu diesem Kommentar
TobiBe92 1 Geschrieben 29. September 2021 Autor Melden Teilen Geschrieben 29. September 2021 Am 23.9.2021 um 17:13 schrieb NilsK: Moin, ja, soweit passen die Erkenntnisse schon. Abhängig von der Umgebung kann es allerdings sein, dass der logische Ansatz trotzdem nicht passt: mit dem Verfahren über "memberOf" findet man nur direkte Mitglieder der Gruppen, keine indirekten (wenn also ein User nur in einer "GruppeX" ist und diese Gruppe ist per Verschachtelung Mitglied einer gesuchten Gruppe "GroupY", dann taucht die gesuchte Gruppe "GroupY" unter "memberOf" nicht auf) in großen AD-Umgebungen kann dieses Vorgehen viel Last erzeugen, weil vom DC zu Client alle Daten übertragen werden müssen und erst der Client das Filtern übernimmt Ist das eine Ausbildungs-Aufgabe? Oder geht es nur darum, das Ergebnis zu erhalten? Gruß, Nils Hab nochmals nachgefragt, das Ergebnis hat Prio, ist also keine Ausbildungs-Aufgabe :) Zitieren Link zu diesem Kommentar
NilsK 2.957 Geschrieben 29. September 2021 Melden Teilen Geschrieben 29. September 2021 Moin, um wie viele Gruppen geht es denn? Und gibt es da auch Verschachtelungen, wie ich oben beschrieben habe? Ist sichergestellt, dass jeder User nur in maximal einer dieser Gruppen ist? (Sonst müsstest du bei deiner Frage ja auch noch die Mehrfachmitgliedschaften ausfiltern.) Bei solchen einmaligen Auswertungen mache ich es mir normalerweise einfach, aber was "einfach" ist, hängt natürlich von der Gesamtmenge ab. Gruß, Nils 2 Zitieren Link zu diesem Kommentar
TobiBe92 1 Geschrieben 29. September 2021 Autor Melden Teilen Geschrieben 29. September 2021 (bearbeitet) vor 55 Minuten schrieb NilsK: Moin, um wie viele Gruppen geht es denn? Und gibt es da auch Verschachtelungen, wie ich oben beschrieben habe? Ist sichergestellt, dass jeder User nur in maximal einer dieser Gruppen ist? (Sonst müsstest du bei deiner Frage ja auch noch die Mehrfachmitgliedschaften ausfiltern.) Bei solchen einmaligen Auswertungen mache ich es mir normalerweise einfach, aber was "einfach" ist, hängt natürlich von der Gesamtmenge ab. Gruß, Nils Guten Morgen, vielen Dank für die Rückmeldung. Also ein User kann in mehreren solcher Gruppen sein. Es sind schon über 100 Gruppen :). Also ich dachte, dass es genügt, dass von jeder Gruppe die User angezeigt werden, wenn User in mehreren Gruppen sind, müsste man sie ja trotzdem sehen, dann müsste man das halt auch nochmals zählen oder habe ich einen Denkfehler? Quasi so: in Grupe V12345678 ist User XY und wird somit angezeigt in Gruppe V45678321 ist User XY ebenfalls und wird nochmals angezeigt, dann müsste ich das ja nur berücksichtigen, dass der User auch in Gruppe X mit dabei ist? bearbeitet 29. September 2021 von TobiBe92 Zitieren Link zu diesem Kommentar
NilsK 2.957 Geschrieben 29. September 2021 Melden Teilen Geschrieben 29. September 2021 Moin, also, ich würde die Aufgabe so lösen: Schritt 1: Ausgeben aller gewünschten Gruppen in eine CSV-Datei Dazu nähme ich adfind.exe von joeware.net. Da kann man mit LDAP-Filtern arbeiten. Hier braucht man im Wesentlichen den Namen und den distinguishedName pro Gruppe. Eine Gruppe pro Zeile. Schritt 2: Bearbeiten der Gruppenliste mit Excel Excel fungiert im Folgenden als Skriptgenerator. Hier würde ich mir mit den Stringfunktionen für jede Gruppe ein adfind-Kommando bauen, das mir die Mitglieder der betreffenden Gruppe ausgibt. Das geht so: [Excel: Admins unbekannter Liebling | faq-o-matic.net]https://www.faq-o-matic.net/2008/01/19/excel-admins-unbekannter-liebling/ Hier unterscheidet sich dann die Logik: Falls es Verschachtelung gibt, User also indirekte Gruppenmitglieder sein können, dann früge ich das attribut "tokenGroups" ab und suchte also nach solchen Usern, denen die Gruppenmitgliedschaft zugeordnet wird. adfind.exe kann das. Ist Verschachtelung kein Thema, dann ist es einfacher: Zu jeder Gruppe nur den Inhalt des Attibuts "member" ausgeben. Ausgabe wieder in eine CSV-Datei. Schritt 3: Bearbeiten der Mitgliederliste Nun kann man die Mitgliederliste auch noch in Excel öffnen, um die Dubletten (Mehrfachmitgliedschaften) loszuwerden. Dafür hat Excel eine Funktion, die das direkt macht. Gruß, Nils 2 Zitieren Link zu diesem Kommentar
TobiBe92 1 Geschrieben 29. September 2021 Autor Melden Teilen Geschrieben 29. September 2021 (bearbeitet) vor 15 Minuten schrieb NilsK: Moin, also, ich würde die Aufgabe so lösen: Schritt 1: Ausgeben aller gewünschten Gruppen in eine CSV-Datei Dazu nähme ich adfind.exe von joeware.net. Da kann man mit LDAP-Filtern arbeiten. Hier braucht man im Wesentlichen den Namen und den distinguishedName pro Gruppe. Eine Gruppe pro Zeile. Schritt 2: Bearbeiten der Gruppenliste mit Excel Excel fungiert im Folgenden als Skriptgenerator. Hier würde ich mir mit den Stringfunktionen für jede Gruppe ein adfind-Kommando bauen, das mir die Mitglieder der betreffenden Gruppe ausgibt. Das geht so: [Excel: Admins unbekannter Liebling | faq-o-matic.net]https://www.faq-o-matic.net/2008/01/19/excel-admins-unbekannter-liebling/ Hier unterscheidet sich dann die Logik: Falls es Verschachtelung gibt, User also indirekte Gruppenmitglieder sein können, dann früge ich das attribut "tokenGroups" ab und suchte also nach solchen Usern, denen die Gruppenmitgliedschaft zugeordnet wird. adfind.exe kann das. Ist Verschachtelung kein Thema, dann ist es einfacher: Zu jeder Gruppe nur den Inhalt des Attibuts "member" ausgeben. Ausgabe wieder in eine CSV-Datei. Schritt 3: Bearbeiten der Mitgliederliste Nun kann man die Mitgliederliste auch noch in Excel öffnen, um die Dubletten (Mehrfachmitgliedschaften) loszuwerden. Dafür hat Excel eine Funktion, die das direkt macht. Gruß, Nils Vielen lieben Dank für den Lösungsvorschlag, jedoch habe ich keine Rechte um irgendetwas zu installieren und das wird hier auch eher ungern gesehen, heißt also, dass ich zu 99% nichts downloaden darf. Komme also nicht an die adfind.exe ran :/. Wenn ich auf den Downloadlink klicke, kommt 404: Eror File or Directory not found. Ist sogar dort schon gesperrt Bin da leider an Powershell gebunden bearbeitet 29. September 2021 von TobiBe92 Zitieren Link zu diesem Kommentar
NilsK 2.957 Geschrieben 29. September 2021 Melden Teilen Geschrieben 29. September 2021 Moin, und wenn du für die IT so eine Aufgabe lösen sollst, lässt sich da nix machen? Meiner Erfahrung nach kann man mit Leuten reden. Am Ende hängt es aber auch nicht an adfind.exe, das macht es nur viel einfacher, als wenn man alles in PS selbst bauen muss. Du kannst den Aufbau in mehreren Schritten ja auch mit der PowerShell machen. Ich finde es halt, wenn es nur einmalig sein soll, in aller Regel viel einfacher, für sowas keine verschachtelten Programmschleifen bauen zu müssen, bei denen man schnell Fehler einbaut und die viel Aufwand beim Testen machen. Daher zerlege ich sowas lieber, auch wenn es nicht so elegant ist. Gruß, Nils 2 Zitieren Link zu diesem Kommentar
TobiBe92 1 Geschrieben 29. September 2021 Autor Melden Teilen Geschrieben 29. September 2021 vor einer Stunde schrieb NilsK: Moin, und wenn du für die IT so eine Aufgabe lösen sollst, lässt sich da nix machen? Meiner Erfahrung nach kann man mit Leuten reden. Am Ende hängt es aber auch nicht an adfind.exe, das macht es nur viel einfacher, als wenn man alles in PS selbst bauen muss. Du kannst den Aufbau in mehreren Schritten ja auch mit der PowerShell machen. Ich finde es halt, wenn es nur einmalig sein soll, in aller Regel viel einfacher, für sowas keine verschachtelten Programmschleifen bauen zu müssen, bei denen man schnell Fehler einbaut und die viel Aufwand beim Testen machen. Daher zerlege ich sowas lieber, auch wenn es nicht so elegant ist. Gruß, Nils Hey, nein leider nicht, Die sind da sehr streng und da es ja eine andere Möglichkeit gibt, die zur Verfügung steht, erwarten die halt, dass ich damit eine Lösung finde. Das Argument nachdem ich darauf verwiesen habe, dass es so so weniger kompliziert machbar wäre, meinten sie nur, dass das über Powershell auch nicht schwer sei. Ich komm jedoch nicht auf die Lösung.. Die Infos die ich noch erfragt habe war, dass man sowohl die V*-Gruppen_RDP_users braucht als auch die V*-Gruppen_Administratoren, es ist egal wenn Benutzer in mehrere Gruppen sind, bzw. die zählen auch. dDie zählen also mit in die Zählung, wenn ein User in 5 Gruppen ist, zählt er 5 mal. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.