/
/

Ontbrekende software in de inventaris detecteren via script en compliancerapporten genereren

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

Directe samenvatting

Deze blogpost van NinjaOne biedt een uitgebreide basislijst met CMD-commands en een deep dive duik in Windows-commands met meer dan 70 essentiële cmd-commands voor zowel beginners als gevorderden. Het legt praktische opdrachtpromptcommando’s uit voor file management, directory navigation, network troubleshooting, disk operations en automatisering met echte voorbeelden om de productiviteit te verbeteren. Of u nu fundamentele cmd-commands leert of geavanceerde Windows CLI-tools onder de knie krijgt, deze gids helpt u de Command Prompt effectiever te gebruiken.

Belangrijkste punten

  • Verzamel geïnstalleerde software met PowerShell: voer een PowerShell-commando uit op zowel de 64-bits als de 32-bits uninstall-paden in het register om de lijst met geïnstalleerde applicaties op te halen en exporteer de resultaten vervolgens naar een CSV-bestand voor rapportage.
  • Stel een baseline op en vergelijk daarmee: definieer in PowerShell een baseline-array met de namen van verplichte applicaties, vergelijk die met uw lijst van geïnstalleerde software om ontbrekende apps te markeren en exporteer dat rapport met ontbrekende software naar CSV.
  • Gebruik CMD/WMIC wanneer PowerShell geen optie is: voer een WMIC-commando uit vanuit een verhoogde opdrachtprompt om een tekstlijst van geïnstalleerde software te exporteren en parse dat bestand eventueel met PowerShell om naar specifieke applicatienamen te zoeken.
  • Schrijf compliance-resultaten weg in het register: maak een registersleutel aan onder HKLM om auditresultaten op te slaan, stel eigenschappen in voor het tijdstip van de laatste audit en de ontbrekende items en bevraag die sleutel vervolgens om te bevestigen dat de waarden correct zijn opgeslagen.
  • Bundel de resultaten in een compliancerapport: laat elk device zijn CSV opslaan in een gedeelde map of in uw RMM en voer daarna een PowerShell-commando uit dat alle CSV’s importeert en samenvoegt tot één hoofdrapport. Controleer of daarin de devicenaam, ontbrekende software, compliancestatus en tijdstempel staan en groepeer de resultaten eventueel per klant of locatie.

Controleren of de verplichte software aanwezig is en ongeautoriseerde applicaties geblokkeerd worden is essentieel voor compliance, beveiliging en standaardisatie op al uw endpoints. Dit handmatig doen is traag en onbetrouwbaar en kost over veel endpoints simpelweg te veel tijd. Met scripts kunnen MSP’s en IT-beheerders het proces automatiseren en problemen opsporen voordat gebruikers er last van krijgen.

Met de methoden in deze gids controleert u geïnstalleerde applicaties, genereert u compliancerapporten en spoort u ongeautoriseerde en ontbrekende software op. We behandelen PowerShell, de opdrachtprompt en tagging via het register. Daarnaast kijken we naar optionele integratie via GPO, RMM en NinjaOne voor automatisering en rapportage op schaal.

Meer informatie nodig? Bekijk “Ontbrekende software in de inventaris detecteren via script en compliancerapporten genereren” voor een visuele uitleg.

Manieren om ontbrekende software via script te detecteren en compliancerapporten te genereren

Vereisten:

  • U hebt Windows 10, 11 of Server 2016+ nodig om de scripts te ondersteunen.
  • PowerShell 5.1 of hoger voor het uitvoeren van inventaris- en rapportagecommando’s
  • Beheerdersrechten op de endpoints zijn vereist om geïnstalleerde software op te vragen.
  • U hebt per locatie, rol of klant een lijst met verplichte software nodig, zodat het script weet waarop het moet controleren.

Optioneel:

  • Toegang tot Group Policy om registersleutels of bestandspaden af te dwingen.
  • Een RMM- of endpoint management-platform zoals NinjaOne voor eenvoudiger scripts op afstand uitrollen en rapporteren.

Methode 1: geïnstalleerde software inventariseren via PowerShell

Met PowerShell haalt u een lijst met geïnstalleerde applicaties op uit de 64-bits en 32-bits registerlocaties. Daarna exporteert u die naar CSV voor rapportage.

