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" -ForceSet-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:
- Verzamel de devicerapporten door ervoor te zorgen dat elk endpoint zijn CSV in een gedeelde map opslaat of via uw RMM uploadt.
- 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
- Bekijk daarna de belangrijkste kolommen. Zorg dat het hoofdrapport de essentiële velden bevat, zoals:
- Devicenaam
- Ontbrekende software
- Compliancestatus
- Tijdstempel
- 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’s | Mogelijke gevolgen | Oplossing |
| Ontbrekende CSV-bestanden van devices | Het 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 niet | Devices 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’s | Het 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:
- Browserextensies weergeven
- Geïnstalleerde antivirus detecteren
- Opties voor eigen scripts om software te volgen
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 is | Hoe het helpt |
| Inventaris- en vergelijkingsscripts op schaal uitrollen | Voert PowerShell- of CMD-scripts uit op alle beheerde devices | Zorgt ervoor dat elk endpoint automatisch tegen de software-baseline wordt gecontroleerd |
| Lokale registertags verzamelen voor inzicht in audits | Leest compliancesleutels zoals LastAudit en MissingItems uit het register | Geeft technici en auditors zowel lokaal als centraal inzicht |
| Devices taggen als “Non-Compliant” | Markeert endpoints die niet aan de baselinevereisten voldoen | Versnelt de triage doordat technici zich op niet-compliant devices kunnen richten |
| Notificaties bij ontbrekende software | Stuurt meldingen wanneer verplichte applicaties ontbreken | Maakt directe actie door technici mogelijk voordat gebruikers er last van hebben |
| Compliancerapporten voor klanten genereren | Levert rapporten met versiebeheer en uitrolstatus | Zorgt 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:
