VORSICHT: Der Einsatz von Microsoft 365 / Teams ist in Schulen in BW meines Wissens nicht mehr erlaubt!
https://www.baden-wuerttemberg.datenschutz.de/ms-365-schulen-hinweise-weiteres-vorgehen/
https://www.baden-wuerttemberg.datenschutz.de/ms-365-schulen-hinweise-weiteres-vorgehen/
Edit: Damit SuS keine eigene Teams erstellen können, ist eine weiteres Sktipt notwendig. Dieses Skript befindet sich am Ende dieses Artikels!
Edit2: Das SuS anmeldeskript wurde erweitert, die SuS werden nun zusätzlich zur Klassengruppe noch in die "Schueler" Gruppe eingeteilt.
Generell wird ein Office 365 Admin Konto und die kostenlosen Lizenzen für Lehrerde und SuS benötigt.
Hier das Skript für die SuS. Das Skript muss auf einem PC im Schulnetz ausgeführt werden, damit es LDAP Anfragen durchführen kann und legt auf h: eine Datei office365Benutzerliste.txt ab, in der die angelegten Accounts nochmals notiert werden.
Install-Module MSOnlineFür das Anlegen von Lehrenden habe ich mich für einen CSV Import entschieden, da an meiner Schule sich die Lehrenden mit ihrer eMail-Adresse bei Microsoft anmelden, nicht mit ihrem Kürzel wie in der paedML.
Connect-MsolService
$SuSLizenz=$false
#Eine Liste aller bei Office angemeldeten Nutzer und ihren Passwörtern finden Sie auf h:\office365Benutzerliste.txt
New-Item -Path h:\ -Name "office365Benutzerliste.txt" -ErrorAction Ignore
######################Schuldomäne eintragen
$schulsuffix="@bsachern.onmicrosoft.com" #ein Beispiel
$schulsuffix=".365@meineschule.onmicrosoft.com" #ein komplexeres Beispiel
Write-Host "Sie müssen nun eingeben, wie die SuS sich bei Office365 anmelden sollen."-ForegroundColor Magenta
Write-Host "Tragen Sie im folgenden "-ForegroundColor Magenta -NoNewline
Write-Host "@meine-schule.de" -ForegroundColor Cyan -NoNewline
Write-Host " ein, wenn ihre SuS sich mit" -ForegroundColor Magenta
Write-Host "maxi.muster@meine-schule.de" -NoNewline -ForegroundColor Cyan
Write-Host " bei Office 365 anmelden sollen. maxi.muster ist" -ForegroundColor Magenta
Write-Host "dabei der Loginname der paedML." -ForegroundColor Magenta
$schulsuffix=Read-Host "Eingabe"
Write-Host $schulsuffix
$antwort = Read-Host "Ist die Einagabe korrekt?:" $schulsuffix " mit J und Eingabetaste bestätigen!"
if(-not($antwort -match "J")){
Write-Host "Sie haben nicht bestätigt, breche ab. " -ForegroundColor Red
break
}
Write-Host "Das Passwort der SuS wird auf klasse-Off!ce gesetzt, klasse entspricht dem Klassenbezeichner in der paedML" -ForegroundColor Magenta
Write-Host "also z.B. 1b-Off!ce oder auch 1bk2w3-Off!ce. Achten Sie auf das Ausrufezeichen bei Off!ce, Buchstaben der Klasse sind klein!" -ForegroundColor Magenta
Read-Host "Bestätigen mit Eingabetaste"
######################Lizenzen auslesen
$lizenzen=Get-MsolAccountSku
foreach($lizenz in $lizenzen.AccountSkuId){
Write-Host "Lizenz: " $lizenz
if($lizenz -match "STANDARDWOFFPACK_IW_STUDENT"){
Write-Host "Lizenz für SuS gefunden!" -ForegroundColor Green
$SuSLizenz = $lizenz
}
}
######################Lizenzen auslesen Ende
if(-not $SuSLizenz){
Write-Host "Die Lizenz für SuS wurde nicht gefunden, breche ab." -BackgroundColor Red
Write-Host "Wenn Sie die Lizenzen mit dem Befehl Get-MsolAccountSku selbst finden " -BackgroundColor Red
write-host "können Sie diese den Wert SuSLizenz in Zeile 3 von Hand zuweisen." -BackgroundColor Red
Write-Host "meineadressede:STANDARDWOFFPACK_IW_STUDENT sollte so ein Key heißen." -BackgroundColor Red
Write-Host "Löschen Sie beim manuellen Einfügen die Zeilen zwischen #####Lizenzen auslesen bis #####Lizenzen auslesen Ende" -BackgroundColor Red
Break
}
#Eine Gruppe in der alle SuS eingeteilt werden.
$SuSGroup = Get-MsolGroup -all | Where {$_.DisplayName -like "Schueler"}
if($SuSGroup -eq $null){
$SuSGroup=New-MsolGroup -DisplayName "Schueler"
}
else{
"ist schon da"
}
$SuSGroupID = $SuSGroup.ObjectId
$gruppen = [adsi]"LDAP://CN=klassen,CN=schueler,CN=groups,ou=schule,dc=paedml-linux,dc=lokal"
foreach($klasse in $gruppen.Children.distinguishedName){
$bezeichnung=($klasse.Split("=")[1]).Split(",")[0] -replace 'schule-'
write-host "################### Verarbeite Klasse " $bezeichnung "####################" -ForegroundColor Green
$pfad = "LDAP://CN=schule-$($bezeichnung),CN=klassen,CN=schueler,CN=groups,ou=schule,dc=paedml-linux,dc=lokal"
$SuS = [adsi]$pfad
#Klasasengruppe wird angelegt und ihre ID in gruppenID abgelegt.
$gruppenID = (New-MsolGroup -DisplayName $bezeichnung).ObjectId
#Remove-MsolGroup -ObjectId $gruppenID
foreach($s in $SuS.member){
if($s -match "lehrer"){
Write-Host "Lehrpersonen werden nicht in Klassen eingeteilt. Loginname: " ($s.Split("=")[1]).Split(",")[0] -ForegroundColor yellow
}
else{
$sname = ($s.Split("=")[1]).Split(",")[0]
Write-Host $sname -NoNewline -ForegroundColor Cyan
Write-Host " wird in die Klasse " -NoNewline
Write-Host $bezeichnung -NoNewline -ForegroundColor Green
Write-Host " eingetragen"
$schueler = [adsi]"LDAP://$s"
$loginname = [String]($sname+$schulsuffix)
$user=New-MsolUser -UserPrincipalName $loginname -DisplayName ([String]($schueler.displayName)) -FirstName ([String]($schueler.givenName)) -LastName ([String]($schueler.sn)) -Password "$($bezeichnung)-Off!ce" -ForceChangePassword $true -Department $bezeichnung -LicenseAssignment $SuSLizenz -UsageLocation de
Add-MsolGroupMember -GroupObjectId $gruppenID -GroupMemberObjectId $user.ObjectId
Add-MsolGroupMember -GroupObjectId $SuSGroupID -GroupMemberObjectId $user.ObjectId
$ausgabe = [String]($user.DisplayName) +", "+ [String]($user.UserPrincipalName) +", "+ [String]($user.Password)
Add-Content -Value $ausgabe -Path h:\office365Benutzerliste.txt
}
}
}
Write-Host "Die Anmeldung ist beendet, öffnen Sie h:\office365Benutzerliste.txt um die Benutzerdaten zu sehen. " -ForegroundColor Green
Dazu muss man eine CSV mit den Überschriften vorname, name, email erstellen und mit den Daten der Lehrenden befüllen. Das Skript erwartet diese Datei unter h:\lehrende.csv, dies kann aber im Skript in Zeile 4 angepasst werden.
Install-Module MSOnline
Connect-MsolService
$LuLLizenz=$false
$lehrende = Import-Csv "h:\lehrende.csv"
#Eine Liste aller bei Office angemeldeten Nutzer und ihren Passwärtern finden Sie auf h:\office365Benutzerliste.txt
New-Item -Path h:\ -Name "office365BenutzerlisteLehrer.txt" -ErrorAction Ignore
######################Schuldomäne eintragen
Write-Host "Die Benutzer werden aus der Datei h:\Lehrende.csv gelesen." -ForegroundColor Magenta
Write-Host "Das Passwort der Lehrenden wird auf Willkommen@Off!ce gesetzt" -ForegroundColor Magenta
Write-Host "Der Benutzernamen entspricht der eMail Adresse" -ForegroundColor Magenta
Write-Host "Die eMail Adresse muss bei der gleichen Domäne sein, wie ihre Office 365 Domäne." -ForegroundColor Magenta
Read-Host "Bestätigen mit Eingabetaste"
######################Lizenzen auslesen
$lizenzen=Get-MsolAccountSku
foreach($lizenz in $lizenzen.AccountSkuId){
Write-Host "Lizenz: " $lizenz
if(($lizenz -match "MEINE_EIGENE_LIZENZ")-or($lizenz -match "STANDARDWOFFPACK_IW_FACULTY")-or ($lizenz -match "STANDARDWOFFPACK_FACULTY") ){
Write-Host "Lizenz für Lehrende gefunden!" -ForegroundColor Green
$LuLLizenz = $lizenz
}
}
######################Lizenzen auslesen Ende
Write-Host "Diese Lizenz wird für Lehrende verwendet: " $LuLLizenz -ForegroundColor Green
Write-host "Abbrechen mit Strg + c"
Read-Host "Bestätigen mit Eingabetaste"
if(-not $LuLLizenz){
Write-Host "Die Lizenz für Lehrende wurde nicht gefunden, breche ab." -BackgroundColor Red
Write-Host "Wenn Sie die Lizenzen mit dem Befehl Get-MsolAccountSku selbst finden " -BackgroundColor Red
write-host "können Sie diese in Zeile 17 von Hand zuweisen." -BackgroundColor Red
Write-Host "meineadressede:STANDARDWOFFPACK_FACULTY sollte so ein Key heißen." -BackgroundColor Red
Write-Host 'Ändern Sie in Zeile 17 ' -NoNewline -BackgroundColor Red
Write-Host '$lizenz -match "MEINE_EIGENE_LIZENZ"' -ForegroundColor Green -NoNewline -BackgroundColor Red
Write-Host ' zu ' -BackgroundColor Red
Write-Host '$lizenz -match "GEWUENSCHTE_OFFICE_LIZENZ" ' -ForegroundColor Green -BackgroundColor Red
Break
}
$lehrende = Import-Csv "h:\Lehrende.csv"
Write-Host
Write-Host "Gefundene Lehrerinnen und Lehrer: " -BackgroundColor DarkGreen
foreach($lehrer in $lehrende){
Write-Host $lehrer.vorname $lehrer.name "" -NoNewline
Write-Host $lehrer.email -ForegroundColor Yellow
}
Write-Host
Write-Host "Kontrollieren Sie, ob die CSV reichtig gelsen wurde."
Write-Host "Wenn ihr Kollegium richtig angezeigt wird bestätigen Sie mit J und Enter"
$antwort = Read-Host "Soll die Anmeldung durchgeführt werden? J für ja eingeben. "
if(-not ($antwort -eq "J")){
Write-Host "Vorgang abgebrochen" -ForegroundColor Red
break
}
$gruppenID = (New-MsolGroup -DisplayName "Lehrer").ObjectId
foreach($lehrer in $lehrende){
Write-Host $lehrer.vorname $lehrer.name " wurde angemeldet."
$name = $lehrer.vorname +" "+ $lehrer.name
$user=New-MsolUser -UserPrincipalName $lehrer.email -DisplayName $name -FirstName $lehrer.vorname -LastName $lehrer.name -Password "Willkommen@Off!ce" -ForceChangePassword $true -Department "Lehrer" -LicenseAssignment $LuLLizenz -UsageLocation de
Add-MsolGroupMember -GroupObjectId $gruppenID -GroupMemberObjectId $user.ObjectId
$ausgabe = [String]($user.DisplayName) +", "+ [String]($user.UserPrincipalName) +", "+ [String]($user.Password)
Add-Content -Value $ausgabe -Path h:\office365BenutzerlisteLehrer.txt
}
Write-Host "Die Anmeldung ist beendet, öffnen Sie h:\office365BenutzerlisteLehrer.txt um die Benutzerdaten zu sehen. " -ForegroundColor Green
Um das Erstellen von Teams auf das Lehrer-Kollegium einzuschränken wird folgendes Skript verwendet. Achten Sie darauf, dass Lehrende, welche im Nachhinein noch in der Cloud angemeldet werden auch zur Sicherheitsgruppe "Lehrer" hinzugefügt werden müssen, um eigene Teams erstellen zu dürfen. Falls ihre Lehrerg Gruppe nicht "Lehrer" heißt, passen Sie die Zeile 2 des Skriptes bitte an. Das Skript kommt bis auf die ersten zwei Zeilen direkt von Microsoft, der Artikel dazu hier.
Install-Module AzureADPreview
$GroupName = "Lehrer"
$AllowGroupCreation = "False"
Connect-AzureAD
$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
$settingsCopy["EnableGroupCreation"] = $AllowGroupCreation
if($GroupName)
{
$settingsCopy["GroupCreationAllowedGroupId"] = (Get-AzureADGroup -SearchString $GroupName).objectid
}
else {
$settingsCopy["GroupCreationAllowedGroupId"] = $GroupName
}
Set-AzureADDirectorySetting -Id $settingsObjectID -DirectorySetting $settingsCopy
(Get-AzureADDirectorySetting -Id $settingsObjectID).Values
Keine Kommentare:
Kommentar veröffentlichen
Hinweis: Nur ein Mitglied dieses Blogs kann Kommentare posten.