BlacksGood 5 Geschrieben 11. Oktober 2021 Melden Teilen Geschrieben 11. Oktober 2021 (bearbeitet) Moin Leute, ich baue derzeit ein Script und hab dazu eine Frage. In diesem Script werden jede Menge Berechtigungen gesetzt und läuft über CSV-Dateien. Jeder User bekommt Gruppen zugeordnet, die wiederum in der CSV stehen. Nun hat natürlich nicht jeder User die gleiche Anzahl an Gruppen. Ein Beispiel: user,gruppe1,gruppe2,gruppe3,gruppe4,gruppe5,gruppe6 max.mustermann,test1,test2,test3,test4,test5,test6 frau.mustermann,test1,test2,test,3,test4 Nun würde bei einem normalen Ablauf natürlich der Fehler kommen, dass es in der CSV bei dem 2. Eintrag keine Gruppe5 und 6 gibt. Theoretisch würde ich mit if($null -ne $user.group2) arbeiten und so nach und nach prüfen, ob in jeder Gruppe der CSV was steht. Die if-Anweisung wäre dann aber ewig lang und ich frage mich, ob es da etwas schöneres gibt und ihr mir da helfen könntet? Liebe Grüße und Danke schon mal. bearbeitet 11. Oktober 2021 von BlacksGood Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 11. Oktober 2021 Melden Teilen Geschrieben 11. Oktober 2021 vor 4 Minuten schrieb BlacksGood: Die if-Anweisung wäre dann aber ewig lang und ich frage mich, ob es da etwas schöneres gibt und ihr mir da helfen könntet? Es wäre meiner Meinung nach einfacher, wenn es eine Spalte für die Gruppen gäbe und Du die einfach einem Rutsch den Usern zuweist. Zitieren Link zu diesem Kommentar
BlacksGood 5 Geschrieben 11. Oktober 2021 Autor Melden Teilen Geschrieben 11. Oktober 2021 Ja, nur in einer Spalte, kann doch nur eine Gruppe stehen, CSV eben. Oder versteh ich dich grade falsch? Zitieren Link zu diesem Kommentar
winmadness 79 Geschrieben 11. Oktober 2021 Melden Teilen Geschrieben 11. Oktober 2021 vor 18 Minuten schrieb BlacksGood: user,gruppe1,gruppe2,gruppe3,gruppe4,gruppe5,gruppe6 Mache eine Foreach Schleife für die Gruppenfelder gruppe1 bis gruppe 6. In dieser Schleife dann die if-Abfrage mit Berechtigung setzen. Zitieren Link zu diesem Kommentar
BlacksGood 5 Geschrieben 11. Oktober 2021 Autor Melden Teilen Geschrieben 11. Oktober 2021 Gerade eben schrieb winmadness: Mache eine Foreach Schleife für die Gruppenfelder gruppe1 bis gruppe 6. In dieser Schleife dann die if-Abfrage mit Berechtigung setzen. Kannst du mir mal ein Beispiel aufschreiben? Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 11. Oktober 2021 Melden Teilen Geschrieben 11. Oktober 2021 (bearbeitet) Die CSV müsste dann ungefähr so aussehen: user,gruppen max.mustermann,"test1,test2,test3,test4,test5,test6" frau.mustermann,"test1,test2,test,3,test4" Und mit https://docs.microsoft.com/en-us/powershell/module/activedirectory/add-adprincipalgroupmembership?view=windowsserver2019-ps kannst Du in einem Rutsch mehrere Gruppenmitgliedschaften für einen User konfigurieren. bearbeitet 11. Oktober 2021 von BOfH_666 Zitieren Link zu diesem Kommentar
BlacksGood 5 Geschrieben 11. Oktober 2021 Autor Melden Teilen Geschrieben 11. Oktober 2021 (bearbeitet) vor 57 Minuten schrieb BOfH_666: Die CSV müsste dann ungefähr so aussehen: user,gruppen max.mustermann,"test1,test2,test3,test4,test5,test6" frau.mustermann,"test1,test2,test,3,test4" Und mit https://docs.microsoft.com/en-us/powershell/module/activedirectory/add-adprincipalgroupmembership?view=windowsserver2019-ps kannst Du in einem Rutsch mehrere Gruppenmitgliedschaften für einen User konfigurieren. Ja, es geht aber nicht um Sicherheitsgruppen sondern um Postfachberechtigungen ;) hätte ich vllt. dazu schreiben sollen Bei SharePointOnline Gruppen mach ich das derzeit so in einem anderen Script( auch das Script ist erstmal nur hingerotzt, also nicht wundern): foreach($user in $import){ Add-PnPUserToGroup -Identity $user.group1 -EmailAddress $user.mail -SendEmail if($null -ne $user.group2) { Add-PnPUserToGroup -Identity $user.group3 -EmailAddress $user.mail } if($null -ne $user.group3) { Add-PnPUserToGroup -Identity $user.group2 -EmailAddress $user.mail } } Bei, in dem Fall, maximal 3 Gruppen, ist das ok....aber nicht wenn das deutlich mehr sind. Da wird das IF einfach ewig lang. bearbeitet 11. Oktober 2021 von BlacksGood Zitieren Link zu diesem Kommentar
Beste Lösung BOfH_666 577 Geschrieben 11. Oktober 2021 Beste Lösung Melden Teilen Geschrieben 11. Oktober 2021 (bearbeitet) vor 2 Stunden schrieb BlacksGood: Ja, es geht aber nicht um Sicherheitsgruppen sondern um Postfachberechtigungen ;) hätte ich vllt. dazu schreiben sollen Es wär natürlich ne gute Idee, nicht nach "X" zu fragen, wenn Du eigentlich "Y" wissen willst. vor 2 Stunden schrieb BlacksGood: Bei, in dem Fall, maximal 3 Gruppen, ist das ok....aber nicht wenn das deutlich mehr sind. Da wird das IF einfach ewig lang. Wenn Du in der Spalte mit den Gruppen/Berechtigungen mehrere durch Trennzeichen getrennte Einträge drin hast, kannst Du die mittels "-split" in ein Array aufspalten und dann mit einer Schleife über dieses Array "drüber-iterieren". ... da brauchst Du keine 100 if's untereinanderzupacken. Edit: also sowas hier: $CSVInput = @' user,gruppen max.mustermann,"test1,test2,test3,test4,test5,test6" frau.mustermann,"test1,test2,test,3,test4" '@ | ConvertFrom-Csv -Delimiter ',' foreach ($Item in $CSVInput) { $GruppenListe = $Item.gruppen -split ',' foreach ($Gruppe in $GruppenListe) { [PSCustomObject]@{ User = $Item.User Gruppe = $Gruppe } } } bearbeitet 11. Oktober 2021 von BOfH_666 Zitieren Link zu diesem Kommentar
BlacksGood 5 Geschrieben 11. Oktober 2021 Autor Melden Teilen Geschrieben 11. Oktober 2021 vor 19 Minuten schrieb BOfH_666: Es wär natürlich ne gute Idee, nicht nach "X" zu fragen, wenn Du eigentlich "Y" wissen willst. Wenn Du in der Spalte mit den Gruppen/Berechtigungen mehrere durch Trennzeichen getrennte Einträge drin hast, kannst Du die mittels "-split" in ein Array aufspalten und dann mit einer Schleife über dieses Array "drüber-iterieren". ... da brauchst Du keine 100 if's untereinanderzupacken. mh, hast du dafür mal ein Beispiel? Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 11. Oktober 2021 Melden Teilen Geschrieben 11. Oktober 2021 vor 1 Minute schrieb BlacksGood: mh, hast du dafür mal ein Beispiel? siehe oben! Zitieren Link zu diesem Kommentar
BlacksGood 5 Geschrieben 11. Oktober 2021 Autor Melden Teilen Geschrieben 11. Oktober 2021 ah danke für das Beispiel. Das probiere ich morgen direkt mal aus ;) Zitieren Link zu diesem Kommentar
daabm 1.366 Geschrieben 11. Oktober 2021 Melden Teilen Geschrieben 11. Oktober 2021 vor 39 Minuten schrieb BOfH_666: max.mustermann,"test1,test2,test3,test4,test5,test6" Wir denken gleich - genau das hätte ich auch gemacht. Besser zwar gleich ein XML als Input, aber wer weiß wie dieser Input entsteht Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 11. Oktober 2021 Melden Teilen Geschrieben 11. Oktober 2021 vor 7 Minuten schrieb daabm: Besser zwar gleich ein XML als Input hmmmm .... na das nur wenn's nicht anders geht ... also wenn's eher hierarchische Daten sind ... aber das trifft ja in diesem Fall noch nicht zu. Zitieren Link zu diesem Kommentar
daabm 1.366 Geschrieben 11. Oktober 2021 Melden Teilen Geschrieben 11. Oktober 2021 XML wäre halt maximal flexibel, da kannst beliebig viele <memberof group="Test1" /> einbauen und mit foreach drüberlaufen. Und wenn Dir später noch mehr einfällt, kannst es sehr einfach dazufrickeln Zitieren Link zu diesem Kommentar
BlacksGood 5 Geschrieben 13. Oktober 2021 Autor Melden Teilen Geschrieben 13. Oktober 2021 @BOfH_666 Danke, das klappt super so! 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.