Use cases:

  • Hiermee stelt u een duidelijke lijst van geïnstalleerde software samen, controleert u de compliance en bepaalt u of devices aan de standaarden voldoen.
  • Dit levert de gegevens om te vergelijken wat geïnstalleerd zou moeten zijn met wat daadwerkelijk geïnstalleerd is.

Vereisten:

  • Op de betreffende devices moet PowerShell 5.1 of hoger draaien.
  • Beheerdersrechten zijn vereist voor toegang tot de registerlocaties waar Windows informatie over geïnstalleerde programma’s bewaart.

Gebruik dit commando in PowerShell om zowel 64-bits als 32-bits installaties op te vragen:

$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

Exporteren naar CSV:

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

Methode 2: een software-baseline definiëren en daarmee vergelijken

Zodra u de lijst met geïnstalleerde applicaties hebt verzameld, is de volgende stap die te vergelijken met een vooraf vastgestelde baseline. Een baseline is een lijst van apps die op elk device aanwezig moeten zijn om aan de compliance- en operationele eisen te voldoen. Met PowerShell markeert u ontbrekende apps en exporteert u de resultaten.

Use cases:

  • Hiermee zorgt u ervoor dat alle endpoints over de verplichte applicaties beschikken.
  • Zo herkent u ontbrekende of ongeautoriseerde applicaties voordat ze gebruikers raken.

Vereisten:

  • U moet beschikken over een vooraf vastgestelde, definitieve lijst met verplichte applicaties per locatie, rol of klant.
  • Om scripts op het betreffende device uit te voeren, hebt u PowerShell 5.1 of hoger nodig.

Hieronder ziet u een voorbeeld van een baselinelijst en een commando dat u in PowerShell kunt uitvoeren. Hiermee legt u vast welke software aanwezig moet zijn. U voegt apps toe met een komma + rechte aanhalingstekens:

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

Om ontbrekende apps op te sporen, ten opzichte van de baselinelijst gebruikt u deze code:

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

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

}

Voer dit commando uit om naar CSV te exporteren:

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

Methode 3: CMD en WMIC gebruiken voor een lichte inventarisatie

Als PowerShell beperkt of niet beschikbaar is, kunt u de opdrachtprompt en Windows Management Instrumentation Command-line (WMIC) gebruiken. Daarmee verzamelt u snel informatie over geïnstalleerde software. Het is minder gedetailleerd dan PowerShell maar werkt wel in oudere omgevingen.

Use cases:

  • Gebruik dit om software te inventariseren in oudere of afgeschermde omgevingen.
  • U kunt er snel tekstlijsten van geïnstalleerde software mee genereren.

Vereisten:

  • U hebt een Windows-endpoint nodig waarop WMIC beschikbaar is (Windows 10 en eerder of een serverversie van vóór 2022).
  • U hebt rechten nodig om commando’s uit te voeren vanuit een verhoogde opdrachtprompt.

Met dit commando in de opdrachtprompt exporteert u de lijst met geïnstalleerde software naar een tekstbestand:

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

Optioneel: u kunt de resultaten parsen met PowerShell:

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

Methode 4: compliancestatus opslaan in het register

Bij deze methode worden auditresultaten weggeschreven naar het Windows-register, zodat elk endpoint lokaal bijhoudt wat zijn compliancestatus is, inclusief het tijdstip van de laatste audit en eventueel ontbrekende software.

Use cases:

  • Zo zijn compliance-resultaten direct op het device zichtbaar en kunnen technici en scripts ze snel controleren.
  • Hierdoor kunnen RMM-tools registerwaarden uitlezen en in compliancerapporten verwerken.

Vereisten:

  • U hebt beheerdersrechten nodig om registersleutels onder HKLM aan te maken en te bewerken.
  • Hiervoor is de array $missing nodig die bij de baselinevergelijking in methode 2 is aangemaakt.

Zo maakt u een lokale registervermelding die de compliance-resultaten weergeeft:

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 ", ")

Vervolgens kunt u in CMD valideren of de sleutel en de waarden daadwerkelijk zijn aangemaakt. Gebruik daarvoor deze code:

reg query HKLM\SOFTWARE\Org\SoftwareAudit

Methode 5: compliancerapporten over meerdere devices genereren

Nadat elk device zijn audit-CSV heeft gegenereerd, kunt u de resultaten samenvoegen tot één hoofdrapport. Dat geeft een volledig beeld van de compliance op al uw endpoints, waardoor u hiaten eenvoudiger per klant, locatie of rol volgt.

