Version: 1.0 | Datum: Juli 2026 | Zielgruppe: 2nd-Level-IT, MSP
Die Migration von GPOs zu Microsoft Intune ersetzt die OU-basierte, domänenzentrische Geräteverwaltung durch cloudbasiertes MDM und ermöglicht die Verwaltung auch ohne VPN und DC-Erreichbarkeit. Das Kernwerkzeug ist Group Policy Analytics im Intune Admin Center, das GPO-Backups importiert und bewertet, welcher Prozentsatz der Einstellungen direkt in den Settings Catalog migriert werden kann. Der größte Einzelrisikofaktor ist die falsche Deployment-Reihenfolge: Wird Conditional Access vor der Compliance Policy mit Grace Period aktiviert, werden sofort alle Geräte ausgesperrt. Geräte, die nicht enrolled sind (On-Prem-only, Server, Air-gapped), empfangen niemals Intune-Policies und müssen dauerhaft per GPO verwaltet bleiben; ein vollständiges Geräteinventar vor Projektstart ist daher keine Option, sondern Pflicht. Der Nutzen nach erfolgreicher Migration: zentrale Sichtbarkeit aller Endpunkte, Conditional Access auf Basis echter Compliance-Daten, und ein Geräteverwaltungsmodell das keinen lokalen Domänencontroller mehr voraussetzt.
| Lizenz | Enthält | Mindestanforderung |
|---|---|---|
| Microsoft Intune Plan 1 | Geräteverwaltung, Settings Catalog, Compliance, Group Policy Analytics | Ja — Pflicht für alle zu migrierenden Geräte |
| Microsoft Entra ID P1 | Dynamische AAD-Gruppen, Conditional Access | Ja — Pflicht (ohne P1: nur statische Gruppen, kein CA) |
| Microsoft Entra ID P2 | Privileged Identity Management, Identity Protection | Optional — empfohlen für CA-Risikobasierung |
| Microsoft 365 E3 / Business Premium | Enthält Intune + Entra P1 | Typischer MSP-Kundenvertrag |
| Universal Print | Drucker-Migration aus GPO Preferences | Separat lizenziert — bei Drucker-GPOs einkalkulieren |
Lizenzcheck vor Projektstart:
Connect-MgGraph -Scopes "Organization.Read.All", "Directory.Read.All"
$subscribedSkus = Get-MgSubscribedSku
$intuneSkus = $subscribedSkus | Where-Object { $_.ServicePlans.ServicePlanName -like "*INTUNE*" }
$intuneSkus | Select-Object SkuPartNumber,
@{N='Lizenzen-Gesamt'; E={$_.PrepaidUnits.Enabled}},
@{N='Lizenzen-Genutzt'; E={$_.ConsumedUnits}}
Drei Geräteklassen im MSP-Alltag:
| Gerätestatus | GPO-Empfang | Intune-Empfang | Konfliktpotenzial | Typische Geräte |
|---|---|---|---|---|
| On-Prem-only (nur AD) | Ja | Nein | Keins | Alte Systeme, Server, Air-gapped |
| Hybrid Azure AD Joined | Ja | Ja (wenn enrolled) | Hoch | Bestehende Firmen-PCs |
| Entra Joined (Azure AD Joined) | Nein | Ja | Keins | Neue Geräte, Autopilot |
Geräteinventar erstellen (Pflichtschritt vor Projektstart):
# AD-Inventar
Import-Module ActiveDirectory
Get-ADComputer -Filter * -Properties Name, OperatingSystem, OperatingSystemVersion, LastLogonDate |
Select-Object Name, OperatingSystem, OperatingSystemVersion,
@{N='LastLogon'; E={[DateTime]::FromFileTime($_.LastLogonTimeStamp)}} |
Export-Csv -Path "C:\Migration\Inventar_AD_Computer.csv" -NoTypeInformation -Encoding UTF8
# Entra-ID-Inventar (Join-Status)
Connect-MgGraph -Scopes "Device.Read.All"
Get-MgDevice -All | Select-Object DisplayName, TrustType, OperatingSystem, OperatingSystemVersion |
Export-Csv -Path "C:\Migration\Inventar_Entra_Devices.csv" -NoTypeInformation -Encoding UTF8
# Join-Status auf dem einzelnen Gerät prüfen
dsregcmd /status | Select-String "AzureAdJoined|DomainJoined|EnterpriseJoined"
Auswertungsschlüssel:
- TrustType = ServerAd → Hybrid Joined (GPO + Intune gleichzeitig, hohes Konfliktpotenzial)
- TrustType = AzureAd → Entra Joined (nur Intune)
- Nur in AD vorhanden, nicht in Entra → On-Prem-only (bleibt per GPO verwaltet)
Wenn Configuration Manager (MECM/SCCM) im Einsatz ist:
Bei Co-Management steuern Workload-Schieberegler, welches System (MECM oder Intune) für welchen Bereich zuständig ist. Relevante Workloads für die GPO-Migration:
| Workload | Beschreibung | Migrationsstrategie |
|---|---|---|
| Device Configuration | Geräteconfigs (Äquivalent zu Computer-GPOs) | Erst in Intune konfigurieren, dann Workload umschalten |
| Compliance Policies | Compliance-Regeln für CA | Wie Device Configuration |
| Endpoint Protection | Defender/AV-Policies | Wie Device Configuration |
| Windows Update Policies | Windows Update for Business | Intune Update-Ring muss vor dem Workload-Switch existieren |
Grundregel für Workload-Switching: Erst vollständig in Intune konfigurieren, dann Workload umschalten — niemals umgekehrt. Beim Workload-Switch bleiben MECM-Konfigurationen auf den Geräten, bis Intune-Policies greifen — das schützt während der Transition.
Pilot-Approach: Workload-Switch zuerst auf eine MECM-Collection mit 20–30 Testgeräten anwenden, bevor der breite Rollout erfolgt.
Was ist das Tool?
Group Policy Analytics ist ein Tool im Intune Admin Center, das importierte GPO-XML-Backups analysiert und bewertet, welcher Prozentsatz der Einstellungen durch Intune (MDM) abgedeckt werden kann. Es erlaubt außerdem die direkte Migration eines analysierten GPOs in ein Settings-Catalog-Profil.
Quelle: https://learn.microsoft.com/en-us/intune/device-configuration/import-group-policy-analytics
Vorbereitung: GPOs als XML exportieren (auf dem GPMC-Server):
Import-Module GroupPolicy
# XML-Reports erzeugen (werden für den Import in Group Policy Analytics benötigt)
$XmlPath = "C:\Migration\GPO_XML"
New-Item -ItemType Directory -Path $XmlPath -Force | Out-Null
Get-GPO -All | ForEach-Object {
$safeName = $_.DisplayName -replace '[\\/:*?"<>|]', '_'
Get-GPOReport -Guid $_.Id -ReportType Xml -Path "$XmlPath\$safeName.xml"
Write-Host "XML exportiert: $($_.DisplayName)"
}
# Vollständige GPO-Backups für Rollback (separat von XML-Reports)
$BackupPath = "C:\Migration\GPO_Backups"
New-Item -ItemType Directory -Path $BackupPath -Force | Out-Null
Get-GPO -All | ForEach-Object {
Backup-GPO -Guid $_.Id -Path $BackupPath
Write-Host "Backup erstellt: $($_.DisplayName)"
}
Wichtig: Die XML-Reports (aus
Get-GPOReport -ReportType Xml) sind nicht identisch mit den Backup-Ordnern ausBackup-GPO. Für Group Policy Analytics werden die XML-Reports benötigt. Maximale Dateigröße pro XML: 4 MB.
Import in Intune (manuell im Admin Center):
1. Intune Admin Center (intune.microsoft.com) → "Devices" → "Manage devices" → "Group Policy analytics"
2. "Import" → XML-Dateien auswählen (Mehrfachauswahl möglich)
3. Scope Tags vergeben → "Next" → "Create"
4. Analyseergebnisse erscheinen nach ca. 20 Minuten
Ergebnisse per Graph API abrufen:
Connect-MgGraph -Scopes "DeviceManagementConfiguration.Read.All"
$uri = "https://graph.microsoft.com/beta/deviceManagement/groupPolicyMigrationReports"
$reports = Invoke-MgGraphRequest -Method GET -Uri $uri
$reports.value | Select-Object displayName, migrationReadiness, totalSettingsCount,
supportedSettingsCount, unsupportedSettingsCount |
Export-Csv -Path "C:\Migration\GP_Analytics_Ergebnis.csv" -NoTypeInformation -Encoding UTF8
# MDM-Kompatibilitätsprozentsatz ausgeben
$reports.value | ForEach-Object {
$pct = if ($_.totalSettingsCount -gt 0) {
[math]::Round(($_.supportedSettingsCount / $_.totalSettingsCount) * 100, 1)
} else { 0 }
Write-Host "$($_.displayName): $pct% MDM-kompatibel ($($_.unsupportedSettingsCount) nicht migrierbar)"
}
Interpretation der Ergebnisse:
| MDM Support % | Bedeutung | Empfehlung |
|---|---|---|
| > 80% | Direktmigration möglich | Über "Migrate"-Button im Admin Center direkt in Settings Catalog übernehmen |
| 50–80% | Teilmigration nötig | Settings Catalog + manuelle Nacharbeit (OMA-URI, Skripte) |
| < 50% | Hoher Aufwand | Aufwandsschätzung; GPO-Preferences separat als Projekt behandeln |
| "Deprecated" | Einstellung veraltet | Nicht migrieren, Äquivalent neu suchen oder weglassen |
| "Not supported" | Kein MDM-Äquivalent | Workaround aus Abschnitt 5 anwenden |
Bekannte Einschränkung: Non-ADMX-Einstellungen werden nur in englischer Sprache korrekt analysiert. GPOs mit Einstellungen in anderen Sprachen liefern ungenaue MDM-Support-Prozentangaben. Empfehlung: GPMC immer auf einem englischsprachigen Windows betreiben.
Direkte Migration im Admin Center:
- GPO in der Liste auswählen → "Migrate" → Neue Settings-Catalog-Richtlinie wird automatisch erstellt
- Einschränkungen: AppLocker- und Firewall-Einstellungen sind im Migrate-Dialog ausgegraut und müssen manuell über Endpoint Security konfiguriert werden.
Was ist der Settings Catalog?
Der Settings Catalog ist die zentrale Konfigurationsoberfläche in Intune. Er listet tausende Einstellungen aus Windows Configuration Service Providers (CSPs), kategorisiert und durchsuchbar. Er ist der offizielle Nachfolger des älteren "Administrative Templates"-Profiltyps, der von Microsoft nicht mehr für neue Richtlinien freigegeben wird.
Quelle: https://learn.microsoft.com/en-us/intune/intune-service/configuration/settings-catalog
Profil erstellen:
1. Intune Admin Center → "Devices" → "Manage devices" → "Configuration" → "Create" → "New policy"
2. Plattform: "Windows 10 and later", Profiltyp: "Settings Catalog"
3. In "Configuration settings" → "Add settings" → Suche nach Kategorie oder Schlüsselwort
GPO-Äquivalente im Settings Catalog finden:
- Der CSP-Name und die OMA-URI-Pfade aus Group Policy Analytics (z.B. ./Device/Vendor/MSFT/BitLocker/RequireDeviceEncryption) sind direkte Suchbegriffe im Settings Catalog.
- Scope beachten: Device-Scope-Einstellungen schreiben in HKLM, User-Scope in HKCU — entspricht der Unterscheidung Computer Configuration / User Configuration in GPOs.
Unterschied Administrative Templates (Legacy) vs. Settings Catalog:
| Merkmal | Administrative Templates (Legacy) | Settings Catalog |
|---|---|---|
| Status | Abgekündigt (kein "Create" mehr) | Aktuell, fortlaufend erweitert |
| Einstellungsumfang | Begrenzt | Deutlich mehr, alle ADMX-Einstellungen enthalten |
| Drittanbieter-ADMX | Nicht unterstützt | Via "Import ADMX" (Public Preview) |
| Suche/Filter | Begrenzt | Volltext, Filterung nach OS-Edition/Scope |
| JSON Export/Import | Nein | Ja — nützlich für MSP-Mandantenreplikation |
Wichtiger Hinweis zum Loopback-Verhalten: Wenn eine User-Scope-Einstellung im Settings Catalog einer Gerätegruppe (statt einer Benutzergruppe) zugewiesen wird, wirkt sie auf alle Benutzer dieses Geräts. Das entspricht funktional dem GPO-Loopback-Merge-Modus — es ist jedoch kein konfigurierbarer Modus, sondern das Standardverhalten.
Wann ist ADMX-Ingestion nötig?
Nur wenn eine Anwendung oder ein Dienst eigene ADMX-Richtlinien mitbringt, die nicht nativ im Settings Catalog enthalten sind. Wichtig: Viele gängige ADMX-Einstellungen (Microsoft Edge, Google Chrome, Windows-interne Settings) sind bereits eingebaut und erfordern keine separate Ingestion.
Quelle: https://learn.microsoft.com/en-us/intune/device-configuration/settings-catalog/import-custom-admx-templates
Variante A — Import über Intune-Portal (empfohlen):
Pfad: Intune Admin Center → "Devices" → "Configuration" → Tab "Import ADMX" → "Import"
en-us unterstützt)Grenzen: Max. 20 ADMX-Dateien, je max. 1 MB. Combo-Box-Einstellungstyp nicht unterstützt. Abhängigkeiten (z.B. firefox.admx benötigt zuerst mozilla.admx) müssen vorab importiert werden. Windows-eigene ADMX-Dateien aus C:\Windows\PolicyDefinitions nicht importieren — diese werden über CSPs konfiguriert.
Variante B — Policy CSP / Graph API (für Win32-App-Richtlinien):
# ADMX ingesten
./Device/Vendor/MSFT/Policy/ConfigOperations/ADMXInstall/{AppName}/{SettingType}/{FileUid}
# Einstellung setzen
./Device/Vendor/MSFT/Policy/Config/{AppName}~{SettingType}~{CategoryPath}/{PolicyName}
Hinweis: Ingested Policies dürfen nur in bestimmte Registry-Bereiche schreiben. Schreibzugriff auf Software\Microsoft und Software\Policies\Microsoft ist generell gesperrt (mit explizit erlaubten Ausnahmen für Office, Edge, Internet Explorer, OneDrive, Visual Studio).
| Phase | Inhalt | Zeitrahmen | Kritisches Risiko |
|---|---|---|---|
| 1 — Ist-Analyse & Vorbereitung | Inventar, GPO-Export, Analytics, Gruppen-Konzept | Woche 1–2 | Kein — nur Analyse |
| 2 — Pilot | 10–20 Geräte, Security Baseline, Compliance, CA Report-Only | Woche 3–4 | Falsche Policy-Reihenfolge → Lockout |
| 3 — Stufenweiser Rollout | 4 Wellen, MDMWinsOverGP, Monitoring | Woche 5–10 | Hybrid-Konflikte, Preferences-Lücken |
| 4 — GPO-Deaktivierung | GPO-Links deaktivieren, Beobachtungszeitraum, Links entfernen | Woche 11–14 | GPO entfernt bevor Enrollment bestätigt |
| 5 — Validierung & Abschluss | Compliance-Report, Secure Score, CA Enforcing | Woche 15–16 | CA enforcing ohne ausreichende Compliance-Rate |
Gesamtdauer: 14–16 Wochen (bei ~100 Geräten; skalierbar)
Ziel: Tabelle mit Spalten Gerätename | AD-Domäne | Hybrid-Join | Entra-Join | OS-Version | Letzter Login | Migrationskandidat
Import-Module GroupPolicy
# GPO-Liste exportieren
Get-GPO -All | Select-Object DisplayName, GpoStatus, CreationTime, ModificationTime |
Export-Csv -Path "C:\Migration\GPO_Bestand.csv" -NoTypeInformation -Encoding UTF8
# GPO-Links pro OU exportieren
Get-GPO -All | ForEach-Object {
$gpo = $_
[PSCustomObject]@{
Name = $gpo.DisplayName
Status = $gpo.GpoStatus
Links = ((Get-GPOReport -Guid $gpo.Id -ReportType Xml) | Select-String 'SOMPath' | ForEach-Object { $_.Line.Trim() }) -join '; '
}
} | Export-Csv -Path "C:\Migration\GPO_Links.csv" -NoTypeInformation -Encoding UTF8
Backup- und XML-Export: siehe Abschnitt 2.1.
Nach dem Import (Abschnitt 2.1) GPOs nach MDM-Support klassifizieren:
- > 80%: Direktmigration in Phase 2/3
- 50–80%: Mit Nacharbeit in Phase 2/3
- < 50%: Preferences-Migration als Sonderprojekt (parallel ab Phase 3, siehe Anhang A)
- "Not supported": Workaround-Tabelle in Abschnitt 5
# SCP (Service Connection Point) für Hybrid-Join prüfen
$scp = Get-ADObject -Filter {
objectClass -eq 'serviceConnectionPoint' -and
name -eq 'Windows Azure AD Automatic Device Registration'
} -Properties keywords
if ($scp) {
Write-Host "SCP vorhanden — Hybrid-Join konfiguriert" -ForegroundColor Green
$scp.keywords
} else {
Write-Host "SCP NICHT vorhanden — Hybrid-Join nicht konfiguriert" -ForegroundColor Red
}
# AAD-Connect-Synchronisierung prüfen (auf dem AAD-Connect-Server)
Get-ADSyncScheduler | Select-Object SyncCycleEnabled, NextSyncCyclePolicyType, NextSyncCycleStartTimeInUTC
Prinzip: Nicht die OU-Struktur kopieren, sondern Funktion abbilden.
Connect-MgGraph -Scopes "Group.ReadWrite.All"
# Dynamische Gruppe — Beispiel: alle Windows-11-Geräte
$dynamicGroupBody = @{
displayName = "GRP-Intune-Windows11-Alle"
description = "Alle Windows-11-Geräte — Intune-Migration"
mailEnabled = $false
mailNickname = "GRP-Intune-Win11-Alle"
securityEnabled = $true
groupTypes = @("DynamicMembership")
membershipRule = '(device.operatingSystemVersion -startsWith "10.0.22") and (device.deviceOSType -eq "Windows")'
membershipRuleProcessingState = "On"
}
New-MgGroup -BodyParameter $dynamicGroupBody
# Statische Pilot-Gruppe
$pilotGroupBody = @{
displayName = "GRP-Intune-Pilot-Geraete"
description = "Pilot-Gruppe: 15 Testgeräte"
mailEnabled = $false
mailNickname = "GRP-Intune-Pilot"
securityEnabled = $true
}
$pilotGroup = New-MgGroup -BodyParameter $pilotGroupBody
# Geräte zur Pilot-Gruppe hinzufügen (IDs aus Inventar)
$deviceIds = @("device-object-id-1", "device-object-id-2") # Aus Inventar befüllen
foreach ($id in $deviceIds) {
New-MgGroupMember -GroupId $pilotGroup.Id -DirectoryObjectId $id
}
Empfohlene Gruppen-Taxonomie für MSPs:
- GRP-Intune-Pilot — 10–15 Testgeräte (manuell)
- GRP-Intune-Windows11-Alle — dynamisch, alle Win11-Geräte
- GRP-Intune-Abteilung-<Name> — dynamisch aus HR-Attribut Department
- GRP-Intune-Legacy-Ausnahmen — Geräte die dauerhaft per GPO verwaltet bleiben
| Ebene | Aktion | Zeitbedarf |
|---|---|---|
| Intune-Policy | Policy-Zuweisung entfernen oder Policy löschen | Minuten (greift beim nächsten Check-in, max. 8h) |
| GPO reaktivieren | Set-GPLink -LinkEnabled Yes |
Minuten (greift sofort beim nächsten GP-Refresh) |
| GPO aus Backup | Restore-GPO -BackupId <GUID> -Path <Pfad> |
30 Minuten |
| Enrollment rückgängig | Gerät aus Intune entfernen (Unenrollment) | 30 Minuten |
| Vollständiger Reset | Gerät zurücksetzen + Domäne beitreten | 2–4 Stunden |
# GPO-Backup wiederherstellen
$BackupPath = "C:\Migration\GPO_Backups"
$backups = Get-GPOBackup -Path $BackupPath
$backups | Select-Object DisplayName, Id, BackupId, Timestamp | Format-Table
# Einzelnes GPO wiederherstellen
Restore-GPO -BackupId "<BackupId-GUID>" -Path $BackupPath
# Alle GPOs aus Backup wiederherstellen (Notfall)
Restore-GPO -All -Path $BackupPath
Go/No-Go Phase 1:
- [ ] Geräteinventar vollständig: Hybrid/Entra/On-Prem-Verteilung bekannt
- [ ] Alle GPOs als XML exportiert und als Backup gesichert
- [ ] Group Policy Analytics abgeschlossen: MDM-Support-% für alle GPOs bekannt
- [ ] Entra ID und AAD Connect: Hybrid-Join funktionsfähig und synchronisierend
- [ ] Intune-Lizenzen vorhanden: Anzahl >= Anzahl zu migrierender Geräte
- [ ] Pilot-Gruppe in Entra ID angelegt und befüllt
- [ ] Rollback-Backup getestet (Test-Restore eines GPOs durchgeführt)
No-Go-Kriterien: Fehlende Intune-Lizenzen, AAD Connect nicht synchronisierend, kein GPO-Backup vorhanden.
Umfang: 10–20 Geräte, möglichst heterogen (verschiedene Abteilungen, OS-Versionen, Geräteklassen). Ideal: IT-Mitarbeiter und technikaffine Anwender.
1. Security Baseline deployen + manuell synchen + 24h warten
2. Compliance Policy mit 14-tägiger Grace Period deployen
3. Conditional Access im Report-Only-Modus erstellen
4. Weitere Settings-Catalog-Policies deployen
5. [Erst nach 14 Tagen]: CA auf Enforcing umstellen
Connect-MgGraph -Scopes "DeviceManagementConfiguration.ReadWrite.All"
# Verfügbare Security Baseline Templates abrufen
$templates = Invoke-MgGraphRequest -Method GET `
-Uri "https://graph.microsoft.com/beta/deviceManagement/templates?`$filter=templateType eq 'securityBaseline'"
$templates.value | Select-Object id, displayName | Format-Table
# Windows Security Baseline Profil erstellen
$baselineTemplateId = ($templates.value | Where-Object { $_.displayName -like "*Windows*Security*" }).id
$baseline = Invoke-MgGraphRequest -Method POST `
-Uri "https://graph.microsoft.com/beta/deviceManagement/intents" `
-Body (@{
displayName = "SEC-Baseline-Windows-Pilot"
description = "Windows Security Baseline — Pilot Phase"
templateId = $baselineTemplateId
roleScopeTagIds = @()
} | ConvertTo-Json -Depth 5)
# Pilot-Gruppe zuweisen
Invoke-MgGraphRequest -Method POST `
-Uri "https://graph.microsoft.com/beta/deviceManagement/intents/$($baseline.id)/assign" `
-Body (@{
assignments = @(@{
target = @{
"@odata.type" = "#microsoft.graph.groupAssignmentTarget"
groupId = "<Pilot-Gruppen-ID>"
}
})
} | ConvertTo-Json -Depth 5)
Write-Host "Security Baseline deployed. Manuellen Sync auslösen und 24h warten."
$compliance = Invoke-MgGraphRequest -Method POST `
-Uri "https://graph.microsoft.com/beta/deviceManagement/deviceCompliancePolicies" `
-Body (@{
"@odata.type" = "#microsoft.graph.windows10CompliancePolicy"
displayName = "COMP-Windows-Pilot"
description = "Compliance Policy Pilot — 14 Tage Grace Period"
osMinimumVersion = "10.0.19041"
bitLockerEnabled = $true
secureBootEnabled = $true
activeFirewallRequired = $true
defenderEnabled = $true
scheduledActionsForRule = @(@{
ruleName = "PasswordRequired"
scheduledActionConfigurations = @(@{
actionType = "block"
gracePeriodHours = 336 # 14 Tage
notificationTemplateId = ""
})
})
} | ConvertTo-Json -Depth 8)
# Pilot-Gruppe zuweisen
Invoke-MgGraphRequest -Method POST `
-Uri "https://graph.microsoft.com/beta/deviceManagement/deviceCompliancePolicies/$($compliance.id)/assign" `
-Body (@{
assignments = @(@{
target = @{
"@odata.type" = "#microsoft.graph.groupAssignmentTarget"
groupId = "<Pilot-Gruppen-ID>"
}
})
} | ConvertTo-Json -Depth 5)
Write-Host "Compliance Policy erstellt: $($compliance.id)"
Connect-MgGraph -Scopes "Policy.ReadWrite.ConditionalAccess"
$ca = Invoke-MgGraphRequest -Method POST `
-Uri "https://graph.microsoft.com/v1.0/identity/conditionalAccess/policies" `
-Body (@{
displayName = "CA-Pilot-ComplianceRequired"
state = "enabledForReportingButNotEnforced"
conditions = @{
users = @{ includeGroups = @("<Pilot-Gruppen-ID>") }
applications = @{ includeApplications = @("All") }
platforms = @{ includePlatforms = @("windows") }
}
grantControls = @{
operator = "OR"
builtInControls = @("compliantDevice")
}
} | ConvertTo-Json -Depth 8)
Write-Host "CA-Policy im Report-Only-Modus erstellt: $($ca.id)"
Write-Host "WICHTIG: Diese ID für Phase 5 notieren. Erst nach 14 Tagen auf 'enabled' umstellen."
# GPO-Ergebnis vor der Migration dokumentieren
gpresult /h "C:\Migration\gpresult_vorher.html" /f
# Manuellen Sync auslösen
Connect-MgGraph -Scopes "DeviceManagementManagedDevices.ReadWrite.All"
$deviceId = (Get-MgDevice -Filter "displayName eq '<Gerätename>'").Id
$managedDevice = Get-MgDeviceManagementManagedDevice -Filter "azureADDeviceId eq '$deviceId'"
Invoke-MgDeviceManagementManagedDeviceAction `
-ManagedDeviceId $managedDevice.Id `
-Action syncDevice
# Nach 15 Minuten: Policy-Status prüfen
$deviceConfig = Get-MgDeviceManagementManagedDeviceConfigurationState `
-ManagedDeviceId $managedDevice.Id
$deviceConfig | Select-Object SettingName, State, ErrorCode | Format-Table
# MDMWinsOverGP-Diagnose auf dem Gerät (lokal ausführen):
# Einstellungen > Konten > Auf Geschäfts-/Schulkonto zugreifen > <Konto> > Info
# > Erweiterten Diagnosebericht erstellen
# Im HTML-Bericht nach "MDMWins" suchen
Validierungskriterien Pilot:
- Alle Pilot-Geräte: Compliance-Status "Compliant" in Intune
- CA (Report-Only): < 5% der Anmeldungen würden blockiert
- GPO-Einstellungen und Intune-Einstellungen zeigen konsistenten Wert auf dem Gerät
- Logon-Script-Ersatz läuft fehlerfrei
- Drucker und Netzlaufwerke erreichbar
Go/No-Go Phase 2:
- [ ] Alle 10–20 Pilot-Geräte enrolled und "Compliant"
- [ ] CA (Report-Only) zeigt < 5% potenzielle Blockierungen
- [ ] Security Baseline ohne Fehler-Status auf allen Pilot-Geräten
- [ ] Keine GPO/Intune-Konflikte (gpresult vs. Intune-Bericht konsistent)
- [ ] Benutzer-Feedback: keine Produktivitätseinschränkungen
- [ ] Logon-Script-Ersatz validiert
No-Go-Kriterien: > 10% Geräte mit Policy-Fehlern, Lockouts durch CA, Datenverlust durch Script-Migration.
Rollout-Wellen:
| Welle | Zielgruppe | Anteil | Woche |
|---|---|---|---|
| Pilot | IT-Abteilung (bereits abgeschlossen) | 10–15% | 3–4 |
| Welle 1 | Erste Fachabteilung (geringes Ausfallrisiko) | 30% | 5–6 |
| Welle 2 | Zweite Fachabteilung | 30% | 7–8 |
| Welle 3 | Restliche Geräte inkl. komplexe Fälle | 40% | 9–10 |
Dauerhaft von Migration ausgenommene Geräte:
- Server (kein MDM-Enrollment vorgesehen)
- Air-gapped / keine Internetverbindung
- Windows < 10 / LTSC-Versionen ohne Intune-Support
- Produktionsmaschinen / Industrie-PCs
# Legacy-OU für dauerhaft ausgenommene Geräte anlegen
Import-Module ActiveDirectory
New-ADOrganizationalUnit -Name "Legacy-GPO-only" `
-Path "OU=Computer,DC=contoso,DC=local" `
-Description "Geräte die dauerhaft per GPO verwaltet bleiben"
Write-Host "Legacy-OU angelegt. Geräte manuell hineinverschieben."
Bei Hybrid-joined Geräten empfangen GPO und Intune Policies gleichzeitig. Für Policy-CSP-Einstellungen Intune-Vorrang konfigurieren:
Connect-MgGraph -Scopes "DeviceManagementConfiguration.ReadWrite.All"
$mdmWinsPolicy = Invoke-MgGraphRequest -Method POST `
-Uri "https://graph.microsoft.com/beta/deviceManagement/deviceConfigurations" `
-Body (@{
"@odata.type" = "#microsoft.graph.windows10CustomConfiguration"
displayName = "CFG-MDMWinsOverGP"
description = "Intune-Richtlinien haben Vorrang vor GPO bei Policy-CSP-Einstellungen"
omaSettings = @(@{
"@odata.type" = "#microsoft.graph.omaSettingInteger"
displayName = "MDMWinsOverGP"
description = "1 = MDM gewinnt über GPO bei Policy CSP Einstellungen"
omaUri = "./Device/Vendor/MSFT/Policy/Config/ControlPolicyConflict/MDMWinsOverGP"
value = 1
})
} | ConvertTo-Json -Depth 6)
Write-Host "MDMWinsOverGP Policy erstellt: $($mdmWinsPolicy.id)"
Write-Host "HINWEIS: Gilt NUR für Policy CSP. BitLocker CSP, Firewall CSP etc. sind NICHT abgedeckt."
Quelle: https://learn.microsoft.com/en-us/windows/client-management/mdm/policy-csp-controlpolicyconflict
Einschränkung:MDMWinsOverGPwirkt nur auf Einstellungen im Policy CSP. Andere CSPs (BitLocker, Firewall, Defender) werden nicht abgedeckt — dort können Race Conditions entstehen wenn dieselbe Einstellung in GPO und Intune konfiguriert ist. Als Gegenmaßnahme: GPO-Einstellungen für diese Bereiche auf "Not Configured" setzen sobald Intune-Äquivalent greift.
Connect-MgGraph -Scopes "DeviceManagementManagedDevices.Read.All", "DeviceManagementConfiguration.Read.All"
$devices = Get-MgDeviceManagementManagedDevice -All
$total = $devices.Count
$compliant = ($devices | Where-Object { $_.ComplianceState -eq "compliant" }).Count
$complianceRate = [math]::Round(($compliant / $total) * 100, 1)
Write-Host "Compliance-Rate: $complianceRate% ($compliant / $total Geräte)"
# Geräte mit Fehlern identifizieren
$errorDevices = $devices | Where-Object { $_.ComplianceState -eq "noncompliant" }
$errorDevices | Select-Object DeviceName, ComplianceState, LastSyncDateTime |
Export-Csv "C:\Migration\Monitoring_Fehler_$(Get-Date -Format 'yyyy-MM-dd').csv" `
-NoTypeInformation -Encoding UTF8
Eskalationspfad:
| Situation | Erstreaktion | Eskalation |
|---|---|---|
| Einzelnes Gerät non-compliant | Manueller Sync, gpresult prüfen |
Nach 2h ohne Besserung: Gerät aus Rollout-Gruppe entfernen |
| > 5% einer Welle mit Fehler | Rollout pausieren, Fehleranalyse | Rollout-Gruppe komplett entfernen, Welle wiederholen |
| Lockouts durch CA | CA sofort auf Report-Only zurücksetzen | Compliance-Policy und Baseline prüfen |
| Netzlaufwerke/Drucker weg | GPO-Link temporär reaktivieren | Intune-Ersatzlösung parallel stabilisieren |
| Kritische App startet nicht | App-Policy prüfen | GPO-Einstellung reaktivieren bis Intune-Fix |
Hinweis Check-in-Verzögerung: Intune-Policies greifen nicht sofort. Standard-Intervall: 8 Stunden. Nach Policy-Änderungen immer manuellen Sync auslösen und Kunden informieren: "Die Policy ist in Intune vorhanden — Wirkung kommt beim nächsten Check-in."
Go/No-Go je Rollout-Welle:
- [ ] Compliance-Rate > 90% nach jeder abgeschlossenen Welle
- [ ] Helpdesk-Tickets < 110% des normalen Volumens
- [ ] Keine ungeplanten Produktionsunterbrechungen
- [ ] On-Prem-Geräte ohne Enrollment in Legacy-OU identifiziert
Grundregel: GPO-Links erst deaktivieren wenn das Enrollment aller betroffenen Geräte in Intune bestätigt ist und Intune-Policies nachweislich greifen. Geräte ohne Enrollment empfangen nach GPO-Deaktivierung gar keine Richtlinien mehr.
Import-Module GroupPolicy
$ou = "OU=Workstations,DC=contoso,DC=local"
$links = (Get-GPInheritance -Target $ou).GpoLinks
foreach ($link in $links) {
$gpoName = (Get-GPO -Guid $link.GpoId).DisplayName
Set-GPLink -Guid $link.GpoId -Target $ou -LinkEnabled No
Write-Host "Deaktiviert: $gpoName an $ou"
}
# Status prüfen
Get-GPInheritance -Target $ou | Select-Object -ExpandProperty GpoLinks |
Select-Object DisplayName, Enabled, Enforced
Connect-MgGraph -Scopes "DeviceManagementManagedDevices.Read.All"
$devices = Get-MgDeviceManagementManagedDevice -All
$nonCompliant = $devices | Where-Object { $_.ComplianceState -ne "compliant" }
if ($nonCompliant.Count -gt 0) {
Write-Warning "WARNUNG: $($nonCompliant.Count) Geräte non-compliant nach GPO-Deaktivierung!"
$nonCompliant | Select-Object DeviceName, ComplianceState, LastSyncDateTime | Format-Table
} else {
Write-Host "OK: Alle Geräte compliant" -ForegroundColor Green
}
Erst nach 14-tägigem fehlerfreiem Beobachtungszeitraum:
# GPO-Links entfernen (GPO-Objekte bleiben erhalten)
$ou = "OU=Workstations,DC=contoso,DC=local"
foreach ($link in (Get-GPInheritance -Target $ou).GpoLinks) {
$gpoName = (Get-GPO -Guid $link.GpoId).DisplayName
Remove-GPLink -Guid $link.GpoId -Target $ou
Write-Host "Link entfernt: $gpoName"
}
# GPO-Objekte in AD umbenennen (NICHT löschen — Backup bleibt als echte Fallback-Ebene)
Get-GPO -All | Where-Object { $_.DisplayName -notlike "[ARCHIV]*" } | ForEach-Object {
$newName = "[ARCHIV] $($_.DisplayName)"
Rename-GPO -Guid $_.Id -TargetName $newName
Write-Host "Archiviert: $newName"
}
Go/No-Go Phase 4:
- [ ] Alle migrierten Geräte: Compliance-Status "Compliant" für 14 Tage stabil
- [ ] Kein Anstieg der Helpdesk-Tickets nach GPO-Deaktivierung
- [ ] Logon-Script-Ersatz läuft zuverlässig
- [ ] Drucker und Netzlaufwerke über Intune-Lösung erreichbar
No-Go-Kriterien: Compliance-Rate fällt unter 85%, kritische Produktivitätseinschränkungen.
Connect-MgGraph -Scopes "DeviceManagementManagedDevices.Read.All", "DeviceManagementConfiguration.Read.All"
$devices = Get-MgDeviceManagementManagedDevice -All
$total = $devices.Count
$compliant = ($devices | Where-Object ComplianceState -eq "compliant").Count
$nonCompliant = ($devices | Where-Object ComplianceState -eq "noncompliant").Count
Write-Host "=== Abschluss-Compliance-Report ==="
Write-Host "Gesamt: $total"
Write-Host "Compliant: $compliant ($([math]::Round($compliant/$total*100,1))%)"
Write-Host "Non-Compliant: $nonCompliant ($([math]::Round($nonCompliant/$total*100,1))%)"
$devices | Select-Object DeviceName, ComplianceState, OSVersion, EnrolledDateTime, LastSyncDateTime, UserDisplayName |
Export-Csv "C:\Migration\Abschluss_Report_$(Get-Date -Format 'yyyy-MM-dd').csv" `
-NoTypeInformation -Encoding UTF8
Connect-MgGraph -Scopes "SecurityEvents.Read.All"
$secureScore = Invoke-MgGraphRequest -Method GET `
-Uri "https://graph.microsoft.com/v1.0/security/secureScores?`$top=1"
$latest = $secureScore.value[0]
Write-Host "Secure Score: $($latest.currentScore) / $($latest.maxScore) ($([math]::Round($latest.currentScore / $latest.maxScore * 100, 1))%)"
Connect-MgGraph -Scopes "Policy.ReadWrite.ConditionalAccess"
$caId = "<CA-Policy-ID-aus-Phase-2>"
Invoke-MgGraphRequest -Method PATCH `
-Uri "https://graph.microsoft.com/v1.0/identity/conditionalAccess/policies/$caId" `
-Body (@{ state = "enabled" } | ConvertTo-Json)
Write-Host "CA-Policy auf Enforcing umgestellt. Monitoring für 48h intensivieren."
Go/No-Go Phase 5:
- [ ] Compliance-Rate > 95% über alle verwalteten Geräte
- [ ] Microsoft Secure Score gleich oder höher als vor Migration
- [ ] CA auf Enforcing ohne neue Lockouts
- [ ] Abschlussdokumentation fertiggestellt
- [ ] Legacy-GPO-OU und Backup-Pfad dokumentiert
- [ ] Runbook für laufenden Betrieb (neue Geräte, neue Policies) erstellt
Priorisiert nach Risiko (Hoch zuerst):
| Rang | Fallstrick | Risiko | Gegenmaßnahme |
|---|---|---|---|
| 1 | CA vor Compliance Policy aktiviert — Alle Geräte sofort non-compliant und ausgesperrt | HOCH | Compliance Policy IMMER zuerst mit 14-tägiger Grace Period. CA startet ausnahmslos im Report-Only-Modus. |
| 2 | GPO-Links entfernt bevor Enrollment bestätigt — Geräte erhalten gar keine Richtlinien mehr | HOCH | Dual-Management-Phase 4–8 Wochen einplanen. GPO-Links erst deaktivieren wenn Intune-Enrollment je Gerät bestätigt ist. |
| 3 | Co-Management Workload-Switch ohne Intune-Vorbereitung — Geräte erhalten kurzzeitig keine Policies | HOCH | Erst vollständig in Intune konfigurieren, dann Workload umschalten. Zuerst Pilot-Collection (20–30 Geräte). |
| 4 | On-Prem-only Geräte vergessen — Geräte ohne Enrollment empfangen keine Intune-Policies | HOCH | Vollständiges Geräteinventar vor Projektstart. Legacy-OU für dauerhaft ausgenommene Geräte anlegen. |
| 5 | VBScript/Batch-Logon-Scripts ohne Ersatz — Scripts laufen nach Migration nicht mehr | HOCH | PowerShell-Neuschrieb vor Migrationsbeginn. Asynchrones Verhalten (kein Logon-Trigger in Intune) beachten: Scheduled Task als zuverlässigerer Ersatz. |
| 6 | GPO Preferences ohne Intune-Äquivalent — Drucker, Laufwerke, Shortcuts fallen weg | HOCH | Universal Print + SharePoint/OneDrive als Parallelsprojekt ab Phase 3 starten. Nicht als Teil des Hauptrollouts behandeln. |
| 7 | Hybrid-joined Konflikte — GPO und Intune setzen dieselbe Einstellung gleichzeitig | HOCH | MDMWinsOverGP aktivieren (gilt nur für Policy CSP). GPO-Einstellungen auf "Not Configured" setzen sobald Intune-Äquivalent greift. |
| 8 | Intune Check-in-Verzögerung — Policy erscheint wirkungslos, Helpdesk-Tickets steigen | MITTEL | Nach jeder Policy-Änderung manuellen Sync auslösen. Kunden und Helpdesk vorab informieren. |
| 9 | WMI-Filter ohne Intune-Äquivalent — Geräte-spezifisches Targeting nicht abbildbar | MITTEL | Assignment Filters (~60% Abdeckung). Dynamic AAD Groups mit Geräteeigenschaften. Software-basierte WMI-Filter: extensionAttributes via PowerShell. |
| 10 | OU-zu-Gruppe-Mapping unterschätzt — Gruppen-Konzept zu spät erstellt | MITTEL | Gruppen-Konzept in Phase 1 erstellen. Funktion abbilden, nicht OU-Namen kopieren. Dynamische Gruppen aus HR-Attributen aufbauen. |
| 11 | Item-Level-Targeting (ILT) aus GPO Preferences — Bedingungslogik innerhalb einer Policy nicht übertragbar | MITTEL | ILT-Logik in separate AAD-Gruppen zerlegen (eine Gruppe pro Bedingung). Letzte Instanz: PowerShell-Script prüft Bedingung und setzt Einstellung. |
| 12 | GPO Block Inheritance / Enforce ohne Entsprechung — Hierarchie-Override nicht vorhanden | NIEDRIG | Exclusion Groups in Intune ersetzen "Block Inheritance" funktional. Konfliktprioritäten in Settings Catalog sorgfältig planen. |
| GPO-Feature | Intune-Alternative / Workaround | Bewertung |
|---|---|---|
| Logon-Scripts (VBScript, Batch) | PowerShell-Script via Intune Management Extension (IME), deployed als Platform Script im Benutzerkontext. Asynchron — kein garantierter Logon-Trigger. | Ersatz möglich, aber Verhaltensunterschiede (asynchron, 8h Intervall) beachten |
| Logoff-Scripts | PowerShell-Scheduled Task via Win32 App Deployment; Task feuert bei Abmeldung | Umsetzbar, aber höherer Deployment-Aufwand |
| WMI-Filter (OS-Version, Hardware) | Assignment Filters: osVersion, manufacturer, model |
~60–70% Abdeckung; Software-basierte WMI-Filter haben 0% Abdeckung |
| WMI-Filter (Software-basiert) | Dynamic AAD Group mit extensionAttribute (per PowerShell gesetzt) | Workaround — erhöhter Verwaltungsaufwand |
| GPO Preferences — Drive Maps | OneDrive Known Folder Move + SharePoint-Freigaben; übergangsweise PowerShell-Script | Infrastrukturänderung erforderlich (SharePoint/OneDrive-Migration) |
| GPO Preferences — Printer Deployment | Microsoft Universal Print (erfordert kompatible Drucker oder Universal Print Connector); alternativ PowerShell Add-Printer via IME |
Universal Print: separat lizenziert. PowerShell: Workaround ohne zentrale Verwaltung |
| GPO Preferences — Scheduled Tasks | Win32 App mit Task-XML (geplante Aufgabe als Datei deployen) oder Intune Remediation Script | Umsetzbar |
| GPO Preferences — Shortcuts | PowerShell Remediation Script via IME | Umsetzbar |
| GPO Preferences — Environment Variables | PowerShell-Script via IME | Umsetzbar |
| GPO Preferences — Lokale Benutzer/Gruppen | Endpoint Security > Account Protection Profile | Partiell — nicht alle GPP-Optionen abgedeckt |
| GPO Preferences — Registry (direkte Schreibzugriffe) | Settings Catalog (wenn Einstellung vorhanden) oder Custom OMA-URI; Einschränkung: HKCU nur eingeschränkt per OMA-URI | Fallweise prüfen |
| Loopback-Processing (Merge) | Settings Catalog: User-Scope-Policies an Gerätegruppen zuweisen wirkt auf alle Benutzer des Geräts (Standardverhalten, kein konfigurierbarer Modus) | Funktionaler Ersatz für Merge-Modus; Replace-Modus hat kein Äquivalent |
| Loopback-Processing (Replace / Kiosk) | Intune Kiosk-Mode (Single-App / Multi-App) für Kiosk-Szenarien; Intune Shared Device Mode für Shared Workstations | Kiosk: vollwertiger Ersatz. Shared: weitgehender Ersatz |
| OU-basiertes Targeting | AAD-Gruppen (dynamisch oder statisch). Hybrid-Join: OU-Mitgliedschaft via AAD Connect als Gruppenattribut synchronisierbar | Kein direktes Äquivalent — Gruppen-Konzept muss neu aufgebaut werden |
| Security Filtering (Sicherheitsgruppen auf GPO) | Intune-Richtlinie wird Entra-Gruppen zugewiesen — funktional äquivalent | Vollwertiger Ersatz |
| GPO Block Inheritance | Exclusion Groups in Intune-Policy-Zuweisung | Funktionaler Ersatz |
| GPO Enforce / No Override | Intune kennt keine Hierarchie-Override-Logik; Konfliktlösung über Policy-Reihenfolge und Scope | Kein direktes Äquivalent — Policies müssen konfliktfrei geplant sein |
| AppLocker | Endpoint Security > Attack Surface Reduction > Application Control | Separat konfigurieren — nicht über "Migrate"-Funktion in Group Policy Analytics |
| Firewall-Regeln (GPO) | Endpoint Security > Firewall | Separat konfigurieren — nicht über "Migrate"-Funktion in Group Policy Analytics |
Set-GPLink -LinkEnabled No), nicht gelöschtRemove-GPLink)[ARCHIV]-Präfix umbenannt, nicht gelöscht| Thema | URL |
|---|---|
| Group Policy Analytics — Import & Analyse | https://learn.microsoft.com/en-us/intune/device-configuration/import-group-policy-analytics |
| GPO-Migration zu Settings Catalog | https://learn.microsoft.com/en-us/intune/device-configuration/migrate-group-policy |
| Settings Catalog — Erstellen und Verwalten | https://learn.microsoft.com/en-us/intune/intune-service/configuration/settings-catalog |
| ADMX-Templates im Settings Catalog | https://learn.microsoft.com/en-us/intune/device-configuration/settings-catalog/configure-admx-templates-windows |
| Custom ADMX importieren | https://learn.microsoft.com/en-us/intune/device-configuration/settings-catalog/import-custom-admx-templates |
| ADMX-Ingestion via Policy CSP | https://learn.microsoft.com/en-us/windows/client-management/win32-and-centennial-app-policy-configuration |
| ControlPolicyConflict / MDMWinsOverGP | https://learn.microsoft.com/en-us/windows/client-management/mdm/policy-csp-controlpolicyconflict |
| GPO vs. MDM Policy — Wer gewinnt? | https://learn.microsoft.com/en-us/archive/blogs/cbernier/windows-10-group-policy-vs-intune-mdm-policy-who-wins |
| Co-Management Workloads | https://learn.microsoft.com/en-us/intune/configmgr/comanage/workloads |
| Intune Management Extension (IME) | https://learn.microsoft.com/en-us/intune/device-management/tools/management-extension-windows |
| Endpoint Security — Firewall | https://learn.microsoft.com/en-us/intune/device-configuration/endpoint-security/firewall |
| Endpoint Security — Application Control (AppLocker) | https://learn.microsoft.com/en-us/intune/device-configuration/endpoint-security/attack-surface-reduction |
Die Migration von GPO Preferences ist ein eigenständiges Langzeitprojekt, das parallel zum Hauptrollout ab Phase 3 läuft. Es darf nicht auf dem kritischen Pfad des Hauptprojekts liegen.
| Preference-Typ | Intune-Alternative | Aufwand | Abhängigkeit |
|---|---|---|---|
| Logon-Scripts (VBScript/Batch) | PowerShell-Neuschrieb + IME | Hoch | Vor Phase 2 abschließen |
| Netzlaufwerke (Drive Maps) | SharePoint/OneDrive Known Folder Move | Hoch | SharePoint-Lizenz, Datenmigration |
| Drucker | Universal Print + Connector oder PowerShell | Mittel-Hoch | Universal-Print-Lizenz (separat) |
| Scheduled Tasks | Win32-App-Deployment mit Task-XML | Mittel | Intune Win32 App bereit |
| Shortcuts | PowerShell Remediation Script | Niedrig | IME vorhanden |
| Registry-Preferences | Settings Catalog prüfen, sonst Custom OMA-URI | Mittel | CSP-Pfad muss bekannt sein |
| Umgebungsvariablen | PowerShell-Script via IME | Niedrig | IME vorhanden |
| Lokale Benutzer/Gruppen | Endpoint Security > Account Protection | Niedrig | Direkt verfügbar |
| Phase | Rollback-Aktion | Zeitbedarf |
|---|---|---|
| Phase 1 | Entfällt (nur Analyse, keine Konfigurationsänderungen) | — |
| Phase 2 | Intune-Profiles löschen + CA deaktivieren | Minuten bis 8h Check-in |
| Phase 3 | Rollout-Gruppe aus Policy-Zuweisung entfernen | Max. 8h bis Check-in |
| Phase 4a (Links deaktiviert) | Set-GPLink -Guid <GUID> -Target <OU> -LinkEnabled Yes |
Sofort wirksam |
| Phase 4b (Links entfernt) | Restore-GPO -BackupId <ID> -Path <BackupPath> |
~30 Minuten |
| Phase 5 (CA Enforcing) | CA zurück auf enabledForReportingButNotEnforced |
Minuten |
| Scope | Benötigt für |
|---|---|
DeviceManagementConfiguration.ReadWrite.All |
Settings Catalog, Security Baseline, Compliance Policies erstellen/ändern |
DeviceManagementManagedDevices.ReadWrite.All |
Gerätesync auslösen, Inventar |
DeviceManagementReports.Read.All |
Compliance Reports abrufen |
Policy.ReadWrite.ConditionalAccess |
CA-Policies erstellen/ändern |
Group.ReadWrite.All |
AAD-Gruppen anlegen und befüllen |
Device.Read.All |
Geräteinventar aus Entra ID |
Organization.Read.All |
Lizenzprüfung |
SecurityEvents.Read.All |
Microsoft Secure Score |
[1] Dual-Management-Dauer: Agent 2 nennt "4–8 Wochen", Agent 3 empfiehlt phasenbasiert 14 Tage Beobachtungszeitraum nach GPO-Deaktivierung. Im Leitfaden wurde die Aussage von Agent 2 als übergeordnetes Prinzip beibehalten (Dual-Management-Phase = Phase 3, Woche 5–10), während der 14-tägige Beobachtungszeitraum von Agent 3 als separate Kontrollschritt nach der eigentlichen Deaktivierung (Phase 4) integriert wurde. Beide Aussagen sind komplementär, nicht widersprüchlich.
[2] MDMWinsOverGP-Einschränkung: Agent 2 schreibt vereinfachend "MDM (Intune) gewinnt über GPO bei CSP-Einstellungen". Agent 1 (Research) präzisiert: MDMWinsOverGP gilt ausschließlich für den Policy CSP — andere CSPs (BitLocker, Firewall, Defender) sind nicht abgedeckt. Die präzisere Formulierung aus Agent 1 wurde übernommen und an allen relevanten Stellen mit Warnhinweisen versehen.
[3] CA-Aktivierungsschwelle: Agent 3 nennt "> 95% Compliance-Rate" als Voraussetzung für CA-Enforcing, Agent 2 nennt "2 Wochen". Im Leitfaden wurden beide Kriterien als UND-Bedingung formuliert: mindestens 14 Tage Wartezeit UND > 95% Compliance-Rate. Das ist die konservativere und damit für MSP-Kunden sicherere Vorgabe.
Erstellt von Agent 4 – Orchestrator & Report | 2026-07-07
Grundlage: Agent 1 (Microsoft-Doku), Agent 2 (Praxis & Fallstricke), Agent 3 (Migrationsplan)