BlacksGood 5 Geschrieben 3. Mai 2021 Melden Teilen Geschrieben 3. Mai 2021 Moin, ich hab eine recht spezifische Frage, was das Scripting bei mehreren Gruppen für Berechtigungen angeht. Im speziellen Fall hier geht es um SharePointOnline. Ich denke, aber dass die Logik, die ich suche, eher im Allgemeinen zu finden ist. Folgendes Problem: Auf einer SharePointSeite gibt es mehrere Gruppe, die die Berechtigungen für diese Seite steuern. Zum Beispiel: Gruppe 1, Gruppe 2 und Gruppe 3. Um nun die Rechte der vielen Benutzer zu setzen, wird eine CSV-Datei erstellt, mit der Mailadresse der Benutzer und welche Gruppen sie haben sollen. Zum Beispiel: mail,recht1,recht2,recht3 test1@domain.de,Gruppe1,Gruppe2,Gruppe3 test2@domain.de,Gruppe1 test3@domain.de,Gruppe2,Gruppe3 Der Befehl hier ist vollständigskeitshalber der folgende (Ausschnitt aus dem Script): foreach($user in $import) { Add-PnPUserToGroup -Identity $user.recht1 -EmailAddress $user.mail -SendEmail -EmailBody "Hallo Kollege, dein Recht wurde erteilt. Test Test Test } Ich könnte diesen Teil nun jeweils für das recht1, recht2 und recht 3 jeweils wieder holen. Nur, wenn jmd. in der CSV gar kein zB. recht2 hat, das Script es aber logischerweise abfragt, bekomme ich eine Fehlermeldung innerhalb der Shell. Entweder ich ignoriere das Ganze einfach, weil es trotzdem geht oder ich verändere was und hier stellt sich die Frage, was? Kann man irgendetwas machen, damit die "leeren" Felder in der CSV nicht als Fehler angesehen werden oder sonst was? Meine einfachste Idee wäre folgende in der CSV: mail,recht1,recht2,recht3 test2@domain.de,Gruppe1,Gruppe1,Gruppe1 Dann würde überall was drin stehen und das gleiche Recht würde eben 3 mal gesetzt werden. Ich finde das Ganze jedoch äußerst unelegand und frage mich, ob es da eine schönere Lösung gibt? Vielen Dank schon mal und beste Grüße, BlacksGood Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 3. Mai 2021 Melden Teilen Geschrieben 3. Mai 2021 vor 2 Minuten schrieb BlacksGood: Ich finde das Ganze jedoch äußerst unelegand und frage mich, ob es da eine schönere Lösung gibt? Ein IDM (Identity Management) System. Zitieren Link zu diesem Kommentar
testperson 1.675 Geschrieben 3. Mai 2021 Melden Teilen Geschrieben 3. Mai 2021 Hi, vor 9 Minuten schrieb BlacksGood: mail,recht1,recht2,recht3 test1@domain.de,Gruppe1,Gruppe2,Gruppe3 test2@domain.de,Gruppe1 test3@domain.de,Gruppe2,Gruppe3 deine CSV müsste zumindest schon mal so aussehen: bspw.: mail,recht1,recht2,recht3 test1@domain.de,Gruppe1,Gruppe2,Gruppe3 test2@domain.de,Gruppe1,, test3@domain.de,,Gruppe2,Gruppe3 test4@domain.de,Gruppe1,,Gruppe3 test5@domain.de,,,Gruppe3 Im Code wäre dann folgendes denkbar: foreach($user in $import){ if($null -ne $user.recht1){ Add-PnPUserToGroup -Identity $user.recht1 -EmailAddress $user.mail -SendEmail -EmailBody "Hallo Kollege, dein Recht wurde erteilt. Test Test Test" } # evtl. auch if($user.recht1 -ne ""){ ... } if($null -ne $user.recht2){ ... } # evtl. auch if($user.recht2 -ne ""){ ... } if($null -ne $user.recht3){ ... } # evtl. auch if($user.recht3 -ne ""){ ... } } Wo kommt die CSV denn her? Evtl. lässt sich da was "besseres" erstellen, was dann einfacher zu scripten ist bzw. was evtl. keine CSV braucht. Gruß jan 1 Zitieren Link zu diesem Kommentar
BlacksGood 5 Geschrieben 3. Mai 2021 Autor Melden Teilen Geschrieben 3. Mai 2021 vor 1 Stunde schrieb testperson: Hi, deine CSV müsste zumindest schon mal so aussehen: bspw.: mail,recht1,recht2,recht3 test1@domain.de,Gruppe1,Gruppe2,Gruppe3 test2@domain.de,Gruppe1,, test3@domain.de,,Gruppe2,Gruppe3 test4@domain.de,Gruppe1,,Gruppe3 test5@domain.de,,,Gruppe3 Im Code wäre dann folgendes denkbar: foreach($user in $import){ if($null -ne $user.recht1){ Add-PnPUserToGroup -Identity $user.recht1 -EmailAddress $user.mail -SendEmail -EmailBody "Hallo Kollege, dein Recht wurde erteilt. Test Test Test" } # evtl. auch if($user.recht1 -ne ""){ ... } if($null -ne $user.recht2){ ... } # evtl. auch if($user.recht2 -ne ""){ ... } if($null -ne $user.recht3){ ... } # evtl. auch if($user.recht3 -ne ""){ ... } } Wo kommt die CSV denn her? Evtl. lässt sich da was "besseres" erstellen, was dann einfacher zu scripten ist bzw. was evtl. keine CSV braucht. Gruß jan Hallo Jan, die CSV erstelle ich selbst und ist nicht bindent. Wenn du was besseres als Idee hast, nehm ich das gerne an :) Gut, $null könnte man es schon mal machen und ausprobieren. Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 3. Mai 2021 Melden Teilen Geschrieben 3. Mai 2021 Wenn man das wirklich mit einem Script umsetzen möchte, dann würde ich die Gruppen in einem Array verwursteln: user;gruppen user;gruppe1,gruppe2,gruppe3 Zitieren Link zu diesem Kommentar
BlacksGood 5 Geschrieben 3. Mai 2021 Autor Melden Teilen Geschrieben 3. Mai 2021 vor 32 Minuten schrieb Dukel: Wenn man das wirklich mit einem Script umsetzen möchte, dann würde ich die Gruppen in einem Array verwursteln: user;gruppen user;gruppe1,gruppe2,gruppe3 Möchten = Muss ;) Geht schlicht nicht anders, ausser man möchte bei 200 Usern dies manuell über ner GUI machen oder ähnliches ;) Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 3. Mai 2021 Melden Teilen Geschrieben 3. Mai 2021 (bearbeitet) Oder wie am Anfang gesagt. Ein IDM. EDIT: Hier das ganze als Demo: C:\Temp\test.txt: user;gruppen user1;gruppe1,gruppe2,gruppe3 user2;gruppe2,gruppe3 user3;gruppe1,gruppe4 Und das passende Script dazu: $users = Get-Content C:\Temp\test.txt|ConvertFrom-Csv -Delimiter ';' foreach($user in $users){ foreach($group in $user.gruppen -split ','){ "Add $($user.user) in $group" } } bearbeitet 3. Mai 2021 von Dukel Zitieren Link zu diesem Kommentar
BlacksGood 5 Geschrieben 5. Mai 2021 Autor Melden Teilen Geschrieben 5. Mai 2021 Am 3.5.2021 um 20:13 schrieb Dukel: Oder wie am Anfang gesagt. Ein IDM. EDIT: Hier das ganze als Demo: C:\Temp\test.txt: user;gruppen user1;gruppe1,gruppe2,gruppe3 user2;gruppe2,gruppe3 user3;gruppe1,gruppe4 Und das passende Script dazu: $users = Get-Content C:\Temp\test.txt|ConvertFrom-Csv -Delimiter ';' foreach($user in $users){ foreach($group in $user.gruppen -split ','){ "Add $($user.user) in $group" } } Danke. Das probiere ich auch mal aus :) 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.