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
.\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_<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