Use case:

  • Hiermee maakt u één rapport dat compliancegegevens van alle devices verzamelt.

Vereisten:

  • U hebt toegang nodig tot een gedeelde schijf of een RMM die de CSV-rapporten per device verzamelt.
  • PowerShell 5.1 of hoger is nodig om de exportresultaten samen te voegen.

Zo genereert u compliancerapporten over meerdere devices:

  1. Verzamel de devicerapporten door ervoor te zorgen dat elk endpoint zijn CSV in een gedeelde map opslaat of via uw RMM uploadt.
  2. Voer dit PowerShell-commando uit om de resultaten te consolideren door alle CSV’s op te halen en samen te voegen:

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

  1. Bekijk daarna de belangrijkste kolommen. Zorg dat het hoofdrapport de essentiële velden bevat, zoals:
    1. Devicenaam
    2. Ontbrekende software
    3. Compliancestatus
    4. Tijdstempel
  2. Met Group-Object of filtering in PowerShell ordent u de resultaten per klant, locatie of endpointrol. Zo groepeert u bijvoorbeeld alle devices per klant met dit commando:
Import-Csv "C:\Reports\MasterComplianceReport.csv" | Group-Object Client | ForEach-Object {
Write-Output "Client: $($_.Name)"
$_.Group | Select-Object DeviceName, MissingSoftware, ComplianceStatus
""
}

⚠️ Waar u op moet letten

Risico’sMogelijke gevolgenOplossing
Ontbrekende CSV-bestanden van devicesHet hoofdrapport is onvolledig en geeft mogelijk een te rooskleurig beeld van de compliance.Controleer of elk endpoint zijn CSV succesvol heeft geëxporteerd. Voer het auditscript zo nodig opnieuw uit.
Auditscripts werken nietDevices worden overgeslagen en het compliancerapport toont te weinig ontbrekende software.Voer de scripts uit met een account met verhoogde rechten.
Inconsistente kolomnamen in de CSV’sHet importproces kan mislukken of onnauwkeurige resultaten opleveren.Standaardiseer de scriptuitvoer. Zo exporteert elk device dezelfde kolomnamen.

Aanvullende aandachtspunten bij het detecteren en rapporteren van ontbrekende software

Vals-negatieven

Softwarenamen in het veld DisplayName kunnen variëren. Er is bijvoorbeeld verschil tussen “Google Chrome” en “Chrome”. Gebruik regex of wildcards om onnauwkeurige resultaten te voorkomen.

Licenties volgen

Compliancecontroles moeten meer omvatten dan alleen ontbrekende installaties. Ze moeten ook versieverschillen en verlopen trial-licenties bijhouden. Zo blijven uw endpoints compliant en up-to-date.

Uitzonderingen

Overweeg aparte lijsten bij te houden voor verplichte en verboden software. Zo markeert u zowel ontbrekende installaties als ongeautoriseerde applicaties.

Flexibiliteit en aanpassingen in de baseline

Stem de baselinevereisten af op de rol van elk endpoint. Een kiosk die alleen informatie toont heeft bijvoorbeeld maar een paar apps nodig, terwijl engineers een breed scala aan programma’s nodig hebben om hun werk efficiënt te doen.

Quick-start guide

NinjaOne beschikt over krachtige mogelijkheden om software-inventaris te detecteren en te beheren en compliancerapporten te genereren. Concreet:

1. Detectie van software-inventaris:

NinjaOne biedt meerdere scripts en tools om de software-inventaris bij te houden

  • Er is een speciale functie Dashboard: Software-inventaris
  • Het platform maakt het mogelijk de software te volgen die op devices is geïnstalleerd

2. Compliancerapportage:

NinjaOne biedt uitgebreide rapportagefuncties, waaronder:

  • Tools voor vulnerability management
  • De mogelijkheid om gegevens over kwetsbaarheden uit CSV-bestanden te importeren
  • Runbook-rapporten die u kunt aanpassen en exporteren
  • Beleidsvoorwaarden om de aanwezigheid van software te volgen

3. Scriptmogelijkheden:

Het platform heeft een uitgebreide Automation Library met scripts zoals:

4. Aanvullende rapportagefuncties:

Geplande rapporten

  • De mogelijkheid om rapporten naar pdf te exporteren
  • Aangepaste velden om software- en device-informatie bij te houden

Problemen oplossen bij software-audits en rapportgeneratie

32-bits software ontbreekt in 64-bits PowerShell

Verschijnen 32-bits applicaties niet? Controleer dan of uw script zowel het registerpad Wow6432Node als de standaard uninstall-sleutel bevraagt.

Lege export

Is de geëxporteerde CSV leeg? Controleer dan of de software is geïnstalleerd en of het veld DisplayName gevuld is.

Schrijffouten in het register

Worden de compliance-resultaten niet opgeslagen in het register? Voer het script dan uit met beheerdersrechten of in de SYSTEM-context.

Unicode-problemen in CSV’s

Als geëxporteerde CSV’s onleesbare tekst of ontbrekende tekens tonen, gebruikt u -Encoding UTF8 bij Export-Csv om speciale tekens correct te verwerken.

NinjaOne-diensten die helpen bij het detecteren van ontbrekende software en het genereren van rapporten

Wat NinjaOne kan Wat het isHoe het helpt
Inventaris- en vergelijkingsscripts op schaal uitrollenVoert PowerShell- of CMD-scripts uit op alle beheerde devicesZorgt ervoor dat elk endpoint automatisch tegen de software-baseline wordt gecontroleerd
Lokale registertags verzamelen voor inzicht in auditsLeest compliancesleutels zoals LastAudit en MissingItems uit het registerGeeft technici en auditors zowel lokaal als centraal inzicht
Devices taggen als “Non-Compliant”Markeert endpoints die niet aan de baselinevereisten voldoenVersnelt de triage doordat technici zich op niet-compliant devices kunnen richten
Notificaties bij ontbrekende softwareStuurt meldingen wanneer verplichte applicaties ontbrekenMaakt directe actie door technici mogelijk voordat gebruikers er last van hebben
Compliancerapporten voor klanten genererenLevert rapporten met versiebeheer en uitrolstatusZorgt voor transparante rapportage aan stakeholders en ondersteunt audits

Met NinjaOne kunnen MSP’s IT-audits van software standaardiseren en opschalen en tegelijk transparant over compliance rapporteren aan hun klanten.

Compliance versterken en risico’s verkleinen met geautomatiseerde software-audits

Ontbrekende software opsporen en endpoints compliant houden is essentieel voor de beveiliging en de dagelijkse werkzaamheden. MSP’s en IT-beheerders stellen snel vast welke devices aan de eisen voldoen door software-inventarissen te verzamelen, die met een baseline te vergelijken en de resultaten zowel lokaal als centraal vast te leggen.

Compliancerapporten voor de hele organisatie geven volledig inzicht in al uw klanten en met NinjaOne automatiseert u audits, versnelt u het oplossen van problemen en houdt u de compliance continu op orde, ook op grote schaal.

Gerelateerde onderwerpen:

FAQs

Vraag met PowerShell de lijst met geïnstalleerde software op uit de uninstall-sleutels in het Windows-register en vergelijk die met een baselinelijst van verplichte applicaties. Elke verplichte applicatie die niet in de lijst met geïnstalleerde software voorkomt wordt gemarkeerd als ontbrekend en kan naar een CSV-rapport worden geëxporteerd.

Een software-baseline is de definitieve lijst van applicaties die op een device aanwezig moeten zijn om als compliant te gelden. Baselines worden meestal per locatie, rol of klant vastgelegd, zodat voor een kiosk, de werkplek van een engineer en een klantserver verschillende eisen kunnen gelden.

Ja. U kunt CMD met WMIC gebruiken om een basislijst van geïnstalleerde software naar een tekstbestand te exporteren. WMIC is verouderd in de huidige Windows-versies, dus gebruik het als noodoplossing voor oudere omgevingen en niet als structurele aanpak.

NinjaOne voert inventaris- en vergelijkingsscripts uit op alle beheerde devices, leest compliancewaarden uit het register in aangepaste velden en waarschuwt technici wanneer verplichte software ontbreekt. Ingebouwde rapporten over de software-inventaris geven inzicht in de hele organisatie zonder dat u handmatig CSV’s hoeft te verzamelen.

Dit vindt u misschien ook leuk

Klaar om de moeilijkste delen van IT te vereenvoudigen?