# Filer Manager Un outil PowerShell mono-fichier pour les serveurs de fichiers Windows. Il analyse des dossiers et rapporte : - **Tailles des dossiers** — arborescence visuelle et repliable avec barres de taille (arbre GUI + HTML). - **Chemins trop longs** — fichiers/dossiers dont le chemin complet atteint ou dépasse un seuil (260 par défaut, le `MAX_PATH` de Windows). - **Permissions NTFS** — propriétaire + ACL (identité, droits, allow/deny, hérité) par dossier, jusqu'à une profondeur configurable. Dans l'interface, **cliquez sur n'importe quel en-tête de colonne** (Dossier / Identité / Droits / Type / Hérité) pour une fenêtre de type Excel : tri A→Z / Z→A et sélection des valeurs à conserver. Les filtres se combinent entre les colonnes ; **Effacer les filtres** réinitialise le tout. - **Octroi automatique en cas de refus** *(optionnel)* — lorsqu'un élément ne peut pas être lu, l'outil s'approprie la propriété pour Administrators et accorde le `FullControl` à `BUILTIN\Administrators` afin que l'analyse puisse se terminer. Chaque modification est consignée dans l'onglet/la section de rapport **Accès accordé**, et par défaut chacune est **annulée** après l'analyse (propriétaire + ACL d'origine restaurés là où ils ont pu être lus au préalable). Nécessite une exécution en mode élevé. Tout est exportable vers un **rapport HTML autonome** (aucune ressource externe — fonctionne hors ligne, facile à envoyer par e-mail ou à archiver). Les rapports peuvent devenir volumineux, vous pouvez donc **n'exporter que les catégories nécessaires** — une, plusieurs ou toutes — aussi bien dans l'interface (sélecteur à cases sur **Exporter HTML…**) qu'en mode sans interface (`-Category`). Aucune installation ni dépendance. Fonctionne sur **Windows PowerShell 5.1** et **PowerShell 7+**. ## Lancer l'interface graphique Double-cliquez sur **`Run-FilerManager.cmd`** (il se lance avec `-ExecutionPolicy Bypass` pour cette exécution uniquement), ou depuis une console : ```powershell pwsh -STA -File .\filer-manager.ps1 ``` Dans la fenêtre : **Ajouter…** un ou plusieurs dossiers, ajustez *Longueur max* / *Profondeur des permissions* / *Inclure les fichiers dans l'arborescence*, cochez éventuellement **Accorder l'accès Administrators aux éléments refusés** (et **Annuler les modifications après l'analyse**), cliquez sur **Analyser**, puis **Exporter HTML…** — la boîte de dialogue d'export vous laisse **cocher les catégories** (Tailles des dossiers, Chemins trop longs, Permissions, Accès accordé, Erreurs) à inclure dans le fichier ; toutes sont sélectionnées par défaut. > L'octroi automatique n'agit que sur les éléments refusés, un élément à la fois. Exécutez Filer Manager > **en tant qu'administrateur** pour qu'il fonctionne — il vous avertit si vous n'êtes pas en mode élevé. > L'analyse s'exécute sur un thread d'arrière-plan, la fenêtre reste donc réactive sur les grosses arborescences. ## Lancer sans interface (pour le Planificateur de tâches / cron) ```powershell .\filer-manager.ps1 -Path "\\FILER01\Data","D:\Profiles" -Output C:\Reports\filer.html -NoGui ``` ### Paramètres | Paramètre | Défaut | Description | |-----------------------|---------|----------------------------------------------------------------------| | `-Path` | — | Un ou plusieurs dossiers racines à analyser. | | `-Output` | — | Chemin du rapport HTML (mode sans interface). | | `-MaxPathLength` | `260` | Signale les éléments dont la longueur de chemin complet est ≥ ce nombre de caractères. | | `-PermissionDepth` | `1` | Niveaux de dossiers sous chaque racine pour lesquels collecter les ACL (0 = racines uniquement). | | `-IncludeFilesInTree` | off | Liste les fichiers individuels dans l'arborescence des tailles, pas seulement les dossiers. | | `-GrantAccess` | off | S'approprie la propriété + accorde le FullControl à Administrators sur les éléments refusés, puis réessaye. Nécessite le mode élevé. | | `-KeepGrants` | off | Conserve l'accès accordé par `-GrantAccess` (par défaut : annulé après l'analyse). | | `-NoGui` | off | Force le mode sans interface (nécessite `-Path` et `-Output`). | | `-Category` | `All` | Catégories à inclure dans le rapport — toute combinaison de `Tree`, `LongPaths`, `Permissions`, `Grants`, `Errors` (pour garder les gros rapports petits). | N'exporter que les permissions, ou seulement les tailles + chemins trop longs : ```powershell .\filer-manager.ps1 -Path "D:\Shares" -Output perms.html -NoGui -Category Permissions .\filer-manager.ps1 -Path "D:\Shares" -Output sizes.html -NoGui -Category Tree,LongPaths ``` ### Planifier un rapport hebdomadaire ```powershell $action = New-ScheduledTaskAction -Execute "pwsh.exe" ` -Argument '-NoProfile -File "C:\Tools\filer-manager\filer-manager.ps1" -Path "D:\Shares" -Output "C:\Reports\filer.html" -NoGui' $trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Monday -At 6am Register-ScheduledTask -TaskName "Filer Report" -Action $action -Trigger $trigger -RunLevel Highest ``` ## Notes - Exécutez l'outil avec un compte disposant d'un accès en lecture aux dossiers (et `SeBackupPrivilege` / Administrateur aide à atteindre les ACL et à contourner les refus par dossier). Les éléments qui ne peuvent pas être lus sont listés dans la section **Erreurs / accès refusé** au lieu de faire échouer l'analyse — ou, avec `-GrantAccess` (en mode élevé), l'outil s'accorde l'accès et liste les modifications dans **Accès accordé**. - Taille d'un dossier = somme des longueurs des fichiers (taille logique), pas la taille sur le disque. - Le rapport est un seul fichier `.html` avec CSS/JS inline — sans risque à envoyer par e-mail ou à conserver comme instantané d'audit.