PS0815 0 Geschrieben 25. November 2020 Melden Teilen Geschrieben 25. November 2020 Hallo Forum, ich habe folgendes Problem und zwar habe ich eine Excel Liste mit über 100 Gruppen und den jeweils gewünschten Mitgliedern erhalten. (die AD Gruppen habe ich bereits erstellt) Diese würde ich nun gerne über PowerShell im AD anlegen, mein Skript funktioniert auch soweit, allerdings nur so lange ich nur immer ein Mitglied der Gruppe hinzufüge, sobald mehrere Personen hinzugefügt werden sollen, endet das Skript zwar ohne Fehler ordnungsgemäß, allerdings wird auch kein Mitglied der AD Gruppe hinzugefügt. Leider finde ich hier selbst den Fehler nicht und würde mich freuen, wenn jemand von Euch die passende Lösung für mich hat. Wenn ich die Excel Datei im .csv Format abspeichere, erhalte ich folgendes Format: Name;upn Gruppenname01;"user.user01@contoso.com user.user02@contoso.com user.user03@contoso.com" Mein PS Skript: Import-Module ActiveDirectory $csv = import-csv "irgendeinpfad\Dateiname.csv" -Delimiter ";" #$csv = Import-Excel "irgendeinpfad\Dateiname.xlsx" Foreach ($item in $csv) { #Specifying which items in the CSV will be applied to the $upn variable. $upn = $item.upn #The user name is retrieved by filtering each e-mail address that is listed in the UPN part of the CSV. get-aduser -filter "userprincipalname -eq '$upn'" | #The user name(s) that have been retrieved are now added to the AD groups found in the CSV. % {add-adgroupmember -identity $item.name -members $_} } - Ich habe es sowohl über das erhaltene Excel Format versucht, als auch als Trennzeichen-getrenntes .csv versucht. - " entfernt, damit die Mitglieder nicht als ein einziger Name interpretiert werden - die Mitgliedernamen hintereinander mit , geschrieben (mit und ohne Anführungszeichen etc. aber bisher hat nichts zum Erfolg geführt. Mir ist klar das eine E-Mail Adresse bzw. in dem Fall der upn nicht für Add-ADGroupMember geeignet ist (aber nur diesen habe ich zur Verfügung), allerdings würde es mich dennoch interessieren warum es mit einem User funktioniert und mit mehr als einen nicht? Es würde mich wirklich sehr freuen, wenn ich nicht nun bei über 100 AD Gruppen "per Hand" die Mitglieder hinzufügen müsste. :-( Für Eure Antworten bedanke ich mich im Voraus! Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 25. November 2020 Melden Teilen Geschrieben 25. November 2020 (bearbeitet) Deine CSV-Datei hat ein ungünstiges Format. Sowas Ähnliches wie das sollte genügen, denke ich: $csv = import-csv 'irgendeinpfad\Dateiname.csv' -Delimiter ';' Foreach ($item in $csv) { Add-ADGroupMember -Identity $item.name -members ($Item.upn -split ' ') } ... natürlich ungetestet ... Edit: Achso ... das setzt natürlich voraus, dass in deiner CSV-datei die UserPrincipalNames mit Leerzeichen innerhalb des Strings getrennt sind. Wenn es wirklich Zeilenumbrüche sind, musst Du das Zeichen für den -Split anpassen ... oder die CSV-Datei vorher entsprechend aufbereiten. bearbeitet 25. November 2020 von BOfH_666 1 Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 25. November 2020 Melden Teilen Geschrieben 25. November 2020 Alternativ zwei Schleifen. Einmal pro Gruppe und einmal für alle UPN's. 1 Zitieren Link zu diesem Kommentar
daabm 1.366 Geschrieben 25. November 2020 Melden Teilen Geschrieben 25. November 2020 Ich bin bei Olaf - das ist ein ungünstiges Format. Du kannst dem Add-ADGroupMember schon ein Array von Usern mitgeben, die aufgenommen werden sollen. Aber dazu muß es aus Powershell-Sicht auch ein Array sein. Wenn Du UPNs bekommst (und zwar wirklich UPNs und nicht Mailadressen), dann kannst Du die auch direkt in ein Array stecken und übergeben, es wäre nicht nötig, sich die User-Objekte dafür einzeln zu holen. In deinem Code dürfte bei mehr als 1 Member schon Get-ADUser scheitern - dem kann man das so nicht übergeben. Weil es einfach keinen User gibt, dessen UPN so aussieht: "user.user01@contoso.com user.user02@contoso.com user.user03@contoso.com" Damit übergibst Du natürlich danach eine leere Memberliste Excel (bzw. Tabellen) gehen als Input für so was schon. Aber da Excel keine "nested tables" hat, brauchst Du als Input eine Tabelle mit genau 1 Gruppe, 1 User pro Zeile. Dann ist es easy. In Powershell würde man dafür ein PSCustomObject erstellen. Property "Name" wäre der Name der Gruppe, und Property "Members" wäre ein Array (!) der Mitglieder. Und genau dieses Array liefert Dir Import-CSV nicht. HTH, auch wenn's etwas wirr formuliert ist... 1 Zitieren Link zu diesem Kommentar
PS0815 0 Geschrieben 30. November 2020 Autor Melden Teilen Geschrieben 30. November 2020 Hallo, vielen Dank für Eure schnellen Antworten zu meinen Problem. Ihr habt alle 3 zu meiner Lösung beigetragen. Kurz zu meiner "Ehrenrettung", ich habe die Liste nicht selbst verbrochen, sondern in diesem Format erhalten. Die Lösung war für mich sowohl -split als auch eine zweite Schleife einzubauen und die Liste mit Notepad++ etwas zeitaufwändig zu bearbeiten. Vielen Dank noch einmal für Eure schnelle Hilfe! 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.