Policies-Tab: Export/Import (Settings Catalog, Compliance, Config)
Build & Release MSI / build-msi (push) Canceled after 0s

Neuer Tab "Policies" zum Sichern und Wiederherstellen von Intune-Policies.

- Backend src/PolicyIO.ps1: typ-getrieben fuer configurationPolicies
  (Settings Catalog), deviceCompliancePolicies und deviceConfigurations
- Export als JSON-Download (einzeln/Bundle) + Server-Archiv unter %APPDATA%
- Import per Datei-Upload, immer Neuanlage (nie ueberschreiben), robust fuer
  Hashtable (PS7) und PSCustomObject (PS5.1); im Read-Only-Modus ausgeblendet
- Routen in src/Api.ps1; Config-Scope DeviceManagementConfiguration.* auch
  nach Settings-Save sichergestellt
- Frontend: Tab + View, Suche/Typ-Filter/Sortierung, Auswahl, Download/Upload
- Version 0.1.25 (Start.ps1, CHANGELOG, README)
- build-local.ps1: x64-.NET-Runtime fuer wix auf ARM64-Windows + echter
  Desktop-Pfad

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-08-19 14:25:29 +02:00
co-authored by Claude Opus 4.8
parent e63ae28cb1
commit ea51bac772
9 changed files with 898 additions and 7 deletions
+12 -1
View File
@@ -136,6 +136,7 @@ if (-not $SkipModuleCheck) {
. (Join-Path $root "src/Models.ps1")
. (Join-Path $root "src/Graph.ps1")
. (Join-Path $root "src/Api.ps1")
. (Join-Path $root "src/PolicyIO.ps1")
. (Join-Path $root "src/Router.ps1")
. (Join-Path $root "src/Server.ps1")
@@ -161,6 +162,16 @@ if (-not (Test-Path $script:Config.ReportDir)) {
New-Item -ItemType Directory -Path $script:Config.ReportDir -Force | Out-Null
}
# Import/Export von Compliance Policies & Configuration Profiles benoetigt den
# Scope DeviceManagementConfiguration.* — bei Bedarf ergaenzen, damit das
# Verbindungs-Token die Policies lesen/schreiben darf.
if ($script:Config.Scopes -notcontains 'DeviceManagementConfiguration.ReadWrite.All') {
$script:Config.Scopes = @($script:Config.Scopes) + 'DeviceManagementConfiguration.ReadWrite.All'
}
if ($script:Config.ScopesRo -notcontains 'DeviceManagementConfiguration.Read.All') {
$script:Config.ScopesRo = @($script:Config.ScopesRo) + 'DeviceManagementConfiguration.Read.All'
}
# Session-State (im PowerShell-Prozess gehalten)
$script:State = [pscustomobject]@{
Connected = $false
@@ -175,7 +186,7 @@ $script:State = [pscustomobject]@{
Session = @() # geplante Zuweisungen
}
$script:ToolVersion = "0.1.23"
$script:ToolVersion = "0.1.25"
$script:BuildStamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
Write-Host ""