/
/

Comment détecter les éléments manquants de l’inventaire logiciel par script et générer des rapports de conformité

par Team Ninja
How to Detect Missing Software Inventory Items via Script and Generate Compliance Reports blog banner image

Garantir la présence des logiciels requis tout en bloquant les applications non autorisées est indispensable pour la conformité, la sécurité et la standardisation des terminaux. Le faire manuellement est lent, peu fiable et prend beaucoup trop de temps dès qu’il y a de nombreux terminaux. En revanche, les scripts permettent aux MSP et aux administrateurs informatiques d’automatiser le processus et de détecter les problèmes avant qu’ils ne gênent les utilisateurs.

Les méthodes présentées dans ce guide permettent d’auditer les applications installées, de générer des rapports de conformité et de repérer les applications non autorisées ainsi que les logiciels manquants. Nous verrons PowerShell, l’invite de commande et le marquage via le Registre. Nous aborderons également l’intégration facultative avec la GPO, un RMM et NinjaOne pour l’automatisation et le reporting à grande échelle.

Besoin de plus d’informations ? Regardez la vidéo « Comment détecter les éléments manquants de l’inventaire logiciel par script et générer des rapports de conformité » pour un guide visuel.

Comment détecter les logiciels manquants par script et générer des rapports de conformité

📌 Prérequis :

  • Windows 10, 11 ou Server 2016+ est nécessaire pour prendre en charge les scripts.
  • PowerShell 5.1 ou version ultérieure pour exécuter les commandes d’inventaire et de reporting
  • Les droits d’administrateur sont requis sur les terminaux pour interroger les logiciels installés.
  • Vous devez disposer d’une liste pour chaque site, rôle ou client afin que le script sache ce qu’il doit vérifier.

Facultatif :

  • Facultatif : accès à la stratégie de groupe pour imposer des clés de registre ou des chemins de fichiers.
  • Facultatif : un RMM comme NinjaOne pour faciliter le déploiement de scripts à distance et le reporting.
Cliquez pour choisir une méthode
Méthode 1 : collecter l’inventaire des logiciels installés avec PowerShell
Méthode 2 : définir une référence de configuration logicielle et comparer l’inventaire
Méthode 3 : utiliser CMD (invite de commande) et WMIC pour un inventaire léger
Méthode 4 : enregistrer l’état de conformité dans le Registre
Méthode 5 : générer des rapports de conformité multi-appareils

Méthode 1 : collecter l’inventaire des logiciels installés avec PowerShell

PowerShell permet de récupérer la liste des applications installées depuis les emplacements de registre 64 bits et 32 bits. Vous pouvez ensuite l’exporter au format CSV pour le reporting.

📌 Cas d’utilisation :

  • Cette méthode sert à établir une liste claire des logiciels installés, à vérifier la conformité et à déterminer si les appareils respectent les standards.
  • Elle fournit les données nécessaires pour comparer ce qui devrait être installé à ce qui est réellement installé.

📌 Prérequis :

  • Les appareils ciblés doivent exécuter PowerShell 5.1 ou une version ultérieure.
  • Les droits d’administrateur sont requis pour accéder aux emplacements de registre où Windows stocke les informations sur les programmes installés.

Pour interroger à la fois les installations 64 bits et 32 bits, utilisez cette commande dans PowerShell :

