chore: clean repo for v2.0 publish

- Remove .planning/ (251 GSD planning files)
- Remove old PowerShell-era files (TODO.md, lang/, examples/)
- Remove accidentally tracked zip
- Rewrite README for .NET WPF app
- Update .gitignore

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dev
2026-04-09 17:08:49 +02:00
parent d656788a9b
commit d885431c90
259 changed files with 47 additions and 55200 deletions

132
README.md
View File

@@ -1,124 +1,86 @@
![SPToolbox-logo](https://git.azuze.fr/kawa/Sharepoint-Toolbox/raw/branch/main/SPToolbox-logo.png)
Application PowerShell avec interface graphique (WinForms) pour administrer, auditer et exporter des données depuis des sites SharePoint Online.
Application WPF (.NET 10) pour administrer, auditer et exporter des donnees depuis des sites SharePoint Online.
## Prérequis
## Installation
- **PowerShell 5.1** ou supérieur
- **Module PnP.PowerShell** (`Install-Module PnP.PowerShell`)
- **[Azure AD App Registration](https://git.azuze.fr/kawa/ps-scripts/src/commit/4ccc3de2b83295597a9212132d2f3d49afd9492b/Misc/Reg-App.ps1)** avec les permissions déléguées nécessaires (Client ID requis)
- Accès au tenant SharePoint cible
1. Telecharger le zip depuis la [page Releases](https://git.azuze.fr/kawa/Sharepoint-Toolbox/releases)
2. Extraire l'archive
3. Lancer **SharepointToolbox.exe** (necessite le runtime .NET 10)
## Lancement
## Prerequis
```powershell
.\Sharepoint_Toolbox.ps1
```
- **Windows 10** ou superieur
- **Runtime .NET 10** Desktop
- **Azure AD App Registration** avec les permissions deleguees necessaires (Client ID requis)
- Acces au tenant SharePoint cible
---
## Fonctionnalités
## Fonctionnalites
### Connexion et profils
- Saisie du **Tenant URL**, **Client ID** et **Site URL**
- **Profils sauvegardés** : créez, renommez, supprimez et chargez des profils de connexion réutilisables
- **Sélecteur de sites** : parcourez et cochez plusieurs sites du tenant en une seule vue (chargement asynchrone)
- Dossier de sortie configurable pour tous les exports
---
- Saisie du **Tenant URL** et **Client ID**
- **Profils sauvegardes** : creez, renommez, supprimez et chargez des profils de connexion reutilisables
- **Selecteur de sites** : parcourez et cochez plusieurs sites du tenant
- **Enregistrement d'app** : enregistrement automatique ou guide manuel de l'app Azure AD depuis le profil
- Support **multi-tenant** avec gestion des logos client
### Permissions Report
Audit complet des permissions d'un ou plusieurs sites.
- Scan des **bibliothèques, listes et dossiers** (profondeur configurable ou illimitée)
- Option **Recursive** pour inclure les sous-sites
- Inclusion optionnelle des permissions héritées
- Export **CSV** (données brutes, compatibles Excel) ou **HTML** (rapport visuel avec tableau interactif, filtrage, tri par colonne, regroupement par utilisateur/groupe)
---
- Scan des **bibliotheques, listes et dossiers** (profondeur configurable)
- Inclusion optionnelle des permissions heritees et sous-sites
- Mode **consolidation** : fusion des permissions identiques avec affichage des sites/bibliotheques
- Export **CSV** ou **HTML** (rapport interactif avec filtrage, tri, regroupement par utilisateur/site)
### Storage Metrics
Analyse de l'occupation du stockage SharePoint.
- Répartition **par bibliothèque** avec profondeur de dossiers configurable
- Option d'inclusion des **sous-sites**
- Métriques : taille totale, taille des versions, nombre d'éléments, dernière modification
- Export **CSV** ou **HTML** (rapport avec graphiques de répartition et arborescence dépliable)
- Repartition **par bibliotheque** avec profondeur de dossiers configurable
- Metriques : taille totale, taille des versions, nombre d'elements, derniere modification
- **Visualisation 3D** interactive du stockage
- Export **CSV** ou **HTML** (rapport avec graphiques de repartition)
---
### Annuaire utilisateurs
### Templates
Capture et réapplication de la structure d'un site SharePoint.
- **Capture** : arborescence (bibliothèques et dossiers), permissions (groupes et rôles), paramètres du site (titre, langue), logo
- **Création** depuis un template : nouveau site Communication ou Teams à partir d'un template capturé, avec application sélective des éléments capturés
- Templates persistés localement dans `Sharepoint_Templates.json`
---
- Liste complete des utilisateurs du tenant via Microsoft Graph
- Filtrage et recherche
- Export **HTML**
### Recherche de fichiers
Recherche avancée de fichiers à travers les bibliothèques d'un site.
Recherche avancee de fichiers a travers les bibliotheques d'un site.
| Filtre | Description |
|---|---|
| Extension(s) | Ex : `docx pdf xlsx` |
| Nom / Regex | Expression régulière appliquée sur le chemin du fichier |
| Créé après / avant | Plage de dates de création |
| Modifié après / avant | Plage de dates de modification |
| Créé par | Nom ou email de l'auteur |
| Modifié par | Nom ou email du dernier éditeur |
| Bibliothèque | Limite la recherche à un chemin relatif |
| Max résultats | Plafond configurable (10 50 000) |
| Nom / Regex | Expression reguliere sur le chemin du fichier |
| Cree apres / avant | Plage de dates de creation |
| Modifie apres / avant | Plage de dates de modification |
| Cree par | Nom ou email de l'auteur |
| Modifie par | Nom ou email du dernier editeur |
| Bibliotheque | Limite la recherche a un chemin relatif |
Utilise la **Search API SharePoint (KQL)** avec pagination automatique. Le filtre regex est appliqué côté client après récupération des résultats.
Export **CSV** ou **HTML** (tableau trié par colonne, filtrage en temps réel, indicateurs de tri).
---
Utilise la **Search API SharePoint (KQL)** avec pagination automatique.
### Doublons
Détection de fichiers ou dossiers en double au sein d'un site.
Detection de fichiers ou dossiers en double au sein d'un ou plusieurs sites.
**Type de scan :**
- Fichiers en double (via Search API)
- Dossiers en double (via énumération des bibliothèques)
**Type de scan :** Fichiers (via Search API) ou Dossiers (via enumeration CAML)
**Critères de comparaison (combinables) :**
- Nom — *toujours inclus comme critère principal*
- Taille identique
- Date de création identique
- Date de modification identique
- Nombre de sous-dossiers identique *(dossiers uniquement)*
- Nombre de fichiers identique *(dossiers uniquement)*
**Criteres de comparaison (combinables) :** Nom, Taille, Date de creation, Date de modification, Nombre de sous-dossiers, Nombre de fichiers
Le rapport HTML présente les doublons regroupés en **cartes dépliables** avec mise en évidence visuelle des valeurs identiques (vert) et différentes (orange), ainsi qu'un badge "Identiques" / "Différences détectées" par groupe.
Export **CSV** (avec colonne `DuplicateGroup`) ou **HTML**.
---
## Fichiers générés
| Fichier | Description |
|---|---|
| `Sharepoint_Export_profiles.json` | Profils de connexion sauvegardés |
| `Sharepoint_Templates.json` | Templates de sites capturés |
| `Permissions_<site>_<date>.csv/html` | Rapports de permissions |
| `Storage_<site>_<date>.csv/html` | Rapports de stockage |
| `FileSearch_<date>.csv/html` | Résultats de recherche de fichiers |
| `Duplicates_<mode>_<date>.csv/html` | Résultats du scan de doublons |
---
Export **CSV** ou **HTML** (cartes depliables avec mise en evidence des valeurs identiques/differentes).
## Architecture technique
- Interface **WinForms** (PowerShell natif, aucune dépendance UI externe)
- Toutes les opérations longues s'exécutent dans des **runspaces séparés** pour ne pas bloquer l'interface
- Communication runspace → UI via **hashtable synchronisée** + timer
- Module **PnP.PowerShell** pour toutes les interactions avec l'API SharePoint
- Interface **WPF** avec pattern **MVVM** (CommunityToolkit.Mvvm)
- Injection de dependances via Microsoft.Extensions.Hosting
- Authentification **MSAL** avec cache persistant et support broker WAM
- **Microsoft Graph SDK** pour les operations tenant/utilisateurs
- **PnP.Framework** (CSOM) pour les operations SharePoint
- Localisation **EN/FR** complete via fichiers .resx
- Branding configurable (logos MSP et client) dans les exports HTML