Richtlinien und Einstellungen 3644

Inhalt

Einstellung damit Lehrer Nachrichten von Schülern löschen können

Im Team Admincenter kann man unter Nachrichtenrichtlinien in einer den Lehrern zugewiesenen Richtlinie diese Option aktivieren. Wichtig ist dann nur, dass der Lehrer auch das Team seiner Klasse erstellt hat.

Teams für Schüler in Microsoft 365 freischalten

Nachdem Microsoft 365 für die Schule eingerichtet ist, Benutzer angelegt wurden und diesen Lizenzen, z.B. A1, zugefügt wurden, muss man noch Teams für Benutzer mit dem Lizenztyp Schüler freischalten: Aktuell wird Teams automatisch für alle Schüler/Lehrer freigeschaltet:

Einschränkungen für Microsoft 365 und Teams für Schüleraccounts:

Die Standardeinstellungen von Microsoft 365 und Teams sind sehr offen und nicht immer für den Schulbetrieb sinnvoll. Schülerinnen und Schüler können z.B.: selbst Teams erstellen, mit jedem Mitglied der Schule im Einzel- oder Gruppenchat sich austauschen oder eigene Videokonferenzen erstellen. Für einige Szenarien kann dies sinnvoll sein, doch hat man als Schule auch eine gewisse Aufsichtspflicht und sollte womöglich zu Beginn eher restriktive Regelungen nutzen, um diese dann, wenn alles gut läuft, wieder zu lockern.

1. Gruppenerstellung einschränken

Ziel ist es, dass nur Mitglieder einer Gruppe von Nutzern, z.B.: Lehrer, selbst Gruppen erstellen können. Jeder der in Microsoft 365 eine Gruppe erstellen kann, kann auch ein Team in Microsoft Teams erstellen. Dies wollen wir den Lehrern vorbehalten. Im folgenden wird erklärt, wie man eine Microsoft 365 Sicherheitsgruppe erstellt, die die Berechtigung hat, neue Gruppen und Teams zu erstellen. Hier der Ablauf:

  1. Neue Sicherheitsgruppe im Microsoft 365 Admin Center erstellen. (z.B.: Sicherheitsgruppe mit Namen Gruppenerstellung)

  2. Mitglieder der Sicherheitsgruppe zuweisen.

  3. Mit Hilfe von PowerShell jedem Nutzer der Schule verbieten neue Gruppen zu erstellen.

  4. Mit Hilfe von PowerShell nur der neu erstellten Sicherheitsgruppe erlauben, neue Gruppen und Teams zu erstellen.

Um sich in PowerShell mit Microsoft 365 verbinden zu können benötigt man das AzureADPreview Modul, welches man in PowerShell zuerst installieren muss. Dazu öffnet man den PowerShell Editor: "Windows PowerShell ISE":

und installiert das benötigte Modul:


# Mit diesem Befehlt kann man testen, ob ein Modul mit dem Namen "AzureAD..." schon installiert ist
Get-InstalledModule -Name "AzureAD*"
# Wenn dieses Modul noch fehlt, kann man es mit diesem Befehl herunterladen und installieren:
Install-Module AzureADPreview

Im Anschluss kann das eigentliche Skript ausgeführt werden:

# Verbindet sich mit Microsoft 365 -> man muss dann die Admin Zugangsdaten eingeben
AzureADPreview\Connect-AzureAD

# Name der Sicherheitsgruppe, die neue Gruppen erstellen darf
$GroupName = "Lehrer"
$AllowGroupCreation = "False"

$settingsObjectID = (Get-AzureADDirectorySetting | Where-object -Property Displayname -Value "Group.Unified" -EQ).id

if(!$settingsObjectID)
{
      $template = Get-AzureADDirectorySettingTemplate | Where-object {$_.displayname -eq "group.unified"}
      $settingsCopy = $template.CreateDirectorySetting()
      New-AzureADDirectorySetting -DirectorySetting $settingsCopy
      $settingsObjectID = (Get-AzureADDirectorySetting | Where-object -Property Displayname -Value "Group.Unified" -EQ).id
}

$settingsCopy = Get-AzureADDirectorySetting -Id $settingsObjectID

# schreibt in das DirectorySetting, dass keine Gruppen mehr erstellt werden drüfen
$settingsCopy["EnableGroupCreation"] = $AllowGroupCreation

# die oben definierte Sicherheitsgruppe bekommt die Option neue Gruppen / Teams zu erstellen
if($GroupName)
{
    $settingsCopy["GroupCreationAllowedGroupId"] = (Get-AzureADGroup -Filter "DisplayName eq '$GroupName'").objectid
}

Set-AzureADDirectorySetting -Id $settingsObjectID -DirectorySetting $settingsCopy

(Get-AzureADDirectorySetting -Id $settingsObjectID).Values
2. Richtlinien für die Arbeit mit Teams festlegen

Richtlinien für Microsoft Teams regulieren, was ein Nutzer in Teams alles machen kann. Man kann z.B. die Chatfunktion einschränken oder nur bestimmten Gruppen erlauben, Besprechungen zu starten oder neue Apps in Teams hinzuzufügen. Diese Richtlinien kann man im "Microsoft Teams Admin Center" einstellen und dann Nutzern dort auch zuweisen. Wenn man jedoch mehreren Nutzern abhängig vom Lizenztyp (z.B.: Lehrerlizenzen, Schülerlizenzen) Richtlinien zuweisen will muss man auch hier mit PowerShell arbeiten.

Änderungen und Zuweisungen von Richtlinien können bis zu 24 Stunden dauern, bis sie funktionieren.

Hier eine Liste der Richtlinien, die in Microsoft Teams verfügbar sind:

Richtlinie Informationen
Besprechungsrichtlinien Betrifft Richtlinien zu Videokonferenzen, z.B. ob Nutzer eine Besprechung erstellen oder nur beitreten können.
Nachrichtenrichtlinien Kann jeder den mit jedem in der Schule einen 1:1- oder Gruppenchat machen.
Liveereignisrichtlinien Betrifft auch die Videokonferenzen, z.B.: ob man eine Videokonferenz aufzeichnen kann, oder eine Konferenz im Kalender planen kann.
App-Berechtigungsrichtlinien Welche Apps (z.B.: Aufgaben, Chat, ...) werden angezeigt? Können neue Apps von den Nutzern hinzugefügt werden?
Anrufrichtlinien Wer kann wen in der Schule über Microsoft Teams anrufen?
3. Richtlinien einer Lizenzgruppe (Schüler, Lehrer) mit Powershell zuweisen:

Alle Module, die man in PowerShell installiert hat, kann man hier finden und auch entfernen: C:\Program Files\WindowsPowerShell\Modules

Um Richtlinien über PowerShell zuweisen zu können muss man sich mit dem "Skype for Business Online Connector Modul" verbinden. Dieses muss zuerst heruntergeladen und installiert werden: Skype for Business Online Connector PowerShell Modul

Des Weiteren benötigt man das Modul für Microsoft Teams, welches man direkt in PowerShell installieren kann:
Install-Module -Name MicrosoftTeams

Mit folgendem Befehl kann man nun die verschiedenen Lizenzen der Schule abfragen, wenn man mit AzureADPreview\Connect-AzureAD verbunden ist. Diese werden benötigt, da man im Anschluss die Nutzer nach Lizenztypen filtern und entsprechende Richtlinien zuweisen kann:
Get-AzureAdSubscribedSku | Select-Object -Property SkuPartNumber,SkuId

Mit folgendem Skript kann man nun verschiedene Richtlinien suchen und dann den ausgewählten Nutzern hinzufügen:

######################################
# 1. Bei benötigten Modulen anmelden #
######################################
#Anmeldung bei SkypeOnlineConnector für z.B.: Get-CsTeamsMeetingPolicy
Import-Module SkypeOnlineConnector
$sfbSession = New-CsOnlineSession
Import-PSSession $sfbSession
#Anmeldung bei Connect-AzureAD für: Get-AzureADUser
AzureADPreview\Connect-AzureAD
#Anmeldung bei MicrosoftTeams für: New-CsBatchPolicyAssignmentOperation
Connect-MicrosoftTeams

###########################################
# 2. Nutzer suchen und in Array speichern #
###########################################
#sammelt alle Nutzer mit der Schülerlizenzierung und speichert diese in einen Array
$schueler = Get-AzureADUser -All $true | Where-Object {($_.assignedLicenses).SkuId -contains "314c4481-f395-4525-be8b-2ec4bb1e9d91"}
#sucht einen Nutzer nach seinem Benutzernamen und speichert diesen in einen Array
$schueler = Get-AzureADUser -Filter "userPrincipalName eq 's.scheglmann@msush.de'"

#listet alle ausgewählten Nutzer auf:
foreach($a in $schueler){ 
    Write-Host $a.UserPrincipalName
}

#######################################
# 3. verfügbare Richtlinien auflisten #
#######################################
#alle verfügbaren Besprechungsrichtlinien
Get-CsTeamsMeetingPolicy | Select Identity | Out-String -Width 200
#alle verfügbaren Nachrichtenrichtlinien
Get-CsTeamsMessagingPolicy | Select Identity | Out-String -Width 200
#alle verfügbaren Anrufrichtlinien
Get-CsTeamsCallingPolicy | Select Identity | Out-String -Width 200

################################################
# 4. Richtlinie den gewählten Nutzern zuweisen #
################################################
#weist die Nachrichtenrichtlinie "chat disable" allen $schueler zu:
New-CsBatchPolicyAssignmentOperation -PolicyType TeamsMessagingPolicy -PolicyName 'chat disable' -Identity $schueler.ObjectId

#weist die Besprechungsrichtlinie "SchülerMSUSH" allen $schueler zu:
New-CsBatchPolicyAssignmentOperation -PolicyType TeamsMeetingPolicy -PolicyName 'SchülerMSUSH' -Identity $schueler.ObjectId

#weist die Anrufrichtlinie "DisallowCalling" allen $schueler zu:
New-CsBatchPolicyAssignmentOperation -PolicyType TeamsCallingPolicy -PolicyName 'DisallowCalling' -Identity $schueler.ObjectId

Liste von möglichen "PolicyTypes":

  • CsTeamsMeetingPolicy
  • CsTeamsMeetingBroadcastPolicy
  • CsTeamsMessagingPolicy
  • CsTeamsAppPermissionPolicy
  • CsTeamsAppSetupPolicy
  • Weitere Policies können in der Dokumentation: "Powershell Teams" gefunden werden.
4. Standardrolle der Besprechungsteilnehmer anpassen mit Powershell:

Die Standardeinstellung beim Betreten einer Besprechung ist, dass jeder Moderatorenrechte hat und z.B.: Schüler andere Schüler und den Lehrer stumm schalten können. Des Weiteren kann ein Schüler einen anderen Schüler aus der Besprechung werfen.

Im Teams Admincenter kann man bei den Besprechungsrichtlinien von Lehrern folgende Einstellungen anpassen:

Auch mit PowerShell kann man den Standardwert ändern. Hier sieht man die normale Einstellung. Wichtig ist der "DesignatedPresenterRoleMode" der hier auf EveryoneUserOverride eingestellt ist.

Diesen Wert kann man z.B.: auf OrganizerOnlyUserOverride ändern, dann hat nur derjenige die Privilegien, der die Besprechung auch erstellt hat.

# Mit dem Teams Modul verbinden
Connect-MicrosoftTeams

