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 fec5ae26e1
260 changed files with 242 additions and 55228 deletions

142
README.md
View File

@@ -1,124 +1,40 @@
![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.
# SharePoint Toolbox
## Prérequis
Application pour administrer, auditer et exporter des donnees depuis des sites SharePoint Online.
- **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
## Prerequis
## Lancement
- Windows 10 ou superieur
- Runtime .NET 10 Desktop
- Acces au tenant SharePoint cible
```powershell
.\Sharepoint_Toolbox.ps1
```
## Fonctionnalites principales
---
- **Connexion & profils** — profils de connexion reutilisables, selecteur multi-sites, enregistrement Azure AD assiste, branding multi-tenant
- **Rapport de permissions** — audit bibliotheques/listes/dossiers, permissions heritees, mode consolidation, export CSV/HTML
- **Metriques de stockage** — utilisation par bibliotheque, taille des versions, nombre d'elements, visualisation 3D interactive, export CSV/HTML
- **Annuaire utilisateurs** — liste des utilisateurs du tenant via Microsoft Graph, filtrage/recherche, export HTML
- **Recherche de fichiers** — recherche KQL (extension, regex, plages de dates, auteur, editeur, bibliotheque)
- **Detection de doublons** — fichiers (Search API) ou dossiers (CAML), criteres combinables (nom, taille, dates, nombres), export CSV/HTML
- **Localisation** — interface complete EN/FR
## Fonctionnalités
## Dependances (NuGet)
### Connexion et profils
| Paquet | Version | Role |
|---|---|---|
| CommunityToolkit.Mvvm | 8.4.2 | Generateurs MVVM |
| CsvHelper | 33.1.0 | Lecture/ecriture CSV |
| LiveChartsCore.SkiaSharpView.WPF | 2.0.0-rc5.4 | Graphiques / vue 3D stockage |
| Microsoft.Extensions.Hosting | 10.0.0 | Host generique + DI |
| Microsoft.Graph | 5.74.0 | SDK Graph (tenant/utilisateurs) |
| Microsoft.Identity.Client | 4.83.3 | Authentification MSAL |
| Microsoft.Identity.Client.Broker | 4.82.1 | Support broker WAM |
| Microsoft.Identity.Client.Extensions.Msal | 4.83.3 | Cache de tokens persistant |
| PnP.Framework | 1.18.0 | Operations SharePoint CSOM |
| Serilog (+ Hosting, Sinks.File) | 4.3.1 / 10.0.0 / 7.0.0 | Journalisation |
- 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
## Architecture
---
### 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)
---
### 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)
---
### 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`
---
### Recherche de fichiers
Recherche avancée de fichiers à travers les bibliothèques 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) |
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).
---
### Doublons
Détection de fichiers ou dossiers en double au sein d'un site.
**Type de scan :**
- Fichiers en double (via Search API)
- Dossiers en double (via énumération des bibliothèques)
**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)*
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 |
---
## 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
MVVM (CommunityToolkit) · DI via Microsoft.Extensions.Hosting · Authentification MSAL avec cache persistant et broker WAM · Microsoft Graph SDK · PnP.Framework (CSOM) · Localisation .resx (EN/FR) · Branding configurable dans les exports HTML.