DTLsaysWhat — Guide utilisateur

Guide pratique pour exécuter DTLsaysWhat et interpréter ses résultats, illustré par des exemples réels issus d'une machine Windows 11.

version1.0 plateformeWindows uniquement scriptDTLsaysWhat.py prérequisPython 3 + wmi + pywin32 + psutil

Présentation

DTLsaysWhat est un outil d'inventaire système Windows écrit en Python. Inspiré de l'utilitaire WHAT développé par Stanley Rabinowitz pour les systèmes DEC VAX/VMS dans les années 80, il collecte des informations détaillées sur la machine Windows locale ou distante, organisées en jusqu'à 20 catégories fonctionnelles.

Chaque exécution produit automatiquement deux fichiers de sortie enregistrés sur disque : un rapport en texte brut (.txt) et un rapport HTML autonome et navigable (.html) avec une barre latérale fixe.

Démarrage rapide

Installer les dépendances

pip install wmi pywin32 psutil

Lancer un inventaire complet

python DTLsaysWhat.py all

Collecte les 20 catégories séquentiellement et écrit deux fichiers dans le répertoire courant, nommés d'après le nom d'hôte et l'horodatage :

DTLsaysWhat_HOSTNAME_20260528_081930.txt
DTLsaysWhat_HOSTNAME_20260528_081930.html

Lancer une catégorie unique

python DTLsaysWhat.py system
python DTLsaysWhat.py security
python DTLsaysWhat.py perf

Spécifier un chemin de sortie

python DTLsaysWhat.py all --output C:\Rapports\inventaire.txt

Le fichier HTML est enregistré à côté sous le nom inventaire.html.

Syntaxe de la commande

python DTLsaysWhat.py [CATÉGORIE] [--output FICHIER] [--computer NOM_OU_IP]

Tous les arguments sont optionnels. Sans argument, l'outil utilise par défaut la catégorie system et cible la machine locale.

ArgumentForme courteDescription
CATÉGORIECatégorie à collecter (voir liste ci-dessous). Par défaut system si omis. Utiliser all pour exécuter toutes les catégories.
--output FICHIER-o FICHIERChemin du fichier texte de sortie. Si omis, généré automatiquement à partir du nom d'hôte et de l'horodatage.
--computer NOMMachine cible (nom NetBIOS) ou adresse IP. Par défaut, la machine locale.

Fichiers de sortie

Chaque exécution produit toujours deux fichiers, quelle que soit la catégorie sélectionnée.

Rapport texte (.txt) : Texte brut UTF-8, structuré par en-têtes de section et séparateurs de sous-section. Adapté à l'archivage, à la comparaison de versions ou au partage.

Rapport HTML (.html) : Fichier HTML autonome avec une esthétique terminal sombre (vert sur noir, police monospace). Inclut une barre latérale fixe avec des liens d'ancrage vers chaque section. Les deux fichiers partagent le même nom de base.

Si --output est défini sur rapport.txt, le fichier HTML est enregistré sous rapport.html. Si le chemin de sortie ne se termine pas par .txt, l'extension .html est ajoutée au chemin complet.
Erreurs d'écriture : Si l'outil ne peut pas écrire vers le chemin spécifié ou généré automatiquement (permission refusée, chemin invalide), un message d'erreur est affiché dans la console et ce fichier est ignoré. L'autre fichier de sortie (texte ou HTML) est tout de même tenté indépendamment.

Privilèges