# Listest alle Besprechungsrichtlinien auf:
Get-CsTeamsMeetingPolicy | Select Identity | Out-String -Width 200

# Zeigt alle aktuellen Einstellungen der gewählten Besprechungsrichtlinie (SchülerMSUSH)
Get-CsTeamsMeetingPolicy -Identity LehrerMSUSH

# Verändert den "DesignatedPresenterRoleMode", damit nur der Besprechungsersteller Moderator ist
Set-CsTeamsMeetingPolicy -Identity LehrerMSUSH -DesignatedPresenterRoleMode OrganizerOnlyUserOverride

Weitere Informationen zu "Set-CsTeamsMeetingPolicy"

5. Rolle mehreren Nutzern auf einmal zuweisen:

Mit Hilfe von PowerShell und einer .CSV Datei kann man Rollen vielen Nutzern auf einmal zuweisen. Die CSV-Datei muss folgendes Muster haben:

Eine Vorlage kann man auf Gist finden: BenutzerRolleHinzufuegen.csv

Hier wird der Ablauf aufgeführt:

#1. Installiert das MSOnline Modul:
Install-Module MSOnline

#2. Stellt eine Verbindung mit dem MsolService her 
Connect-MsolService

#3. Listet alle Nutzer des Tennants auf 
Get-MsolUser -All | Sort DisplayName | Select DisplayName, UserPrincipalName | More

#4. Listet alle möglichen verfügbaren Rollen auf:
Get-MsolRole | Sort Name | Select Name,Description

#5. Liest die .CSV Datei aus und fügt jedem dort aufgeführten Benutzer die entsprechende Rolle zu:
$fileName="C:\Users\Administrator\Desktop\BenutzerRolleHinzufuegen.csv"
$roleChanges=Import-Csv $fileName | ForEach { Add-MsolRoleMember -RoleMemberEmailAddress $_.UserPrincipalName -RoleName $_.RoleName }

Alternativ kann man anstatt der CSV Datei auch die Nutzer nach der Lizenz filtern und in einer Variable speichern. Dann weist man den Nutzern die Rolle zu:

# Verbindung mit MSOnline Modul herstellen
Connect-MsolService

# Listet alle möglichen Rollen auf
Get-MsolRole | Sort Name

# Verbindung mit AzureAD wird hergestellt, damit man nach der Lizenz ID suchen kann
AzureADPreview\Connect-AzureAD
Get-AzureAdSubscribedSku | Select-Object -Property SkuPartNumber,SkuId

# Beispiel: hier werden alle Nutzer mit OFFICESUBSCRIPTION_FACULTY in einen Array gespeichert
$lehrerArray = Get-AzureADUser -All $true | Where-Object {($_.assignedLicenses).SkuId -contains "12b8c807-2e20-48fc-b453-542b6ee9d171"}

# einzelne Nutzer könnte man mit "+=" dem Array hinzufügen
$myArray += Get-AzureADUser -Filter "userPrincipalName eq 'richard@msush.de'"

# iteriert durch den Array und setzt die eingetragene Rolle (z.B. "User Account Administrator")
foreach ($i in $myArray){
   Add-MsolRoleMember -RoleName "User Account Administrator" -RoleMemberEmailAddress $i.UserPrincipalName
}
Mehrere Nutzer auf einmal löschen (Powershell)

Mit folgendem Skript kann man Nutzer z.B. nach einem Merkmal in der E-Mailadresse suchen und diese dann auf einmal löschen:

# Verbindung mit dem AzureAD Modul herstellen
AzureADPreview\Connect-AzureAD

# Beispiel: hier werden alle Nutzer mit einem Merkmal in der E-Mailadresse gesucht
$tempArray = Get-AzureADUser -All $true | Where-Object {$_.UserPrincipalName -Match "10" }

# listet alle gefunden Nutzer auf
foreach($a in $tempArray){ 
    Write-Host $a.UserPrincipalName
}

# Abfrage ob wirklich alle aufgelisteten Nutzer nun gelöscht werden sollen
$deleteConfirm = Read-Host -Prompt "Wollen Sie wirklich alle aufgelisteten Nutzer löschen? (ja-nein)"

# wurde "ja" eingegeben werden nun die Nutzer gelöscht und gleich angezeigt.
if($deleteConfirm -contains "ja"){
    foreach ($i in $tempArray){
       Remove-AzureADUser -ObjectId $i.UserPrincipalName
       Write-Host "Nutzer " $i.UserPrincipalName " wurde gelöscht!"
    }
}else{
    Write-Host "Es wurden keine Nutzer gelöscht!"
}

Hier kann man Nutzer anhand einer Lizenz sammeln und diese dann auf einmal löschen:

# Verbindung mit dem AzureAD Modul herstellen
AzureADPreview\Connect-AzureAD

# Listet alle Lizenzen auf
Get-AzureAdSubscribedSku | Select-Object -Property SkuPartNumber,SkuId

# Sucht Nutzer nach der Lizenz, diese muss hier angegeben werden
$tempArray = Get-AzureADUser -All $true | Where-Object {($_.assignedLicenses).SkuId -contains "94763226-9b3c-4e75-a931-5c89701abe66"}

foreach($a in $tempArray){ 
    Write-Host $a.UserPrincipalName
}

# Abfrage ob wirklich alle aufgelisteten Nutzer nun gelöscht werden sollen
$deleteConfirm = Read-Host -Prompt "Wollen Sie wirklich alle aufgelisteten Nutzer löschen? (ja-nein)"

# wurde "ja" eingegeben werden nun die Nutzer gelöscht und gleich angezeigt.
if($deleteConfirm -contains "ja"){
    foreach ($i in $tempArray){
       Remove-AzureADUser -ObjectId $i.UserPrincipalName
       Write-Host "Nutzer " $i.UserPrincipalName " wurde gelöscht!"
    }
}else{
    Write-Host "Es wurden keine Nutzer gelöscht!"
}
Passwörter für Accounts setzen und Daten als CSV Datei exportieren (Powershell)

Hier werden mit Hilfe des Skripts Passwörter für z.B.: alle Schüler gesetzt und im Anschluss die Daten der Schüler in einer CSV Datei exportiert. Diese kann man dann in Excel importieren, nach Klassen sortieren und den Schülern ausgeben.

# Verbindung mit dem AzureAD Modul herstellen
AzureADPreview\Connect-AzureAD

# Listet alle Lizenzen auf
Get-AzureAdSubscribedSku | Select-Object -Property SkuPartNumber,SkuId

# Sucht Nutzer nach der Lizenz, diese muss hier angegeben werden
$userList = Get-AzureADUser -All $true | Where-Object {($_.assignedLicenses).SkuId -contains "314c4481-f395-4525-be8b-2ec4bb1e9d91"}

$UserResults=@()

foreach($user in $userList){
    # erstellt ein Passwort mit der Aufforderung, nach dem ersten Login ein neues anzulegen
    $password = ConvertTo-SecureString -String "Schule123!" -Force –AsPlainText
    $objectID = $user.ObjectId
    Set-AzureADUserPassword -ObjectId $objectID -Password $password -ForceChangePasswordNextLogin $true

    # Eigenschaften die mit ausgegeben werden
    $UserProperties = @{
        Benutzername=$user.userPrincipalName
        Vorname=$user.givenName
        Nachname=$user.surname
        Abteilung=$user.Department
        Passwort= "Schule123!"
    }

    $UserResults += New-Object psobject -Property $UserProperties
}

# Speichert die Ergebnisse in eine csv Datei in das Benutzerverzeichnis
$UserResults | Export-Csv -Encoding UTF8 -NoTypeInformation -Path 'users_file.csv'

Links