Jump to content

Script für Berechtigungsgruppen


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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 zu diesem Kommentar

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

Link zu diesem Kommentar
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 zu diesem Kommentar

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 von Dukel
Link zu diesem Kommentar
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 zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...