$installedSoftware = Get-ItemProperty `
HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*,
HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |
Where-Object { $_.DisplayName } |
Select-Object DisplayName, DisplayVersion, Publisher

$installedSoftware | Format-Table -AutoSize

Pour exporter au format CSV :

$installedSoftware | Export-Csv "C:\Reports\InstalledSoftware.csv" -NoTypeInformation

Méthode 2 : définir une référence de configuration logicielle et comparer l’inventaire

Une fois la liste des applications installées collectée, l’étape suivante consiste à la comparer à une référence de configuration prédéfinie. Cette référence est la liste des applications qui doivent être présentes sur chaque appareil pour répondre aux exigences de conformité et d’exploitation. PowerShell vous permet de signaler les applications manquantes et d’exporter les résultats.

📌 Cas d’utilisation :

  • Vérifier que tous les terminaux disposent bien des applications requises.
  • Repérer les applications manquantes ou non autorisées avant qu’elles n’affectent les utilisateurs.

📌 Prérequis :

  • Vous devez disposer d’une liste prédéfinie et définitive des applications requises par site, rôle ou client.
  • Pour exécuter les scripts sur l’appareil ciblé, PowerShell 5.1 ou une version ultérieure est nécessaire.

Voici un exemple de liste de référence et la commande à exécuter dans PowerShell. Elle définit la liste des logiciels qui doivent être présents. Vous pouvez ajouter des applications en les séparant par une virgule et en les entourant de guillemets droits :

$requiredApps = @("Microsoft Defender Antivirus", "7-Zip", "Microsoft Edge", "FortiClient VPN")

Pour détecter les applications manquantes par rapport à la liste de référence, utilisez ce code :

$installed = $installedSoftware.DisplayName
$missing = $requiredApps | Where-Object { $installed -notcontains $_ }

$missingReport = [PSCustomObject]@{
ComputerName = $env:COMPUTERNAME
MissingSoftware = $missing -join "; "
Timestamp = (Get-Date).ToString("u")
}

Pour exporter au format CSV, exécutez cette commande :

$missingReport | Export-Csv "C:\Reports\MissingSoftware.csv" -NoTypeInformation

Méthode 3 : utiliser CMD (invite de commande) et WMIC pour un inventaire léger

Si PowerShell est restreint ou indisponible, vous pouvez recourir à l’invite de commande et à Windows Management Instrumentation Command-line (WMIC). Ces outils offrent un moyen rapide de recueillir des informations sur les logiciels installés. Moins détaillés que PowerShell, ils fonctionnent toutefois dans les environnements anciens.

📌 Cas d’utilisation :

  • Collecter l’inventaire logiciel dans des environnements anciens ou restreints.
  • Générer rapidement des listes de logiciels installés au format texte.

📌 Prérequis :

  • Un terminal Windows sur lequel WMIC est disponible (Windows 10 et versions antérieures, ou version serveur antérieure à 2022).
  • Les autorisations nécessaires pour exécuter des commandes depuis une invite de commande élevée.

Vous pouvez utiliser cette commande dans l’invite de commande pour exporter la liste des logiciels installés vers un fichier texte :

wmic product get name, version > C:\Reports\SoftwareInventory.txt

Facultatif : vous pouvez analyser les résultats avec PowerShell :

Get-Content "C:\Reports\SoftwareInventory.txt" | Select-String "AppName"

Méthode 4 : enregistrer l’état de conformité dans le Registre

Cette méthode inscrit les résultats de l’audit dans le Registre Windows, de sorte que chaque terminal conserve localement une trace de son état de conformité, avec la date du dernier audit et les logiciels manquants.

📌 Cas d’utilisation :

  • Rendre les résultats de conformité facilement consultables sur l’appareil, pour que les techniciens et les scripts puissent les vérifier rapidement.
  • Permettre aux outils RMM de lire les valeurs du registre et de les exploiter dans les rapports de conformité.

📌 Prérequis :

  • Des droits d’administrateur sont nécessaires pour créer et modifier des clés de registre sous HKLM.
  • Cette méthode nécessite le tableau $missing créé lors de la comparaison avec la référence de configuration à la méthode 2.

Voici comment créer un enregistrement local dans le registre pour refléter les résultats de conformité :

New-Item -Path "HKLM:\SOFTWARE\Org\SoftwareAudit" -Force
Set-ItemProperty -Path "HKLM:\SOFTWARE\Org\SoftwareAudit" -Name "LastAudit" -Value (Get-Date).ToString("u")
Set-ItemProperty -Path "HKLM:\SOFTWARE\Org\SoftwareAudit" -Name "MissingItems" -Value ($missing -join ", ")

Vous pouvez ensuite vérifier dans CMD (invite de commande) que la clé et les valeurs ont bien été créées. Utilisez ce code pour cela :

reg query HKLM\SOFTWARE\Org\SoftwareAudit

Méthode 5 : générer des rapports de conformité multi-appareils

Une fois que chaque appareil a généré son rapport d’audit au format CSV, vous pouvez regrouper les résultats dans un rapport principal. Vous obtenez ainsi une vue complète de la conformité de l’ensemble des terminaux, ce qui facilite le suivi des écarts par client, par site ou par rôle.

📌 Cas d’utilisation :

  • Créer un rapport unique qui rassemble les données de conformité de tous les appareils.

📌 Prérequis :

  • Un accès à un lecteur partagé ou à un RMM qui collecte les rapports CSV de chaque appareil.
  • PowerShell 5.1 ou une version ultérieure pour agréger les résultats exportés.

Voici les étapes pour générer des rapports de conformité multi-appareils :

  1. Collectez les rapports des appareils en veillant à ce que chaque terminal enregistre son CSV dans un dossier partagé ou le transmette via votre RMM.
  2. Exécutez cette commande PowerShell pour consolider les résultats en récupérant et en fusionnant tous les CSV :

Get-ChildItem "\\server\auditshare\*.csv" | Import-Csv | Export-Csv "C:\Reports\MasterComplianceReport.csv" -NoTypeInformation

  1. Passez ensuite en revue les colonnes clés. Assurez-vous que le rapport principal contient les champs essentiels, comme :
    1. Nom de l’appareil
    2. Logiciels manquants
    3. État de conformité
    4. Horodatage
  2. La commande Group-Object de PowerShell ou un filtrage permettent d’organiser les résultats par client, par site ou par rôle de terminal. Par exemple, vous pouvez regrouper tous les appareils de chaque client avec cette commande :
Import-Csv "C:\Reports\MasterComplianceReport.csv" | Group-Object Client | ForEach-Object {
Write-Output "Client: $($_.Name)"
$_.Group | Select-Object DeviceName, MissingSoftware, ComplianceStatus
""
}

⚠️ Points de vigilance

RisquesConséquences possiblesSolutions
Fichiers CSV manquants pour certains appareilsLe rapport principal sera incomplet et risque de sous-estimer la non-conformité.Vérifiez que chaque terminal a bien exporté son CSV. Relancez le script d’audit si nécessaire.
Les scripts d’audit ne fonctionnent pasAssurez-vous de disposer des autorisations appropriées.Exécutez les scripts avec un compte doté d’autorisations élevées.
Noms de colonnes incohérents entre les CSVL’importation peut échouer ou produire des résultats erronés.Standardisez les sorties des scripts. Chaque appareil exportera ainsi les mêmes noms de colonnes.

Autres points à prendre en compte pour détecter et signaler les logiciels manquants

Faux négatifs

Les noms de logiciels dans le champ DisplayName peuvent varier. Il existe par exemple une différence entre « Google Chrome » et « Chrome ». Pour éviter ce problème, utilisez des expressions régulières ou des correspondances avec caractères génériques afin d’éviter des résultats inexacts.

Suivi des licences

Les contrôles de conformité ne doivent pas se limiter aux installations manquantes. Ils doivent aussi surveiller les écarts de version et les licences d’évaluation expirées. Vos terminaux resteront ainsi conformes et à jour.

Exclusions

Envisagez de tenir deux listes distinctes : une pour les logiciels requis, l’autre pour les logiciels interdits. Vous pourrez ainsi signaler à la fois les installations manquantes et les applications non autorisées.

Souplesse et ajustement de la référence de configuration

Adaptez les exigences de la référence de configuration au rôle de chaque terminal. Par exemple, des bornes utilisées pour de l’affichage n’ont besoin que de quelques applications, tandis que des ingénieurs peuvent avoir besoin d’un large éventail de programmes pour travailler efficacement.

Guide de démarrage rapide

NinjaOne offre des capacités étendues pour détecter et gérer l’inventaire logiciel et générer des rapports de conformité. Plus précisément :

1. Détection de l’inventaire logiciel :

NinjaOne propose plusieurs scripts et outils pour suivre l’inventaire logiciel

  • Une fonction dédiée : Dashboard : Software Inventory
  • La plateforme permet de suivre les logiciels installés sur les appareils

2. Rapports de conformité :

NinjaOne propose des fonctions de reporting complètes, notamment :

  • Des outils de gestion des vulnérabilités
  • La possibilité d’importer des données de vulnérabilité depuis des fichiers CSV
  • Des rapports Runbook personnalisables et exportables
  • Des conditions de politique pour suivre la présence des logiciels

3. Capacités de scripting :

La plateforme dispose d’une vaste bibliothèque d’automatisation, avec des scripts tels que :

4. Autres fonctions de reporting :

Rapports planifiés

  • La possibilité d’exporter les rapports au format PDF
  • Le suivi par champs personnalisés pour les informations sur les logiciels et les appareils

Résoudre les problèmes d’audit logiciel et de génération de rapports

Logiciels 32 bits absents dans PowerShell 64 bits

Si les applications 32 bits n’apparaissent pas, vérifiez que votre script interroge bien le chemin de registre Wow6432Node en plus de la clé de désinstallation standard.

Export vide

Si le CSV exporté est vide, confirmez que le logiciel est bien installé et que le champ DisplayName est renseigné.

Échecs d’écriture dans le registre

Si les résultats de conformité ne sont pas enregistrés dans le Registre, exécutez le script avec des droits d’administrateur ou dans le contexte SYSTEM.

Problèmes d’encodage Unicode des CSV

Si les CSV exportés affichent du texte illisible ou des caractères manquants, utilisez -Encoding UTF8 avec Export-Csv pour traiter correctement les caractères spéciaux.

Les services NinjaOne qui facilitent la détection des logiciels manquants et la génération de rapports

Ce que NinjaOne peut faire De quoi il s’agitEn quoi cela aide
Déployer des scripts d’inventaire et de comparaison à grande échelleExécute des scripts PowerShell ou CMD sur tous les appareils gérésGarantit que chaque terminal est automatiquement comparé à la référence de configuration logicielle
Collecter les marqueurs du registre local pour la visibilité de l’auditLit les clés de conformité comme LastAudit et MissingItems dans le RegistreOffre aux techniciens et aux auditeurs une visibilité à la fois locale et centralisée
Marquer des appareils comme « non conformes »Identifie les terminaux qui ne respectent pas les exigences de la référence de configurationAccélère le tri en permettant aux techniciens de se concentrer sur les appareils non conformes
Alerter en cas de logiciel manquantDéclenche des notifications lorsque des applications requises sont absentesPermet aux techniciens d’intervenir immédiatement, avant que les utilisateurs ne soient touchés
Générer des rapports de conformité destinés aux clientsProduit des rapports avec suivi des versions et état de déploiementFournit un reporting transparent aux parties prenantes et facilite les audits

Avec NinjaOne, les MSP peuvent standardiser et industrialiser leurs audits informatiques des logiciels tout en proposant à leurs clients un reporting de conformité transparent.

Renforcer la conformité et réduire les risques grâce aux audits logiciels automatisés

Détecter les logiciels manquants et maintenir les terminaux conformes est essentiel pour la sécurité comme pour les opérations quotidiennes. En collectant les inventaires logiciels, en les comparant à une référence de configuration et en consignant les résultats localement et de façon centralisée, les MSP et les administrateurs informatiques savent rapidement quels appareils respectent les exigences.

Des rapports de conformité à l’échelle de l’entreprise donnent une visibilité complète sur l’ensemble des clients, tandis que NinjaOne permet d’automatiser les audits, d’accélérer la remédiation et de maintenir une conformité continue à grande échelle.

Sujets connexes :

You might also like

Prêt à simplifier les aspects les plus complexes de l'informatique et de la sécurité ?