scloud by Florian Salzmann
ende

Zeitzone automatisch setzen in Intune Autopilot

Als ich zum ersten Mal Peter Klapwijks Lösung gesehen habe, war ich beeindruckt. Sie nutzt eine IP-Abfrage über eine URL und ein Azure Maps-Konto, um die richtige Zeitzone während der Autopilot-Registrierung zu erkennen.
Ich habe sie hauptsächlich in Europa eingesetzt, mit grossem Erfolg.

Diese Woche habe ich sie für einen Kunden in den USA implementiert. Dabei ist mir eine Herausforderung aufgefallen:
Bei Ländern mit mehreren Zeitzonen liefert Azure Maps mehrere Ergebnisse zurück. Dadurch ist unklar, welches davon du anwenden sollst.
Ich habe darum nach einer Alternative gesucht und die IPInfo API entdeckt. Sie liefert über ihre Legacy Free API einen einzigen, präzisen Zeitzonenwert.

Der beste Teil daran?
Du brauchst kein Azure Maps-Konto mehr.
Das macht das Setup einfacher, schneller und ohne zusätzliche Dienste.

IPInfo könnte die Legacy Free API in Zukunft abschalten. Zum Zeitpunkt dieses Artikels gibt es jedoch kein End-of-Life-Datum.

So funktioniert es

Das Skript fragt die IPInfo API ab, ermittelt die IANA-Zeitzone und wandelt diese anhand des offiziellen Microsoft Mapping-XML in das Windows-Zeitzonenformat um.
Anschliessend setzt es die Zeitzone direkt auf dem Gerät.

Dieser Ansatz eignet sich perfekt für Autopilot-Szenarien, bei denen du Geräte ohne Benutzerinteraktion in Intune registrierst.

Skript herunterladen

Lade mein einsatzbereites Skript von GitHub herunter:

Set-TimeZoneByIPAddress.ps1

Es ist eine einzelne PowerShell-Datei ohne Abhängigkeiten – ausser dem Windows-Betriebssystem selbst.

So funktioniert es

Das Skript macht Folgendes:

  1. Ruft http://ipinfo.io/json auf, um die IANA-Zeitzone des Geräts zu ermitteln
  2. Lädt das Microsoft windowsZones.xml-Mapping herunter
  3. Wandelt die IANA-Zeitzone in das Windows-Zeitzonenformat um
  4. Setzt die Zeitzone mit Set-TimeZone

Beispielausgabe während der Ausführung:

.\Set-TimeZoneByIPAddress.ps1
Fetching IANA time zone from ipinfo.io...
Detected IANA Time Zone: Europe/Zurich
Downloading custom XML mapping...
Searching for matching mapping...
Mapped to Windows Time Zone: W. Europe Standard Time
Setting Windows time zone using Set-TimeZone...
Successfully set Windows Time Zone: W. Europe Standard Time

Dieser Ansatz eignet sich perfekt für Autopilot-Szenarien, bei denen du Geräte ohne Benutzerinteraktion in Intune registrierst.

Bereitstellung über Intune

Option 1: Als Plattformskript bereitstellen

  1. Gehe im Intune Admin Center zu GeräteSkripts
  2. Erstelle ein neues Windows PowerShell-Skript
  3. Lade die Datei Set-TimeZoneByIPAddress.ps1 hoch
  4. Setze Dieses Skript mit den Anmeldeinformationen des angemeldeten Benutzers ausführen auf Nein
  5. Setze Skript in 64-Bit-PowerShell ausführen auf Ja
  6. Weise das Skript deiner Autopilot-Gerätegruppe zu

Du richtest diese Methode schnell ein. Sie funktioniert gut, wenn du das Skript nur einmal während der Registrierung ausführen musst.

Option 2: Als Win32-App bereitstellen

Für mehr Flexibilität und besseres Logging kannst du das Skript als Win32-App paketieren.

Füge zuerst am Ende des ersten Skripts Folgendes hinzu (wir verwenden es später als Detection):

$Path = "HKLM:\SOFTWARE\scloud\Set-TimeZoneByIPAddress"
$Key = "Version" 
$KeyFormat = "dword"
$Value = "1"

if(!(Test-Path $Path)){New-Item -Path $Path -Force}
if(!$Key){Set-Item -Path $Path -Value $Value
}else{Set-ItemProperty -Path $Path -Name $Key -Value $Value -Type $KeyFormat}
  1. Erstelle einen Ordner mit deiner .ps1-Datei und einem Installationsbefehl
  2. Verwende das Microsoft Win32 Content Prep Tool, um sie in .intunewin umzuwandeln
  3. Erstelle im Intune Admin Center eine neue Windows-App (Win32)
  4. Lade dein .intunewin-Paket hoch
  5. Verwende diesen Installationsbefehl: %SystemRoot%\sysnative\WindowsPowerShell\v1.0\powershell.exe -executionpolicy bypass -command .\Set-TimeZoneByIPAddress.ps1
  6. Und diesen Deinstallationsbefehl: reg delete "HKLM\SOFTWARE\scloud\Set-TimeZoneByIPAddress" /f
  7. Detection-Regel:
    • HKEY_LOCAL_MACHINE\SOFTWARE\scloud\Set-TimeZoneByIPAddress
    • Version
    • Gleich 1
  8. Weise sie deiner Autopilot-Gerätegruppe zu

Diese Methode gibt dir mehr Kontrolle über Wiederholungen, die Detection-Logik und die Versionierung. Zudem machst du das Skript damit in Autopilot (v1) verpflichtend. Das gilt allerdings nur für Autopilot und nicht für Autopilot Device Preparation (Autopilot v2). Bei Device Preparation hast du mehr Kontrolle über die Skriptausführung und kannst dieses Plattformskript bereits vor der Benutzeranmeldung ausführen lassen.

Warum das für Länder mit mehreren Zeitzonen besser ist

Azure Maps kann für ein Land mehrere mögliche Zeitzonen zurückgeben. IPInfo dagegen liefert eine einzige, genaue Übereinstimmung für den Standort des Geräts.
Das ist besonders wertvoll in den USA, Kanada, Australien und anderen grossen Ländern mit mehreren Zeitzonen.

Fazit

Mit diesem neuen Skript wird das Setzen der richtigen Zeitzone in Intune Autopilot deutlich einfacher.
Kein Azure Maps-Konto, keine Mehrdeutigkeit bei Ländern mit mehreren Zeitzonen und keine zusätzlichen Dienste, die du pflegen musst.

Du kannst es in wenigen Minuten eirnichten und sicherstellen, dass deine Geräte immer mit der richtigen Zeit starten.