web app mit hinzugefügt

This commit is contained in:
2026-06-17 07:40:52 +02:00
parent fedd8898d7
commit 2f271265e9
24 changed files with 14651 additions and 11 deletions
+115
View File
@@ -0,0 +1,115 @@
# Intune App-Manager – Web Edition
Modernes Web-Frontend fuer den Intune App-Zuweisungs-Manager.
PowerShell startet einen lokalen HTTP-Server, der das Frontend ausliefert
und die Microsoft Graph-Aufrufe ausfuehrt.
## Voraussetzungen
- Windows mit PowerShell 5.1 oder PowerShell 7+
- Modul `Microsoft.Graph.Authentication` (wird beim ersten Connect benoetigt):
```powershell
Install-Module Microsoft.Graph.Authentication -Scope CurrentUser -Force
```
- Browser (Edge, Chrome, Firefox)
## Start
```powershell
cd "c:\Temp\claude.code\Intune App Management\Intune-App-Manager-Web"
.\Start.ps1
```
Optionen:
| Parameter | Standard | Beschreibung |
|---------------|-----------------------------------------|---------------------------------------------|
| `-Port` | `8077` | Port des lokalen HTTP-Servers |
| `-TenantId` | (HanseMerkur Default) | Microsoft Entra Tenant-ID |
| `-ClientId` | (HanseMerkur Default) | App-Registrierung Client-ID |
| `-NoBrowser` | aus | Browser nicht automatisch oeffnen |
Beispiele:
```powershell
.\Start.ps1 -Port 8088
.\Start.ps1 -TenantId "..." -ClientId "..."
.\Start.ps1 -NoBrowser
```
Beenden: `Ctrl+C` im Terminal.
## Workflow
1. **Verbinden** – oben rechts klicken; Microsoft Login-Fenster oeffnet sich.
2. **Modus waehlen**: Abteilungen / RPA-Gruppen / Einzel-User.
3. **Ziele laden** – ueber "Laden" (User: in Suchfeld tippen).
4. **Ziele markieren** mit Checkboxen.
5. **Apps laden** – ueber "Laden" rechts neben "Apps".
6. **Pillen klicken** – jede gruene Pille bei einer App ist eine zugewiesene
Gruppe. Klick = "Ausgewaehlte Ziele dieser Gruppe hinzufuegen". Erneuter
Klick = entfernen.
7. **Required-Gruppe erstellen** – falls noetig, ueber "+ Required-Gruppe"
bei der App.
8. **Session pruefen** – rechts werden alle geplanten Operationen aufgelistet.
9. **Ausfuehren** – gruener Button rechts unten. HTML-Report erscheint
automatisch nach Abschluss.
## Pillen-Farben (App-Zeile)
| Farbe | Bedeutung |
|-------------|-------------------------------------------------------------------|
| Grau | Gruppe ist der App zugewiesen, Ziele sind keine Mitglieder |
| Gruen | Alle ausgewaehlten Ziele sind bereits Mitglied |
| Gelb | Einige Ziele sind Mitglied (Partial) |
| Cyan | Native Target (All Users / All Devices) – nicht aenderbar |
| Blau | Aktuell zur Session hinzugefuegt |
| Gestrichelt | "+ Required-Gruppe" Button |
## Architektur
```
Intune-App-Manager-Web/
├── Start.ps1 Entry Point
├── README.md diese Datei
├── src/
│ ├── Models.ps1 Hilfen / Datenklassen
│ ├── Graph.ps1 Microsoft Graph API Helpers
│ ├── Server.ps1 HTTP-Server (HttpListener)
│ ├── Router.ps1 Request-Routing
│ └── Api.ps1 REST-API-Endpoints
└── www/
├── index.html SPA-Shell
├── styles.css Modernes Dark Theme
└── app.js Frontend-Logik (Vanilla JS)
```
Reports werden in `%TEMP%\IntuneAppManager-Reports\` gespeichert und sind
ueber `http://localhost:<port>/reports/<datei>.html` erreichbar.
## REST-API (intern)
| Methode | Pfad | Zweck |
|---------|----------------------------------------------|------------------------------------|
| GET | `/api/status` | Verbindungsstatus |
| POST | `/api/connect` | Microsoft Graph verbinden |
| POST | `/api/disconnect` | Trennen |
| GET | `/api/groups` | Abteilungs-Gruppen (`abt-hm-*`) |
| GET | `/api/groups/rpa` | 3 vordefinierte RPA-Gruppen |
| POST | `/api/groups` | Neue Required-Gruppe erstellen |
| POST | `/api/groups/check` | Gruppen-Name pruefen |
| GET | `/api/groups/{id}/members` | Mitglieder einer Gruppe |
| GET | `/api/users?q=...` | User suchen |
| GET | `/api/apps` | Apps laden (cached) |
| GET | `/api/apps?refresh=true` | Apps neu laden |
| GET | `/api/membership?targets=...&groupId=...` | Mitgliedschafts-Status pruefen |
| POST | `/api/assignments/apply` | Geplante Zuweisungen ausfuehren |
## Hinweise
- **Single-User-App** – der lokale HTTP-Server nimmt nur eine Verbindung
zur Zeit zuverlaessig an. Den Browser-Tab bitte einzeln halten.
- **Auth lebt im PowerShell-Prozess** – Disconnect oder Schliessen des
Terminals beendet die Session.
- **Cache** – Apps werden im Server-Prozess gecached (Refresh-Knopf zum
Neuladen). Membership-Cache wird bei Aenderung der Ziel-Auswahl geleert.