Vollautomatische Erstkonfiguration und Einschreibung in Relution (WebDAV-Version)
-
Hier die Anleitung zur vollautomatischen Erstkonfiguration und Einschreibung in Relution. Gegenüber der Anleitung zur vollautomatischen Einschreibung in Relution hat diese den Hauptvorteil, dass die Erstkonfiguration und die Einschreibung mit nur einem einzigen Script erfolgt.
Da Relution keine Scripte einmalig und automatisch bei der Einschreibung ausführen kann und auch keine Daten (z.B. Wallpaper) auf die Windows Geräte kopieren kann, habe ich mich für die Verwendung eines WebDAV-Server entschieden. So kann man zusätzlich zur Einschreibung leicht Konfigurationen auf die Windows Geräte verteilen und diese auch leicht wieder ändern.
Die Anleitung bezieht sich auf Windows 11 Pro 23H2. Es sollte aber auch mit allen Windows 10 und 11 Versionen funktionieren.
Was ihr benötigt:
- Windows System Image Manager und Windows Configuration Designer aus dem entsprechenden Windows SDK (https://learn.microsoft.com/de-de/windows-hardware/get-started/adk-install)
- Eine Windows-ISO (https://www.microsoft.com/de-de/software-download/windows11)
- Einen USB-Stick
- Ein WebDAV-Server (z.B. Nextcloud oder Synology)
Was ihr bekommt:
Einen USB-Stick der eine vollautomatische Erstkonfiguration und Einschreibung von Windows-Geräten in Relution ermöglicht. Außerdem wird der Installationsassistent von Windows auf das minimalste reduziert (Netzwerk-Einrichtung) und diese Konfiguration wird nach einem Systemreset automatisch erneut angewendet.
Es werden 6 Dateien benötigt, deren Erstellung ich nachfolgend erläutern werde:
- <Seriennummer>.ppkg
- Unattend.xml
- Unattend.ps1
- Provisioning.ps1
- Provisioning.ppkg
- Setup.ps1
<Seriennummer>.ppkg
Diese Datei wird mit dem Windows Configuration Designer erzeugt und ist für die Einschreibung in Relution verantwortlich. Hierfür gibt es von Relution einen Insight:
https://relution.io/insights/windows-bulk-enrollment
Hinweis: In Relution muss für jedes Gerät eine eigene Einschreibung mit Gerätenamen angelegt werden.
Die Datei unter der Seriennummer des Gerätes im Ordner "Enrollment" auf dem WebDAV-Server speichern:
Die Seriennummer kann man in PowerShell mit folgendem Befehl auslesen:
Write-Host (gwmi win32_bios).serialnumber
Unattend.xml
Diese Datei wird mit dem Windows System Image Manager erzeugt und ist für die Automatisierung des Installationsassistenten verantwortlich. Darüber hinaus werden in dieser Datei Befehle konfiguriert, die nach der ersten Anmeldung ausgeführt werden sollen. Hierfür gibt es von Windows Pro eine sehr gute Anleitung, wobei die Einstellungen angepasst werden müssen
Hier die Einstellungen (Bitte Admin Benutzername und Passwort anpassen):
Dieser Registry Eintrag regelt, dass der Admin wirklich nur einmal automatisch angemeldet wird.
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoLogonCount /t REG_DWORD /d 0 /f
Mit diesem Befehl wird der Explorer geschlossen, sodass auch längere Setup-Scripte laufen, ohne das der Benutzer den Desktop zu sehen bekommt.
taskkill /IM explorer.exe /F
Mit diesem Befehl wird das Script "Unattend.ps1" aufgerufen.
powershell -ExecutionPolicy Bypass -File C:\Recovery\AutoApply\Unattend.ps1
Unattend.ps1
Dieses Script wird bei der ersten Anmeldung ausgeführt. Es kopiert das Script "Setup.ps1" vom WebDAV-Server auf den PC und führt es aus.
Hier der Inhalt:
# Netzlaufwerk verbinden $Srv = "<WebDAV-Serveradresse" $Usr = "<Benutzername>" $Pwd = ConvertTo-SecureString "<Passwort>" -AsPlainText -Force $Cred = New-Object System.Management.Automation.PSCredential($Usr, $Pwd) New-PSDrive -Name "R" -PSProvider FileSystem -Root $Srv -Credential $Cred # Relution Ordner anlegen New-Item -Path "C:\ProgramData\Relution" -ItemType Directory -Force # Setup Script kopieren Copy-Item -Path "R:\Setup.ps1" -Destination "C:\ProgramData\Relution" -Force # Setup Script ausführen powershell -ExecutionPolicy Bypass -File "C:\ProgramData\Relution\Setup.ps1"
Provisioning.ps1
Dieses Script kopiert die "Unattend.xml" und "Unattend.ps1" in "C:\Recovery\AutoApply" und erzwingt einen Systemreset.
Wenn in dem AutoApply-Ordner eine "Unattend.xml" gefunden wird, wird diese automatisch bei der Installation bzw. nach einem Systemreset angewendet.
Hier gibt es genauere Informationen zum AutoApply-Ordner und zum Systemreset:
https://learn.microsoft.com/de-de/windows/win32/dmwmibridgeprov/mdm-remotewipe
Hier der Inhalt:
# Scripte und Unattend.xml kopieren Copy-Item -Path .\* -Destination (New-Item "C:\Recovery\AutoApply\" -ItemType Directory -Force) -Force # Sytemreset ausführen $namespaceName = "root\cimv2\mdm\dmmap" $className = "MDM_RemoteWipe" $methodName = "doWipeMethod" $session = New-CimSession $params = New-Object Microsoft.Management.Infrastructure.CimMethodParametersCollection $param = [Microsoft.Management.Infrastructure.CimMethodParameter]::Create("param", "", "String", "In") $params.Add($param) try { $instance = Get-CimInstance -Namespace $namespaceName -ClassName $className -Filter "ParentID='./Vendor/MSFT' and InstanceID='RemoteWipe'" $session.InvokeMethod($namespaceName, $instance, $methodName, $params) } catch [Exception] { write-host $_ | out-string }
Provisioning.ppkg
Diese Datei wird mit dem Windows Configuration Designer erzeugt und packt die 3 vorherigen Dateien in ein Bereitstellungspaket. Für die Erzeugung der Datei kann man sich an dem o.a. Relution Insight orientieren:
https://relution.io/insights/windows-bulk-enrollment
Hier die Einstellungen:
powershell -ExecutionPolicy Bypass -File Provisioning.ps1
Setup.ps1
Dieses Script ist letztlich für die Einschreibung in Relution verantwortlich. Es sucht auf dem WebDAV-Server im Enrollment-Ordner nach dem passenden Einschreibungspaket, kopiert es und wendet es an. Darüber hinaus kann man in diesem Script alles mögliche konfigurieren wie. z.B. Bitlocker oder App-Deinstallationen.
Hier ein Beispiel:
# Netzlaufwerk verbinden $Srv = "<WebDAV-Serveradresse" $Usr = "<Benutzername>" $Pwd = ConvertTo-SecureString "<Passwort>" -AsPlainText -Force $Cred = New-Object System.Management.Automation.PSCredential($Usr, $Pwd) New-PSDrive -Name "R" -PSProvider FileSystem -Root $Srv -Credential $Cred # Bitlocker aktivieren Enable-BitLocker -MountPoint C: -UsedSpaceOnly -SkipHardwareTest -RecoveryPasswordProtector # Apps deinstallieren $appname = @( "Clipchamp.Clipchamp" "Microsoft.549981C3F5F10" "Microsoft.BingNews" "Microsoft.BingWeather" "Microsoft.GamingApp" "Microsoft.GetHelp" "Microsoft.Getstarted" "Microsoft.MicrosoftOfficeHub" "Microsoft.MicrosoftSolitaireCollection" "Microsoft.MicrosoftStickyNotes" "Microsoft.OutlookforWindows" "Microsoft.People" "Microsoft.PowerAutomateDesktop" "Microsoft.StorePurchaseApp" "Microsoft.Todos" "Microsoft.Windows.DevHome" "Microsoft.Windows.Photos" "Microsoft.WindowsAlarms" "Microsoft.WindowsCamera" "microsoft.windowscommunicationsapps" "Microsoft.WindowsFeedbackHub" "Microsoft.WindowsMaps" "Microsoft.WindowsSoundRecorder" "Microsoft.WindowsTerminal" "Microsoft.Xbox.TCUI" "Microsoft.XboxGameOverlay" "Microsoft.XboxGamingOverlay" "Microsoft.XboxIdentityProvider" "Microsoft.XboxSpeechToTextOverlay" "Microsoft.YourPhone" "Microsoft.ZuneMusic" "Microsoft.ZuneVideo" "MicrosoftCorporationII.QuickAssist" "MicrosoftWindows.Client.WebExperience" ) ForEach($app in $appname){ Get-AppxProvisionedPackage -Online | Where Displayname -EQ $app | Remove-AppxProvisionedPackage -Online } # Einschreibungspaket kopieren $SerialNumber = (gwmi win32_bios).serialnumber Copy-Item -Path R:\Enrollment\$SerialNumber.ppkg -Destination "C:\ProgramData\Relution" -Force # Einschreibung in Relution Install-ProvisioningPackage -PackagePath C:\ProgramData\Relution\$SerialNumber.ppkg -ForceInstall -QuietInstall # Neustart shutdown /r /t 5
WebDAV-Server
Da das Passwort im Klartext übertragen wird, sollte auf dem WebDAV-Server eine seperate Freigabe erstellt werden, auf die ein sperater Benutzer nur Lesezugriff hat. Ich habe diesem Benutzer ein 100stelliges generiertes Passwort gegeben. Passwörter im Klartext sind nicht schön, aber in diesem Fall war es es mir wert.
USB-Stick
Der USB-Stick sollte mit FAT32 oder NTFS formatiert sein. Die Datei "Provisioning.ppkg" in das Root-Verzeichnis des Sticks kopieren:
Den USB-Stick während der ersten Seite des Installationsassistenten einstecken:
Bei der erstmaligen Einrichtung wird ein Systemreset ausgelöst. Danach solltet ihr entweder bei der WLAN-Einrichtung landen oder der Installationsassistent läuft ohne Nachfragen komplett durch. Danach wird der Admin-Benutzer einmalig automatisch angemeldet, das Windows-Gerät wird konfiguriert, in Relution eingeschrieben und neu gestartet. Dieses Verhalten bleibt nach einem Systemreset erhalten. Falls das nicht mehr gewünscht sein sollte, muss einfach vor dem Systemreset der Ordner "C:\Recovery\AutoApply" gelöscht werden.