Punti chiave
- Raccogli i software installati con PowerShell: esegui un comando PowerShell sui percorsi di disinstallazione del registro di sistema a 64 bit e a 32 bit per ottenere l’elenco delle applicazioni installate, quindi esporta i risultati in un file CSV per il reporting.
- Crea una baseline e confrontala con i dati raccolti: definisci in PowerShell un array di baseline con i nomi delle applicazioni richieste, confrontalo con l’elenco dei software installati per segnalare le app mancanti ed esporta in CSV il report dei software mancanti.
- Usa CMD/WMIC quando PowerShell non è disponibile: esegui un comando WMIC da un Prompt dei comandi con privilegi elevati per esportare un elenco testuale dei software installati, quindi, se necessario, analizza quel file con PowerShell per cercare nomi di applicazioni specifici.
- Scrivi i risultati di conformità nel Registro di sistema: crea una chiave di registro sotto HKLM per memorizzare i risultati dell’audit, imposta le proprietà relative all’ultimo audit e agli elementi mancanti, quindi interroga quella chiave per verificare che i valori siano stati salvati correttamente.
- Aggrega i risultati in un report di conformità: fai in modo che ogni dispositivo salvi il proprio CSV in una cartella condivisa o nell’RMM, quindi esegui un comando PowerShell per importare e unire tutti i CSV in un unico report principale, verificando che includa nome del dispositivo, software mancante, stato di conformità e timestamp, ed eventualmente raggruppando i risultati per cliente o sede.
Verificare che i software richiesti siano presenti e che le applicazioni non autorizzate siano bloccate è fondamentale per la conformità, la sicurezza e la standardizzazione degli endpoint. Farlo manualmente è lento e poco affidabile, e richiede troppo tempo quando gli endpoint sono numerosi. Gli script, invece, permettono agli MSP e agli amministratori IT di automatizzare il processo e di individuare i problemi prima che si ripercuotano sugli utenti.
I metodi descritti in questa guida ti permettono di verificare le applicazioni installate, generare report di conformità e individuare i software non autorizzati e mancanti. Vedremo PowerShell, il Prompt dei comandi e l’assegnazione di tag tramite il Registro di sistema. Affronteremo inoltre l’integrazione opzionale con GPO, RMM e NinjaOne per l’automazione e il reporting su larga scala.
Vuoi saperne di più? Guarda “Come rilevare i software mancanti nell’inventario tramite script e generare report di conformità” per una guida visiva.
Come rilevare i software mancanti tramite script e generare report di conformità
Prerequisiti:
- Per supportare gli script serve Windows 10, 11 o Server 2016+.
- PowerShell 5.1 o versione successiva per eseguire i comandi di inventario e reporting
- Sono necessari i diritti di amministratore sugli endpoint per interrogare i software installati.
- Serve un elenco dei software richiesti per ogni sede, ruolo o cliente, in modo che lo script sappia cosa controllare.
Facoltativo:
- Accesso ai Criteri di gruppo per applicare chiavi di registro o percorsi di file.
- Una piattaforma RMM o di gestione degli endpoint, come NinjaOne, per semplificare la distribuzione remota degli script e il reporting.
Metodo 1: come raccogliere l’inventario dei software installati con PowerShell
Puoi usare PowerShell per ottenere l’elenco delle applicazioni installate dalle posizioni del registro di sistema a 64 bit e a 32 bit. Puoi poi esportarlo in CSV per il reporting.
Situazioni d’uso:
- Serve a creare un elenco chiaro dei software installati, verificare la conformità e stabilire se i dispositivi rispettano gli standard.
- Fornisce i dati per confrontare ciò che dovrebbe essere installato con ciò che è effettivamente installato.
Prerequisiti:
- Sui dispositivi di destinazione deve essere presente PowerShell 5.1 o versione successiva.
- Servono i diritti di amministratore per accedere alle posizioni del registro di sistema in cui Windows memorizza le informazioni sui programmi installati.
Per interrogare sia le installazioni a 64 bit sia quelle a 32 bit, usa questo comando in 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 |
Per esportare in CSV:
$installedSoftware | Export-Csv "C:\Reports\InstalledSoftware.csv" -NoTypeInformation |
Metodo 2: come definire una baseline software e confrontarla con i dati raccolti
Dopo aver raccolto l’elenco delle applicazioni installate, il passo successivo è confrontarlo con una baseline predefinita. Una baseline è l’elenco delle app che devono essere presenti su ogni dispositivo per soddisfare i requisiti di conformità e operativi. Puoi usare PowerShell per segnalare le app mancanti ed esportare i risultati.
Situazioni d’uso:
- Ti serve per verificare che tutti gli endpoint dispongano delle applicazioni richieste.
- Ti aiuta a individuare le applicazioni mancanti o non autorizzate prima che abbiano un impatto sugli utenti.
Prerequisiti:
- Devi avere un elenco predefinito e definitivo delle applicazioni richieste per ogni sede, ruolo o cliente.
- Per eseguire gli script sul dispositivo di destinazione serve PowerShell 5.1 o versione successiva.
Ecco un esempio di elenco baseline e il comando che puoi eseguire in PowerShell. Definisce l’elenco dei software che devono essere presenti. Puoi aggiungere app separandole con una virgola e usando le virgolette dritte:
$requiredApps = @("Microsoft Defender Antivirus", "7-Zip", "Microsoft Edge", "FortiClient VPN") |
Per rilevare invece le app mancanti rispetto all’elenco baseline, usa questo codice:
| $installed = $installedSoftware.DisplayName $missing = $requiredApps | Where-Object { $installed -notcontains $_ } $missingReport = [PSCustomObject]@{ ComputerName = $env:COMPUTERNAM MissingSoftware = $missing -join “; ” Timestamp = (Get-Date).ToString(“u”) } |
Per esportare in CSV, esegui questo comando:
$missingReport | Export-Csv "C:\Reports\MissingSoftware.csv" -NoTypeInformation |
Metodo 3: come usare CMD e WMIC per un inventario leggero
Se PowerShell è limitato o non disponibile, puoi usare il Prompt dei comandi e Windows Management Instrumentation Command-line (WMIC). Sono un modo rapido per raccogliere informazioni sui software installati. Pur essendo meno dettagliati di PowerShell, funzionano negli ambienti legacy.
Situazioni d’uso:
- Usalo per raccogliere l’inventario dei software in ambienti legacy o con restrizioni.
- Puoi usarlo per generare rapidamente elenchi testuali dei software installati.
Prerequisiti:
- Ti serve un endpoint Windows in cui WMIC sia disponibile (Windows 10 e versioni precedenti, o versioni server precedenti al 2022).
- Ti servono i permessi per eseguire comandi da un Prompt dei comandi con privilegi elevati.
Puoi usare questo comando nel Prompt dei comandi per esportare l’elenco dei software installati in un file di testo:
wmic product get name, version > C:\Reports\SoftwareInventory.txt
Facoltativo: puoi analizzare i risultati con PowerShell:
Get-Content "C:\Reports\SoftwareInventory.txt" | Select-String "AppName"
Metodo 4: come memorizzare lo stato di conformità nel Registro di sistema
Questo metodo scrive i risultati dell’audit nel Registro di sistema di Windows, così ogni endpoint conserva localmente un record del proprio stato di conformità, compresi l’orario dell’ultimo audit e gli eventuali software mancanti.
Situazioni d’uso:
- Rende i risultati di conformità facilmente consultabili sul dispositivo, così tecnici e script possono verificarli rapidamente.
- Consente agli strumenti RMM di leggere i valori del registro di sistema e di usarli nei report di conformità.
Prerequisiti:
- Ti servono i diritti di amministratore per creare e modificare le chiavi di registro sotto HKLM.
- È necessario l’array $missing creato durante il confronto con la baseline nel Metodo 2.
Ecco come creare un record locale nel registro di sistema che rifletta i risultati di conformità:
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 “, “) |
Puoi poi verificare in CMD che la chiave e i valori siano stati effettivamente creati. Per farlo, usa questo codice:
reg query HKLM\SOFTWARE\Org\SoftwareAudit
Metodo 5: generare report di conformità su più dispositivi
Dopo che ogni dispositivo ha generato il proprio report CSV di audit, puoi unire i risultati in un unico report principale. In questo modo ottieni una visione completa della conformità su tutti gli endpoint e tieni traccia più facilmente delle lacune per cliente, sede o ruolo.
Situazione d’uso:
- Ti aiuta a creare un unico report che raccoglie i dati di conformità di tutti i dispositivi.
Prerequisiti:
- Ti serve l’accesso a un’unità condivisa o a un RMM che raccolga i report CSV dei singoli dispositivi.
- Per aggregare i risultati esportati serve PowerShell 5.1 o versione successiva.
Ecco i passaggi per generare report di conformità su più dispositivi:
- Raccogli i report dei dispositivi assicurandoti che ogni endpoint salvi il proprio CSV in una cartella condivisa o lo carichi tramite l’RMM.
- Esegui questo comando PowerShell per consolidare i risultati raccogliendo e unendo tutti i CSV:
Get-ChildItem "\\server\auditshare\*.csv" | Import-Csv | Export-Csv "C:\Reports\MasterComplianceReport.csv" -NoTypeInformation
- Esamina poi le colonne principali. Assicurati che il report principale contenga i campi essenziali, come:
- Nome del dispositivo
- Software mancante
- Stato di conformità
- Timestamp
- Group-Object di PowerShell o i filtri permettono di organizzare i risultati per cliente, sede o ruolo dell’endpoint. Ad esempio, puoi raggruppare tutti i dispositivi di ciascun cliente con questo comando:
Import-Csv "C:\Reports\MasterComplianceReport.csv" | Group-Object Client | ForEach-Object {Write-Output “Client: $($_.Name)” $_.Group | Select-Object DeviceName, MissingSoftware, ComplianceStatus “” } |
⚠️ Aspetti a cui prestare attenzione
| Rischi | Possibili conseguenze | Soluzione |
| File CSV mancanti da alcuni dispositivi | Il report principale sarà incompleto e potrebbe sottostimare le non conformità. | Verifica che ogni endpoint abbia esportato correttamente il proprio CSV. Se necessario, esegui di nuovo lo script di audit. |
| Gli script di audit non funzionano | I dispositivi vengono saltati e il report di conformità sottostima il numero di software mancanti. | Esegui gli script con un account dotato di permessi elevati. |
| Nomi di colonna non uniformi tra i CSV | Il processo di importazione può fallire o produrre risultati inesatti. | Standardizza gli output degli script. In questo modo ogni dispositivo esporterà gli stessi nomi di colonna. |
Altri aspetti da considerare per rilevare e segnalare i software mancanti
Falsi negativi
I nomi dei software nel campo DisplayName possono variare. Ad esempio, c’è differenza tra “Google Chrome” e “Chrome”. Per evitarlo, puoi usare espressioni regolari o corrispondenze con caratteri jolly ed evitare così risultati inesatti.
Monitoraggio delle licenze
I controlli di conformità non devono limitarsi alle installazioni mancanti. Devono anche tenere traccia delle versioni non corrispondenti e delle licenze di prova scadute. In questo modo gli endpoint restano conformi e aggiornati.
Esclusioni
Valuta di mantenere elenchi separati per i software richiesti e per quelli vietati. Così potrai segnalare sia le installazioni mancanti sia le applicazioni non autorizzate.
Flessibilità e adattamento della baseline
Adatta i requisiti della baseline al ruolo di ciascun endpoint. Ad esempio, i chioschi usati per la visualizzazione possono richiedere solo poche app, mentre un tecnico progettista può aver bisogno di un’ampia gamma di programmi per lavorare in modo efficiente.
Guida rapida
NinjaOne offre funzionalità avanzate per rilevare e gestire l’inventario software e generare report di conformità. Nello specifico:
1. Rilevamento dell’inventario software:
NinjaOne mette a disposizione diversi script e strumenti per monitorare l’inventario software
- C’è una caratteristica dedicata, Dashboard: Software Inventory
- La piattaforma consente di monitorare i software installati sui dispositivi
2. Report di conformità:
NinjaOne offre funzionalità di reporting complete, tra cui:
- Strumenti di gestione delle vulnerabilità
- Possibilità di importare dati sulle vulnerabilità da file CSV
- Report Runbook personalizzabili ed esportabili
- Condizioni delle policy per monitorare la presenza dei software
3. Funzionalità di scripting:
La piattaforma dispone di un’ampia libreria di automazione con script come:
- List Browser Extensions
- Detect Installed Antivirus
- Opzioni di script personalizzati per il monitoraggio dei software
4. Altre caratteristiche di reporting:
Report pianificati
- Possibilità di esportare i report in PDF
- Monitoraggio tramite campi personalizzati per le informazioni su software e dispositivi
Risoluzione dei problemi di audit dei software e generazione dei report
Software a 32 bit mancanti in PowerShell a 64 bit
Se le applicazioni a 32 bit non compaiono, assicurati che lo script interroghi il percorso di registro Wow6432Node oltre alla chiave di disinstallazione standard.
Esportazione vuota
Se il CSV esportato è vuoto, verifica che il software sia installato e che il campo DisplayName sia valorizzato.
Errori di scrittura nel Registro di sistema
Se i risultati di conformità non vengono salvati nel Registro di sistema, esegui lo script con i diritti di amministratore o nel contesto SYSTEM.
Problemi di codifica Unicode nei CSV
Se i CSV esportati mostrano testo illeggibile o caratteri mancanti, usa -Encoding UTF8 con Export-Csv per gestire correttamente i caratteri speciali.
I servizi NinjaOne che aiutano a rilevare i software mancanti e a generare report
| Cosa può fare NinjaOne | Di cosa si tratta | Come aiuta |
| Distribuire su larga scala gli script di inventario e confronto | Esegue script PowerShell o CMD su tutti i dispositivi gestiti | Garantisce che ogni endpoint venga verificato automaticamente rispetto alla baseline software |
| Raccogliere i tag locali del registro di sistema per la visibilità sull’audit | Legge dal Registro di sistema le chiavi di conformità come LastAudit e MissingItems | Offre ai tecnici e agli auditor visibilità sia locale sia centralizzata |
| Contrassegnare i dispositivi come “Non conformi” | Segnala gli endpoint che non soddisfano i requisiti della baseline | Accelera il triage permettendo ai tecnici di concentrarsi sui dispositivi non conformi |
| Generare avvisi in base ai software mancanti | Attiva notifiche quando le applicazioni richieste non sono presenti | Consente ai tecnici di intervenire subito, prima che gli utenti ne risentano |
| Generare report di conformità da condividere con i clienti | Produce report con monitoraggio delle versioni e stato della distribuzione | Offre un reporting trasparente agli stakeholder e supporta gli audit |
Con NinjaOne, gli MSP possono standardizzare e scalare gli audit IT dei software offrendo al contempo ai clienti un reporting di conformità trasparente.
Rafforzare la conformità e ridurre i rischi con audit software automatizzati
Rilevare i software mancanti e mantenere gli endpoint conformi è fondamentale per la sicurezza e per le operazioni quotidiane. Gli MSP e gli amministratori IT possono stabilire rapidamente quali dispositivi soddisfano i requisiti raccogliendo gli inventari dei software, confrontandoli con una baseline e registrando i risultati sia localmente sia a livello centrale.
I report di conformità a livello di organizzazione offrono piena visibilità su tutti i clienti, e NinjaOne consente di automatizzare gli audit, accelerare la correzione e mantenere una conformità continua su larga scala.
Argomenti correlati: