Dienstag, 17. Dezember 2019

Windows Versionsupgrade

Windows 10 Version 1909 wurde vor kurzem veröffentlicht. Aus diesem Anlass möchte ich hier kurz beschreiben, wie Sie unter Windows 10 ein Versions-Upgrade mit Opsi durchführen können. Dies funktioniert natürlich auch für Upgrades von z.B. 1803 auf 1809 oder 1903.

1. Schritt: Paket herunterladen
Laden Sie das Opsi-Produkt windows10-upgrade von https://download.uib.de/opsi4.1/testing/packages/windows/localboot/

2. Schritt: Paket auf dem Opsi-Server installieren.
Klicken Sie im opsi config editor oben rechts auf "Produkte", durch eine kleine Box dargestellt. Im Dialog klicken Sie in der Zeile "opsi-Paket" auf den Ordner und wählen die herunter geladene windows10-upgrade Datei.
Klicken Sie nun darunter auf das bunte Icon "Verbinden mit \\10.1.0.2\opsi_workbench um das Produkt auf dem Server zu installieren.

3. Schritt: Produkt vervollständigen 
Kopieren Sie den Inhalt des aktuellen Windows 10 Datenträgers nach \\backup\opsi_depot_rw\windows10-upgrade\installfiles
und führen anschließend opsi-set-rights auf dem Opsi-Server aus.

4. Schritt: Installation auf den Clients.
Das Produkt kann nun auf den Clients installiert werden. Auf der Festplatte des Clients muss jedoch hinreichend Platz sein.
Bei der Konfiguration des Produktes können Sie bei "upgrade-to-version" die Zielversion wählen. Bei setup_after_install sollte "paedml-login, config-win10, opsi-client-agent, windomain" eingetragen werden um diese Produkte nach dem Upgrade erneut zu installieren.

Mittwoch, 4. Dezember 2019

Automatische Medienwiedergabe konfigurieren

In der Windows 10 Default-Installation in der paedML ist die automatische Wiedergabe von Medien nicht konfiguriert.
Das heißt, dass z.B. beim Einlegen einer Film-DVD schlicht nichts passiert, kein automatisches Abspielen oder auch keine Aufforderung zum Abspielen, Explorer öffnen, etc.

Ein Blick in die Systemsteuerung über einen administrativen Benutzer verrät den "Gemütszustand" des AutoRuns:
Die Settings hinter den Rollbalken verstecken sich in der Registry unter

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlersDefaultSelection]

und parallel

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\UserChosenExecuteHandlers]

Das heißt, dass die Settings benutzerbezogen eingestellt werden.

Allerdings ist im Profil AProfLehrer die Systemsteuerung auch deaktiviert, dementsprechend bleiben entweder Gruppenrichtlinien oder ein OPSI-Logon-Script, um die gewünschten AutoRuns auf alle Benutzer zu verteilen.

Für Ersteres gibt es hier ein Beispiel:


























Im obigen Beispiel wurde ein GPO "paedMLL_EigeneAnpassungen" mit der Sicherheitsfilterung "Authentifizierte Benutzer" erstellt.
Darin wird nun das Erstellen eines neuen Registrierungselements vorgenommen:

Als Parentkeys dienen immer oben genannte Reg-Keys.

Darunter werden mit dem GPO nun Childkeys erstellt, im Bildbeispiel wird mit dem Childkey "PlayDVDAudioOnArrival" der Autorun von Audio-DVDs konfiguriert.

In das Feld "Schlüsselpfad" muss hier "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlersDefaultSelection\PlayDVDAudioOnArrival" eingetragen werden.

Dazu wird ein Standard-Element des Typ REG_SZ mit den Wertdaten "VLCPlayDVDAudioOnArrival" erstellt.

Der Schritt muss danach noch mit den zweiten Parentkey (UserChosen...) wiederholt werden, da der Autoplay nur funktioniert, wenn es in beiden Parentkeys einen identischen Eintrag gibt.
----
Diese Elemente sorgen nun dafür, dass Audio-DVDs in Zukunft immer nach dem Einlegen ohne weiteres Zutun des Anwenders mit dem VLC Media Player abgespielt werden.

Ob das Implementieren des GPO erfolgreich war, kann man z.B. über die Remote-Registrierung nachschauen, sobald ein Lehrer oder Schüler auf einer Maschine angemeldet ist:

Der Childkey mitsamt Reg-Element wurden korrekt angelegt. Damit funktioniert nun der Autostart für Audio-DVDs.

Eine Sammlung (und auch die Quelle für diesen Blogpost) mit allen gängigen Childkeys und Reg-Werten (auch gültig für Windows 10) gibt es hier: https://smulpuru.wordpress.com/2012/01/29/windows-7-autoplay-registry-settings/

Dienstag, 3. Dezember 2019

Neuer CSV-Import

VORSICHT! WORK IN PROGRESS! Für das beschriebene Vorgehen gibt es keine Gewähr.

Wir sind gerade dabei einen neuen CSV-Import für die paedML zu konfigurieren. Da einiges zu definieren und testen ist, hier meine Work-in-Progress Dokumentation. Alles basiert auf diesem und diesem Artikel von Univention.
Das Vorgehen funktioniert nur mit paedML 7.1 (UCS 4.3).

Um das Modul zu installieren muss auf der Server-Konsole
univention-install ucs-school-umc-import
und 
univention-install ucs-school-import-http-api
ausgeführt werden.

Nun muss festgelegt werden, welcher User den Import durchführen darf. Dazu klickt man auf der Schulkonsole auf Benutzer --> Gruppen und wählt die Gruppe schule-import-all und klickt auf bearbeiten. Bei Mitglieder dieser Gruppe klickt man auf HINZUFÜGEN und wählt die Benutzer die den Import durchführen dürfen aus, z.B: Administrator und Netzwerkberater, und klickt nochmal auf HINZUFÜGEN.  Auf der Seite oben klickt man auf SPEICHERN um die änderungen zu übernehmen.

Nun muss eine passende Konfigurationsdatei nach /var/lib/ucs-school-import/configs/user_import.json kopiert werden. 

Der Inhalt wird für die paedML Linux z.B: so aussehen:
{ "csv": { "mapping": { "Skript 4": "record_uid", "Vornamen": "firstname", "Familienname": "lastname", "Klasse": "school_classes" } }, "scheme": { "username": { "default": "<:umlauts><firstname>[0].<lastname><:lower>[COUNTER2]", "student": "<:umlauts><firstname:alphanum>[0:10].<lastname:alphanum><:lower>[COUNTER2]", "teacher": "<record_uid><:lower>[COUNTER2]" } }, "school": "schule", "password_length": 8 }
Der Import schluckt nun den "Export für paedML"-Export aus ASV-BW sobald er in CSV umgewandelt wird.


Sonntag, 13. Oktober 2019

VAMT-Fehler bei Proxy activate

Bei VAMT kommt es hin und wieder zu Fehlern, sobald man nach der Key-Installation Diese über "Proxy activate" bei Microsoft aktivieren möchte:

1) “VAMT reported that the response from the activation server did not match the request”
Dieser Fehler taucht seit VAMT 2 (u.A. auch in der paedML Linux 5.1) immer wieder auf. Hier erwartet der MS-Aktivierungsserver eine andere Regionaleinstellung von der anfragenden Station (hier die AdminVM).

Damals wie heute hilft es, die Regionaleinstellung in der Systemsteuerung der AdminVM zu manipulieren:

Bei 3) tauscht man das Komma gegen einen Punkt und bei 4) den Punkt gegen eine Leerstelle aus. Danach ist dieser Fehler behoben und die Geräte können aktiviert werden.


2) "The request failed with http status 417:Expectation Failed"
Dieser sehr seltene Fehler wird vom Squid verursacht, wenn es bei der HSTS-Kommunikation (HTTP Strict Tansport Security) zu einem Fehler kommt.
Lösen lässt sich das Problem, indem man die Zeile

ignore_expect_100 on

in die Datei /etc/squid/squid.conf auf dem paedML Server schreibt und den Squid dann neustartet.

Donnerstag, 26. September 2019

Microsoft 365 mit per Powershell mit Zugangsdaten versorgen

Wenn man seinen Schülerinnen und Schülerin über einen Rahmenvertrag eine Office 365 Lizenz geben möchte muss dies über die Azure-Cloud erfolgen. Hier sammle ich die Befehle die zum Hochladen der Benutzerdaten benutze.

Die folgenden Befehle sind KEIN SKRIPT! Die Befehle sollten einzeln ausgeführt werden und einzelne Teile gegebenenfalls angepasst werden.


Modul installieren
Install-Module MSOnline

zu Cloud verbinden
Connect-MsolService

Modul aktivieren
Import-Module MSOnline

Zum Auflisten aller Befehle:
Get-Command -Module MSOnline

Zum Auslesen der verfügbaren Lizenzen:
Get-MsolAccountSku
Kopieren Sie die gewünschte Lizenz, sie muss später beim Benutzer anlegen mitgegeben werden.

Alle User in der Cloud löschen (VORSICHT! ALLE User außer dem Admin werden gelöscht!)
Get-MsolUser -all | Remove-MsolUser -Force





Ließt die CSV Datei der paedML Importliste aus
$users=Import-Csv -Path 'H:\paedml_import_liste.csv'

Die Importierten Daten haben die Attribute Klasse, Vorname, Nachname, Benutzername und Passwort. Sie können nun für jeden User in der Liste eine Aktion ausführen lassen. Im Beispiel wird für jeden User der Vorname ausgegeben.

foreach($user in $users){    Write-Host $user.Vorname}
Die Azure-Cloud Benötigt für New-MsolUser (Neuer User anlegen)
-UserPrincipalName 
 Der Loginname mit Domäne z.B. vname.nname@meineschule.onmicrosoft.com
-DisplayName 
 Der angezeigte Name
-FirstName -LastName 
 Vor- und Nachname (eventuell nicht unbedingt benötigt?)
-Password
Das Passwort darf den Benutzernamen NICHT enthalten!
-ForceChangePassword $true 
Der User muss das Passwort beim ersten Login ändern, $false falls nicht
-Department 
Die passende Lizenz, welche mit  Get-MsolAccountSku ausgelesen wurde 
-LicenseAssignment *****schule:OFFICESUBSCRIPTION_STUDENT 

Microsoft verlangt einen Ländercode beim Zuweisen der Lizenz
-UsageLocation de

In der Abteilung kann die Klasse abgelegt werden.

Für meine Schule habe ich die Parameter wie folgt gesetzt:

New-MsolUser -UserPrincipalName "$($as.Benutzername).365@****schule.de" -DisplayName "$($as.Vorname) $($as.Nachname)" -FirstName $as.Vorname -LastName $as.Nachname -Password "$($as.Klasse)-Office!" -ForceChangePassword $true -Department $as.Klasse -LicenseAssignment ****schule:OFFICESUBSCRIPTION_STUDENT -UsageLocation de

Das Passwort ist nicht sehr sicher, aber kann von den Lehrern gut kommuniziert werden.
Es sieht bei uns dann so aus "SGGG13-1-Office!"

Das Anlegen komplett:
$users=Import-Csv -Path 'H:\paedml_import_liste.csv'
foreach($user in $users){    New-MsolUser -UserPrincipalName          "$($user.Benutzername).365@****schule.de" -DisplayName "$($user.Vorname) $($user.Nachname)" -FirstName $user.Vorname -LastName $user.Nachname -Password "$($user.Klasse)-Office!" -ForceChangePassword $true -Department $user.Klasse -LicenseAssignment ****schule:OFFICESUBSCRIPTION_STUDENT -UsageLocation de
}

Die User werden nun angelegt und die Lizenz zugewiesen.



Sonntag, 23. Juni 2019

Fehlende Gruppenrichtlinien für Windows Update & Store

Aktualisierung Juni 2021:
Eine Offizielle Version dieser Richtlinie wird nicht erscheinen, da dies alle Updates für Windows generell abdreht. Ich (J. Albani) werde sie in meiner Schule so nicht umsetzen sondern die Zwangsupdates zulassen und dann gegebenenfalls Nacharbeiten durchführen. Für die Windows 10 Version 2004 gibt es eine Anleitung von Herrn Rosenfelder bei der paedML Hotline. 

Anmerkung: Die Einstellungen zu den Updates wurden bisher durch das Opsi-Produkt config-win10 durchgeführt. Da Microsoft vergangene Woche (Ende Juni 2019) ihre Updatepolitik für Windows 10 änderte, kann es sein, dass diese Einstellungen nun nicht mehr ausreichend sind. Das LMZ wird die hier vorgeschlagenen Richtlinien prüfen und gegebenenfalls offizielle Richtlinien veröffentlichen. Bis dahin ist die Verwendung dieses Blog Eintrages ohne Gewähr.
Johannes Albani


In der paedML Linux 7.1 fehlen nach aktuellem Stand wichtige Gruppenrichtlinien, um Windows Update richtig zu kontrollieren.
Ohne diese Gruppenrichtlinien verbinden sich alle PCs an der paedML vorbei zum Windows Update-Server bei Microsoft und lassen womöglich die komplette Internetverbindung einbrechen.

Gut nachvollzogen werden kann dies in der access.log des Squidmoduls auf dem paedML Server.

Insgesamt betrifft es bei Windows 10 folgende Module:

- Insider Preview
- Microsoft Store
- Windows Defender Antivirus, bzw. dessen Definitionsupdates
- Windows Update

Der Windows Defender Antivirus sollte natürlich nur deaktiviert werden, sofern ein anderes Anti-Virenprogramm zum Einsatz kommt.

Folgende Gruppenrichtlinien unterbinden alle betroffene Verbindungen zu Microsoft:

Donnerstag, 2. Mai 2019

Installationsprobleme älterer Hardwareklassen in OPSI 4.1

Das Bootimage des OPSI 4.1, basierend auf Ubuntu 18.04, hat ein Problem bei der Installation von älteren Hardwareklassen, festgestellt an HP Elite 8200 PCs.

Hier kommt es beim Ausführen der opsi-local-image-Produkte sporadisch zum Fehler "Login failed: getrandom() initialization failed. (_ssl.c:726)".

Die Abhilfe dagegen:

1) Per putty auf die "abgestürzten" Geräte verbinden, Benutzer: root Passwort: linux123
2) /usr/sbin/rngd -b -r /dev/urandom -o /dev/random eingeben
3) master.py eingeben

Danach läuft das oli-Produkt weiter.

Je nach Situation müssen obige Befehle pro oli-Produkt ausgeführt werden, bei einer Windows-Installation dementsprechend ein Mal für -prepare und ein Mal für -win10x64.

Die Befehle werden mit dem nächsten Bootimage-Release integriert, aktuell befindet sich dieses Bootimage noch im testing-Repository.

Quelle: https://forum.opsi.org/viewtopic.php?f=25&t=10931



Maximale Länge der Rechnernamen

Durch Zufall bin ich letztens auf einen Fehler in der Windows-Installation in Bezug auf die maximale Länge der Rechnernamen gestoßen.

Sobald der Rechnername mehr, als 14 Zeichen hat, endet die Windows-Installation in einem Problem mit der unattend.xml-Datei.



Der Fehler kommt allerdings erst kurz bevor die eigentliche Windows-Installation endet und in die Installation des OPSI-Client-Agent übergeht. Das heißt, je nach Rechnergeschwindigkeit sind bis dahin schon 30 bis 45 Minuten vergangen, was dann etwas ärgerlich ist.

Dokumentiert wurde das Problem bei UIB hier schon vor einiger Zeit https://forum.uib.de/viewtopic.php?f=7&t=1243&sid=6f365afb81aaabfd24e07014d28dd9d0&start=10

Powershell und Windows-Images

Zur Zeit beschäftige ich mich etwas mehr mit Windows Images. Zum einen, weil ich das OPS-VHD Produkt teste und auch schon einsetze (und noch mehr damit geplant habe, mehr dazu hoffentlich in kürze), zum anderen, weil beim opsi-local-image-wim-capture immer wieder Fehlermeldungen erscheinen, wenn das Windows etwas länger eingeschaltet war, bevor es gecaptured wurde. Diesen Problemen versuchen wir auch auf die Schliche zu kommen.

Hier ersteinmal eine Sammlung praktischer Powershell Befehle für die Images:
Ach ja, man muss die Powershell als Administrator ausführen um mit Images arbeiten zu können!
Get-WindowsImage -ImagePath \\backup\opsi_depot_rw\opsi-local-image-win10-x64-capture\installfiles\install.wim
gibt die verschiedenen Images des Capture-Produkts aus. Der Pfad kann an die verschiedenen Capture Produkte angepasst werden. 

Um eine Version von Windows aus dem Installer zu entfernen könnt ihr mit dem vorigen Befehl die Indes Nummer des Zieles herausfinden, mit 
Remove-WindowsImage -ImagePath \\backup\opsi_depot_rw\opsi-local-image-win10-x64-capture\installfiles\install.wim -Index 3 -CheckIntegrity
kann man z.B. das Image an Stelle 3 löschen. 
(Dies dauert ein paar Minuten)

Wenn man aus einer Sammlung von Windows Installationsdateien ein Image aus dem Verbund exportieren wollt geht das mit:
Export-WindowsImage -SourceImagePath  \\backup\opsi_depot_rw\opsi-local-image-win10-x64-capture\installfiles\install.wim -SourceIndex 1 -DestinationImagePath  \\backup\opsi_depot_rw\opsi-local-image-win10-x64-capture\installfiles\export.wim
Um das Exportierte Image (index 1) in eine andere Wim Datei zu verschieben muss das exportierte Image in einen Ordner (Hier C:\winmount) gemountet werden. 
Mount-WindowsImage -ImagePath \\backup\opsi_depot_rw\opsi-local-image-win10-x64-capture\installfiles\export.wim -ReadOnly -Index 1 -Path C:\winmount
Danach kann es zu einer anderen install.wim hinzugefügt werden. 
Add-WindowsImage -ImagePath \\backup\opsi_depot_rw\opsi-local-image-win10-x64-capture\installfiles\install.wim -CapturePath C:\winmount -Name "Name_des_neuen_Images"

Dienstag, 12. Februar 2019

paedML Linux 7.1

Hallo!
Das Update der paedML Linux für Version 7.1 steht in den Startlöchern. Es werden vor allem viele Detailverbesserungen enthalten sein, z.B. das Single Sign-On für die Schulkonsole.

Nach dem Update werden ein paar Tricks meines Blogs jedoch obsolet:

  1. die Anmeldung als Administrator funktioniert nur noch mit paedml-linux\Administrator, die Abkürzungen. z.B. p\Administrator werden nicht mehr klappen.
     
  2. Der im Blog beschriebene Trick mit dem Ausblenden des Opsi-Statusfensters muss rückgängig gemacht werden. Das paedml-login Opsi-Paket ersetzt viele der Login-Skripte (Icons kopieren, Informationen über Benutzer anzeigen usw. ) Diese werden von diesem Opsi-Statusfenster aufgerufen.
    Falls Sie meine Änderungen durchgeführt haben, setzen Sie für die Clients und das Depot "Host-Parameter" --> "opsiclientd" -->"opsiclientd.event.user_login.active" wieder auf "true" und rollen Sie den client-agent neu aus, wie in der Anleitung ausführlich beschrieben wurde.
     
  3. Einige meiner Druckeranmelde Tipps und Tricks wurden im Update umgesetzt. Zur Verteilung können Sie nun zusätzlich und optional die Gruppenrichtlinie paedMLL_Druckerverbinden nutzen. Dazu müssen Sie im Ordner \\backup\opsi_depot_rw\update71 das Powershell-Skript DruckerGPO.ps1 ausführen. Dadurch wird eine Gruppenrichtlinie mit ihrer aktuellen Druckerkonfiguration erzeugt. Sobald Sie Änderungen an den Drucker-Zuordnungen durchführen, muss das Skript erneut gestartet werden, damit die Richtlinie aktualisiert wird.
    Ich empfehle für Schüler und Lehrer jeweils eine Verknüpfung "Drucker reparieren" anzulegen, welche ein gpupdate durchführt. Dadurch können die Benutzer bei Bedarf die Drucker neu installieren lassen.
    Rechtsklick auf dem Desktop --> Neu --> Verknüpfung
    Als Pfad wählen Sie C:\Windows\System32\gpupdate.exe, als Icon können Sie in der Standardbibliothek SHELL32.dll ein passendes Icon auswählen. 
    Verteilen können Sie dieses Icon über aproflehrer und aprofschueler.
  4. Bei der paedML-Linux 7.1 wurde die Anmeldung überarbeitet. Es kann nach dem Update jedoch passieren, dass nicht der Standard-Hintergrund geladen wird. Für diesen Fall können Sie folgenden Skript verwenden. Es löscht abweichende Hintergrundbilder aus den Ordnern der SuS:

    $sus = Get-ChildItem "\\server\Home-Verzeichnisse Schueler\"
    foreach( $s in $sus){
        if (Test-Path  "\\server\Home-Verzeichnisse Schueler\$s\AppData\Microsoft\Windows\Themes\TranscodedWallpaper" ){
            if(
            ((Get-Item "\\server\Home-Verzeichnisse Schueler\$s\AppData\Microsoft\Windows\Themes\TranscodedWallpaper").Length -gt 240000) -or ((Get-Item "\\server\Home-Verzeichnisse Schueler\$s\AppData\Microsoft\Windows\Themes\TranscodedWallpaper").Length -le 220000)){
                Remove-Item –path "\\server\Home-Verzeichnisse Schueler\$s\AppData\Microsoft\Windows\Themes" –recurse
                write-host "Der Schüleraccount von $s wurde bereinigt." -ForegroundColor Green
            }
        }
    }
  5. Der Samba Bug, der das Verwenden des Klassenorder _klassen verhinderte, ist mit der paedML Linux 7.1 natürlich behoben. D.h. meine Anleitung  für einen Ersatz ist damit praktisch obsolet. 

                    Weitere Änderungen werde ich hier im Artikel aufführen.