![SPToolbox-logo](https://git.azuze.fr/kawa/Sharepoint-Toolbox/raw/branch/main/SPToolbox-logo-dark.png) Application PowerShell avec interface graphique (WinForms) pour administrer, auditer et exporter des données depuis des sites SharePoint Online. ## Prérequis - **PowerShell 5.1** ou supérieur - **Module PnP.PowerShell** (`Install-Module PnP.PowerShell`) - **Azure AD App Registration** avec les permissions déléguées nécessaires (Client ID requis) - Accès au tenant SharePoint cible ## Lancement ```powershell .\Sharepoint_Toolbox.ps1 ``` --- ## Fonctionnalités ### 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 --- ### 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__.csv/html` | Rapports de permissions | | `Storage__.csv/html` | Rapports de stockage | | `FileSearch_.csv/html` | Résultats de recherche de fichiers | | `Duplicates__.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