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:
132
README.md
132
README.md
@@ -1,124 +1,86 @@
|
||||

|
||||
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user