116 lines
5.4 KiB
Markdown
116 lines
5.4 KiB
Markdown
# Intune Manager – Web Edition
|
||
|
||
Modernes Web-Frontend fuer den Intune 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.
|