Jump to content

Script für Berechtigungsgruppen


Recommended Posts

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

Link to post
vor 2 Minuten schrieb BlacksGood:
  • advertisement_alt
  • advertisement_alt

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.

Link to post

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

  • Like 1
Link to post
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.

Link to post

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

Link to post
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 ;)

Link to post

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"
   }
}

 

Edited by Dukel
Link to post
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 :)

Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...