Plusieurs catégories nécessitent des privilèges élevés (Exécuter en tant qu'administrateur). Sans élévation, ces sections retourneront des données partielles ou aucune donnée — aucune erreur n'est levée, la sortie de la sous-section reste simplement vide ou affiche un message « non disponible ».

Catégories qui bénéficient de l'élévation : security (BitLocker, Hyper-V, TPM, Démarrage sécurisé, Pare-feu), tasks, users, virt.

Catégories : référence des sorties

Les sections suivantes documentent chaque catégorie avec une description des données collectées et un extrait représentatif issu d'une exécution réelle sur une machine Windows 11 (Acer Predator PO3-600, i7-8700, 16 Go de RAM).

system

Identité de la machine, détails du système d'exploitation, uptime et fuseau horaire. C'est la catégorie par défaut quand aucune n'est spécifiée.
Sources de données

Win32_ComputerSystem, Win32_ComputerSystemProduct, Win32_SystemEnclosure, Win32_OperatingSystem, Win32_TimeZone

Exemple de sortie
SYSTEM --- Identification --- Machine name : PREDATOR Domain / Workgroup : WORKGROUP (workgroup) Manufacturer : Acer Model : Predator PO3-600 Serial number : (classified) UUID : (classified) Chassis type : Desktop --- Operating system --- OS : Microsoft Windows 11 Professional Version / Build : 10.0.26200 (Build 26200) Architecture : 64-bit Windows directory : C:\WINDOWS Installation : 07-06-2025 15:59:55 Last boot : 28-05-2026 06:15:48 (uptime: 0d 2h 3m) --- Time zone --- Time zone : (UTC+01:00) Brussels, Copenhagen, Madrid, Paris

hardware

Détails du processeur, de la carte mère et du firmware BIOS/UEFI.
Sources de données

Win32_Processor, Win32_BaseBoard, Win32_BIOS

Exemple de sortie
HARDWARE --- Processor(s) --- Name : Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz Manufacturer : GenuineIntel Physical cores : 6 Logical cores : 12 Base frequency : 3192 MHz Socket : U3E1 Architecture : x64 L2 cache : 1536 KB L3 cache : 12288 KB --- Motherboard --- Manufacturer : Acer Product : Predator PO3-600 Version : V:1.1 Serial number : (classified) --- BIOS / UEFI --- Manufacturer : American Megatrends Inc. Version : R01-C1 Date : 08-04-2020 00:00:00 SMBIOS version : 3.2

memory

Totaux de RAM physique, mémoire virtuelle, et détails par slot DIMM (capacité, fréquence, type, fabricant).
Sources de données

Win32_OperatingSystem, Win32_PhysicalMemory

Exemple de sortie
MEMORY Total RAM : 15.92 GB Available RAM : 8.92 GB Virtual memory : 18.29 GB total / 8.80 GB free --- Physical sticks --- Slot 1 : BANK 3 8.00 GB 2400 MHz Type: Unknown Manufacturer: Kingston SN: (classified) Slot 2 : BANK 2 8.00 GB 2400 MHz Type: Unknown Manufacturer: 0000 SN: (classified) Stick count : 2
Remarque : Le type mémoire peut s'afficher comme « Unknown » lorsque la classe WMI ne retourne pas de génération DDR reconnue. Il s'agit d'une limitation WMI, pas d'une erreur de l'outil.

disk

Disques physiques (modèle, taille, interface, partitions, numéro de série, statut) et volumes logiques (lettre de lecteur, type, système de fichiers, espace total/libre, étiquette).
Sources de données

Win32_DiskDrive, Win32_LogicalDisk

Exemple de sortie
DISKS AND VOLUMES --- Physical disks --- Disk 0 : HFS128G39TND-N210A Size : 119.24 GB Interface : SCSI Partitions : 4 SN : (classified) Status : OK Disk 1 : TOSHIBA DT01ACA100 Size : 931.51 GB Interface : SCSI Partitions : 1 SN : (classified) Status : OK Disk 2 : WD My Passport 259F USB Device Size : 931.48 GB Interface : USB Partitions : 1 SN : (classified) Status : OK --- Logical volumes --- C: [Fixed] NTFS 117.90 GB total / 4.76 GB free Label: N/A D: [Fixed] NTFS 931.51 GB total / 132.43 GB free Label: Autres E: [CD/DVD] N/A N/A total / N/A free Label: N/A F: [Fixed] NTFS 931.48 GB total / 295.27 GB free Label: Backup_2 G: [Fixed] exFAT 931.45 GB total / 110.56 GB free Label: Backup_1

gpu

Nom de la carte graphique, fabricant, VRAM, résolution et fréquence de rafraîchissement courantes, version et date du pilote.
Sources de données

Win32_VideoController

Exemple de sortie
GPU Name : NVIDIA GeForce GTX 1060 6GB Manufacturer : NVIDIA VRAM : -1048576 B Current resolution : 1920 x 1080 @ 60 Hz Driver : 32.0.15.7270 dated 03-03-2025 00:00:00 Status : OK
Remarque : La VRAM peut afficher une valeur négative (ex. -1048576 B) pour certaines cartes. Il s'agit d'un comportement connu de WMI pour certaines configurations NVIDIA et n'indique pas de problème matériel.

network

Interfaces réseau avec adresses IPv4/IPv6/MAC, passerelles par défaut, serveurs DNS, table de routage, connexions TCP actives, partages SMB locaux, lecteurs réseau mappés et configuration du proxy.
Sources de données

psutil (net_if_addrs, net_if_stats, net_connections), ipconfig /all, route print, net share, net use, Registre Windows

Exemple de sortie
NETWORK --- Network interfaces and IP addresses --- [output classified on this machine] --- Mapped network drives --- New connections will be remembered. The list is empty. --- Proxy (current user) --- Proxy : not configured

software

Applications installées (nom, version, éditeur), extraites du Registre Windows y compris les entrées 32 bits, triées alphabétiquement. Liste également les paquets AppX/Store.
Sources de données

Registre (HKLM et HKCU, clés Uninstall, y compris Wow6432Node), PowerShell Get-AppxPackage

Exemple de sortie
INSTALLED SOFTWARE 4K Video Downloader+ 26.0.8.0295 InterPromo GMBH 7-Zip 24.08 (x64 edition) 24.08.00.0 Igor Pavlov Adobe Acrobat (64-bit) 26.001.21563 Adobe Everything 1.4.1.1030 (x64) 1.4.1.1030 voidtools FileZilla 3.69.6 3.69.6 Tim Kosse GIMP 3.0.2-1 3.0.2.1 The GIMP Team Git 2.54.0 The Git Development Community Google Chrome 148.0.7778.179 Google LLC Logi Options+ 2.3.879545 Logitech Microsoft Edge 148.0.3967.83 Microsoft Corporation Mozilla Firefox (x64 en-US) 138.0.4 Mozilla Python 3.13.3 (64-bit) 3.13.3150.0 Python Software Foundation VLC media player 3.0.21 VideoLAN ... [liste complète par ordre alphabétique]
Conseil : Les applications web progressives (PWA) Chrome installées par profil apparaissent comme entrées individuelles nommées « Gmail », « Google Drive », « Docs », etc. C'est le reflet fidèle de l'état du Registre.

services

Deux sous-sections : tous les services actuellement en cours d'exécution (nom, mode de démarrage), et tous les services arrêtés avec un démarrage Automatique (nom, état courant). Cette dernière est particulièrement utile pour repérer les services qui devraient tourner mais ne tournent pas.
Sources de données

Win32_Service

Exemple de sortie
SERVICES --- Running services --- Antivirus Microsoft Defender [Auto] Application Frame Host [Auto] Broker Infrastructure [Auto] Microsoft Defender Antivirus Service [Auto] WLAN AutoConfig [Auto] Cryptographic Services [Auto] Print Spooler [Auto] SysMain [Auto] Windows Search [Auto] XTUOCDriverService [Auto] ... [liste complète] --- Stopped services (automatic startup) --- Group Policy Client Status: Stopped Downloaded Maps Manager Status: Stopped Intel(R) TPM Provisioning Service Status: Stopped Microsoft Edge Update Service (edgeupdate) Status: Stopped Software Protection Status: Stopped Google Update Service (gupdate) Status: Stopped

processes

Tous les processus en cours d'exécution, triés alphabétiquement par nom. Pour chaque processus : nom, PID, utilisation mémoire RSS et temps CPU total (utilisateur + système, en secondes).
Sources de données

psutil process_iter

Exemple de sortie
RUNNING PROCESSES AdobeCollabSync.exe PID: 10324 RAM: 29.17 MB CPU: 25.9s chrome.exe PID: 15560 RAM: 222.62 MB CPU: 238.8s chrome.exe PID: 16068 RAM: 262.63 MB CPU: 179.8s chrome.exe PID: 16580 RAM: 270.04 MB CPU: 48.3s chrome.exe PID: 20748 RAM: 324.83 MB CPU: 59.3s dwm.exe PID: 1704 RAM: 92.30 MB CPU: 410.0s explorer.exe PID: 9968 RAM: 344.11 MB CPU: 87.2s logioptionsplus_agent.exe PID: 10580 RAM: 122.94 MB CPU: 130.4s MemCompression PID: 668 RAM: 363.42 MB CPU: 4.6s MsMpEng.exe PID: 4760 RAM: 313.55 MB CPU: 290.2s python.exe PID: 1460 RAM: 42.56 MB CPU: 6.2s System PID: 4 RAM: 164.00 KB CPU: 480.4s System Idle Process PID: 0 RAM: 8.00 KB CPU: 83884.6s thunderbird.exe PID: 3996 RAM: 216.71 MB CPU: 26.5s ... [liste complète]
Remarque : Le temps CPU est cumulatif depuis le démarrage du processus, pas un pourcentage d'utilisation instantané. La catégorie perf fournit la charge CPU instantanée par cœur.

startup

Programmes configurés pour s'exécuter au démarrage, issus de trois sources : commandes de démarrage WMI, clé Run de HKLM et clé Run de HKCU. Utile pour auditer la persistance et les entrées de lancement automatique.
Sources de données

WMI Win32_StartupCommand, HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run, HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

Exemple de sortie
STARTUP PROGRAMS --- WMI Win32_StartupCommand entries --- Adobe Acrobat Synchronizer User: PREDATOR\user Command: "C:\Program Files\Adobe\Acrobat DC\Acrobat\AdobeCollabSync.exe" Everything User: Public Command: "C:\Program Files\Everything\Everything.exe" -startup Open-Shell Start Menu User: Public Command: "C:\Program Files\Open-Shell\StartMenu.exe" -autorun RtkAudUService User: Public Command: "C:\WINDOWS\System32\RtkAudUService64.exe" -background SecurityHealth User: Public Command: %windir%\system32\SecurityHealthSystray.exe --- Registry (HKLM\...\Run) --- Everything "C:\Program Files\Everything\Everything.exe" -startup Open-Shell Start Menu "C:\Program Files\Open-Shell\StartMenu.exe" -autorun RtkAudUService "C:\WINDOWS\System32\RtkAudUService64.exe" -background SecurityHealth %windir%\system32\SecurityHealthSystray.exe --- Registry (HKCU\...\Run) --- Adobe Acrobat Synchronizer "C:\Program Files\Adobe\Acrobat DC\Acrobat\AdobeCollabSync.exe"

security

Instantané de la posture de sécurité : état de Windows Defender et fraîcheur des signatures, profils de pare-feu (domaine/privé/public), état de chiffrement BitLocker par volume, Démarrage sécurisé et propriétés du TPM.
Sources de données

PowerShell : Get-MpComputerStatus, Get-NetFirewallProfile, Get-BitLockerVolume, Confirm-SecureBootUEFI, Get-Tpm

Exemple de sortie
SECURITY --- Windows Defender --- AntivirusEnabled : True AntivirusSignatureVersion : 1.451.138.0 AntivirusSignatureLastUpdated : 28/05/2026 00:51:41 RealTimeProtectionEnabled : True AntispywareEnabled : True --- Firewall --- Name Enabled DefaultInboundAction DefaultOutboundAction ---- ------- -------------------- --------------------- Domain True NotConfigured NotConfigured Private True NotConfigured NotConfigured Public True NotConfigured NotConfigured --- BitLocker --- MountPoint VolumeStatus ProtectionStatus ---------- ------------ ---------------- C: FullyDecrypted Off D: FullyDecrypted Off --- Secure Boot --- Secure Boot : Enabled --- TPM --- TpmPresent : True TpmReady : True TpmEnabled : True TpmActivated : True ManufacturerIdTxt : INTC ManufacturerVersion : 403.1.0.0
Élévation requise : Les données BitLocker, pare-feu, TPM et Démarrage sécurisé nécessitent des privilèges administrateur. Sans élévation, ces sous-sections seront vides.

updates

Mises à jour et correctifs Windows installés (articles KB), triés par date d'installation, le plus récent en premier.
Sources de données

Win32_QuickFixEngineering

Exemple de sortie
INSTALLED UPDATES KB5092762 5/12/2026 NT AUTHORITY\System Security Update KB5092734 5/27/2026 NT AUTHORITY\System Update KB5089573 5/27/2026 NT AUTHORITY\System Update KB5092427 5/27/2026 NT AUTHORITY\System Update KB5054156 9/30/2025 NT AUTHORITY\System Update
Remarque : Win32_QuickFixEngineering ne liste que les correctifs déployés via le chemin legacy de Windows Update. Les mises à jour de fonctionnalités et les mises à niveau majeures de Windows ne sont pas énumérées ici.

drivers

Tous les pilotes PnP signés installés avec le nom du périphérique, la version du pilote et le fabricant. Trié alphabétiquement par nom de périphérique. Les entrées avec un nom de périphérique vide sont exclues.
Sources de données

Win32_PnPSignedDriver

Exemple de sortie
INSTALLED DRIVERS ACPI Fan 10.0.26100.1150 (Standard system devices) Acer System Firmware R01-C1 5.35.12.10 Acer Inc. Brother HL-4150CDN series 1.7.0.0 Brother Disk drive 10.0.26100.8521 (Standard disk drives) HID Keyboard Device 10.0.26100.8521 (Standard keyboards) Intel(R) Wireless-AC 9462 22.10.0.7 Intel Corporation Intel(R) Wireless Bluetooth(R) 23.120.0.4 Intel Corporation NVIDIA GeForce GTX 1060 6GB 32.0.15.7270 NVIDIA Realtek Audio 6.0.1.8627 Microsoft Realtek Audio Universal Service 1.0.0.151 Realtek Trusted Platform Module 2.0 10.0.26100.8521 (Standard) USB Root Hub (USB 3.0) 10.0.26100.8521 (Standard USB HUBs) ... [liste complète]

users

Comptes utilisateurs locaux (nom, état d'activation, dernière ouverture de session), profils utilisateurs chargés (chemin local, état chargé) et utilisateur de la session courante avec son statut administrateur.
Sources de données

PowerShell Get-LocalUser, WMI Win32_UserProfile, variables d'environnement (USERNAME, USERDOMAIN), API Windows IsUserAnAdmin

Exemple de sortie
USERS --- Local accounts --- Name Enabled LastLogon ---- ------- --------- Administrateur False 13/10/2024 16:31:13 client True 28/05/2026 06:21:29 DefaultAccount False Invité False WDAGUtilityAccount False --- User profiles --- C:\WINDOWS\ServiceProfiles\MariaDB Loaded: False C:\Users\user Loaded: True --- Current user --- Account : PREDATOR\user Administrator : True

tasks

Tâches planifiées non désactivées et situées hors de l'espace de noms \Microsoft\*, triées par chemin de tâche. Cible les tâches tierces et créées par l'utilisateur.
Sources de données

PowerShell Get-ScheduledTask

Exemple de sortie
SCHEDULED TASKS TaskPath TaskName State -------- -------- ----- \ Adobe Acrobat Update Task Ready \ BACKUP 2026 Ready \ BACKUP 2 2026 Ready \ MicrosoftEdgeUpdateTaskMachineCore Ready \ MicrosoftEdgeUpdateTaskMachineUA Ready \ npcapwatchdog Ready \ NVIDIA App SelfUpdate_... Ready \ PredatorSense Ready \GoogleSystem\GoogleUpdater\ GoogleUpdaterTaskSystem149.0.7814.0{...} Ready \Mozilla\ Firefox Default Browser Agent 308046B0AF4A39CB Ready \Mozilla\ Firefox Background Update 308046B0AF4A39CB Ready

shares

Partages SMB locaux (nom, chemin, description) et lecteurs réseau mappés (lettre de lecteur locale, chemin UNC distant, état de la connexion).
Sources de données

Win32_Share, Win32_NetworkConnection

Exemple de sortie
NETWORK SHARES --- Local SMB shares --- [output classified on this machine] --- Mapped network drives --- [none configured on this machine]

events

Les 20 erreurs et avertissements les plus récents du journal d'événements Système, suivis des 20 plus récents du journal Application. Chaque entrée inclut l'horodatage, le type, l'ID d'événement et le texte du message.
Sources de données

PowerShell Get-EventLog

Exemple de sortie
RECENT EVENTS --- Log: System --- TimeGenerated : 28/05/2026 06:36:29 EntryType : Warning EventID : 10016 Message : The description for Event ID '10016' from source 'DCOM' cannot be found... TimeGenerated : 28/05/2026 06:21:17 EntryType : Error EventID : 1801 Message : Updated Secure Boot certificates are available on this device but have not yet been applied to the firmware... --- Log: Application --- TimeGenerated : 27/05/2026 08:53:45 EntryType : Error EventID : 8193 Message : Volume Shadow Copy Service error: Error calling CoCreateInstance routine. hr = 0x8007045b, A system shutdown is in progress. TimeGenerated : 27/05/2026 07:02:18 EntryType : Error EventID : 1000 Message : Faulting application name: MicrosoftEdgeSH.exe, version: 11.0.26100.8115 Exception code: 0xc0000409 ...
Remarque : L'en-tête de section mentionne « 24 dernières heures » comme indication d'intention, mais la requête récupère en réalité les 20 entrées les plus récentes sans filtre de date. Sur une machine peu sollicitée, ces entrées peuvent couvrir plusieurs jours.

perf

Instantané de performance : charge CPU par cœur logique (échantillon d'1 seconde), charge CPU globale, utilisation de la mémoire physique, utilisation du swap et utilisation disque par volume monté.
Sources de données

psutil : cpu_percent, virtual_memory, swap_memory, disk_partitions, disk_usage

Exemple de sortie
PERFORMANCE (snapshot) --- CPU --- Core 0 : 6.2% Core 1 : 1.6% Core 2 : 1.6% Core 3 : 4.7% Core 4 : 7.8% Core 5 : 1.6% Core 6 : 1.6% Core 7 : 6.2% Core 8 : 4.7% Core 9 : 0.0% Core 10 : 1.6% Core 11 : 0.0% Global load : 10.4% --- Memory --- Total : 15.92 GB Used : 7.11 GB (44.6%) Free : 8.81 GB Swap total : 2.38 GB Swap used : 98.00 MB (4.0%) --- Disks --- C:\ 113.14 GB / 117.90 GB used (96.0%) [NTFS] D:\ 799.08 GB / 931.51 GB used (85.8%) [NTFS] E:\ access denied F:\ 636.21 GB / 931.48 GB used (68.3%) [NTFS] G:\ 820.89 GB / 931.45 GB used (88.1%) [exFAT]
Conseil : Un volume affichant « access denied » signifie que l'outil n'a pas pu lire ses données d'utilisation, typiquement un lecteur CD/DVD sans média ou un volume avec des permissions restreintes. L'entrée est tout de même reportée plutôt que silencieusement ignorée.

virt

Détection de virtualisation : si cette machine semble être une VM (vérifiée contre les chaînes VMware, VirtualBox, Hyper-V, QEMU, KVM, Xen, Microsoft Corporation). Indique également l'état de la fonctionnalité Hyper-V, les VMs hébergées si le rôle est actif, et les distributions WSL.
Sources de données

WMI Win32_ComputerSystem, Win32_BIOS ; PowerShell Get-WindowsOptionalFeature, Get-VM ; wsl --list --verbose

Exemple de sortie
VIRTUALIZATION --- Detection: is this machine a VM? --- VM detected : no (probably physical) --- Hyper-V --- FeatureName : Microsoft-Hyper-V State : Disabled --- Hyper-V virtual machines (if role is active) --- [Hyper-V role disabled — no VMs listed] --- WSL --- WSL : not installed or not accessible

Collecte distante

Utiliser --computer pour cibler une machine Windows distante :

python DTLsaysWhat.py hardware --computer 192.168.1.42
python DTLsaysWhat.py all --computer POSTE-TRAVAIL01

La collecte distante repose sur WMI via le réseau et nécessite des permissions appropriées sur la machine cible. Les catégories suivantes s'exécutent toujours localement quelle que soit la valeur de --computer : security, users, tasks, software (paquets AppX), events, virt.

Encodage

Sur les systèmes Windows en français, cmd.exe utilise par défaut la page de codes OEM 850. L'outil détecte et gère ce cas automatiquement. Pour garantir l'affichage correct des caractères accentués, il est recommandé soit :

Limitations connues