## Sonntag, 29. März 2020

### Benutzer in Office 365 anmelden

Da während der Kriese Office 365 nun offiziell eingesetzt werden kann, habe ich meine Skripte zum Hochladen von Usern aktualisiert und verbessert.
Ich halte die Anleitung hier sehr knapp. Bei Fragen schicken Sie eine Mail an
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 MSOnline
> 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

Fü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.
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.

Neuerer Post Älterer Post Startseite
Abonnieren Kommentare zum Post (Atom)