TreeSize KMS (ktree)
Outil en ligne de comande, développé durant mon alternance chez Koesio Managed Services - analyse l’espace disque de postes Windows, pilotable à distance via le RMM avec un installation et une gestion des versions semi-automatique.
Mes objectifs
Remplacer les logiciels graphiques d’analyse disque par une commande légère pilotable à distance sur l’ensemble du parc client Koesio.
« Merci pour ce script, je viens de le tester et j’aime beaucoup son approche … c’est clair et plutôt rapide. »
Ce que j’ai fait concrètement
Moteur de scan C# embarqué
Un composant écrit en C# est intégré directement dans le script PowerShell. Il analyse les dossiers en parallèle (jusqu’à 32 tâches simultanées), affiche les résultats sous forme d’arborescence avec des jauges de remplissage. Le terminal ci-dessus et ci-dessous montrent une sortie réelle obtenue chez lors des tests de mise en production en interne.
Cache binaire et snapshots
Après le premier scan, les résultats sont sauvegardés dans un fichier cache (format binaire), permettant un rechargement quasi instantané lors des analyses suivantes. Il est aussi possible de prendre des « instantanés » à différents moments et de comparer visuellement l'évolution de l'espace disque entre deux états. C'est typiquement ce que l'on retrouve dans le terminal ci-contre, avec les évolutions de taille et de nombre de fichiers indiquées à côté de chaque dossier.
Pipeline CI/CD GitLab
Un pipeline GitLab automatise les tests, la sécurité, la compilation et la publication. Les vérifications (Pester, PSScriptAnalyzer, gitleaks) assurent qualité et sécurité à chaque modification.
Le résultat
Déployé en interne sur des postes Windows, l'outil analyse plus d'un million de fichiers en quelques minutes et recharge les résultats quasi instantanément grâce à un système de cache. Une nouvelle fonctionnalité permet désormais de comparer l'occupation disque dans le temps. Plusieurs cycles d'optimisation ont réduit de plus de moitié les pics de mémoire sur certaines étapes clés de l'exécution, passant de ~600 Mo à ~260 Mo de mémoire ram par exemple. Piste d'amélioration identifiée : étendre ces optimisations aux étapes restantes.
PowerShell avancé + C#
Intégration d’un composant .NET dans PowerShell, scan parallèle, cache binaire.
CI/CD GitLab
Tests Pester, analyse statique PSScriptAnalyzer, pipeline bloquant sur main.
Gestion de projet réelle
Feedback client, itérations, compromis performance/mémoire en conditions de production.
Mikael Bazzaro - TreeSize KMS · commande ktree · Koesio Managed Services · 2026