/
/

Come rilevare i software mancanti nell’inventario tramite script e generare report di conformità

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

Riepilogo

Questo post del blog NinjaOne offre un elenco completo di comandi CMD di base e un’analisi approfondita dei comandi di Windows con oltre 70 comandi cmd essenziali sia per i principianti che per gli utenti avanzati. La guida si propone si piegare in modo pratico i comandi del prompt dei comandi per la gestione dei file, la navigazione nelle directory, la risoluzione dei problemi di rete, le operazioni su disco e l’automazione, con esempi reali per migliorare la produttività. Che tu voglia imparare i comandi cmd fondamentali o padroneggiare gli strumenti avanzati della CLI di Windows, questa guida ti aiuterà a utilizzare il Prompt dei comandi in modo più efficace.

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

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:

  1. Raccogli i report dei dispositivi assicurandoti che ogni endpoint salvi il proprio CSV in una cartella condivisa o lo carichi tramite l’RMM.
  2. 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

  1. Esamina poi le colonne principali. Assicurati che il report principale contenga i campi essenziali, come:
    1. Nome del dispositivo
    2. Software mancante
    3. Stato di conformità
    4. Timestamp
  2. 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:

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:

FAQs

Interroga con PowerShell l’elenco dei software installati nelle chiavi di disinstallazione del registro di sistema di Windows, quindi confrontalo con un elenco baseline delle applicazioni richieste. Ogni applicazione richiesta che non compare nell’elenco degli installati viene segnalata come mancante e può essere esportata in un report CSV.

Una baseline software è l’elenco definitivo delle applicazioni che devono essere presenti su un dispositivo perché sia considerato conforme. Di solito le baseline vengono definite per sede, ruolo o cliente, così un chiosco, la workstation di un tecnico progettista e il server di un cliente possono rispondere a requisiti diversi.

Sì. Puoi usare CMD con WMIC per esportare in un file di testo un elenco di base dei software installati. WMIC è deprecato nelle versioni attuali di Windows, quindi consideralo una soluzione di ripiego per gli ambienti legacy e non un approccio a lungo termine.

NinjaOne esegue script di inventario e confronto su tutti i dispositivi gestiti, legge i valori di conformità dal Registro di sistema nei campi personalizzati e avvisa i tecnici quando mancano i software richiesti. I report di inventario software integrati offrono visibilità su tutta l’organizzazione senza dover raccogliere manualmente i CSV.

Ti potrebbe interessare anche

Pronto a semplificare le parti più complesse dell'IT?

Termini e condizioni NinjaOne

Cliccando sul pulsante “Accetto” qui sotto, dichiari di accettare i seguenti termini legali e le nostre condizioni d’uso:

  • Diritti di proprietà: NinjaOne possiede e continuerà a possedere tutti i diritti, i titoli e gli interessi relativi allo script (compreso il copyright). NinjaOne ti concede una licenza limitata per l’utilizzo dello script in conformità con i presenti termini legali.
  • Limitazione d’uso: Puoi utilizzare lo script solo per legittimi scopi personali o aziendali interni e non puoi condividere lo script con altri soggetti.
  • Divieto di ripubblicazione: In nessun caso ti è consentito ripubblicare lo script in una libreria di script appartenente o sotto il controllo di un altro fornitore di software.
  • Esclusione di garanzia: Lo script viene fornito “così com’è” e “come disponibile”, senza garanzie di alcun tipo. NinjaOne non promette né garantisce che lo script sia privo di difetti o che soddisfi le tue esigenze o aspettative specifiche.
  • Assunzione del rischio: L’uso che farai dello script è da intendersi a tuo rischio. Riconosci che l’utilizzo dello script comporta alcuni rischi intrinseci, che comprendi e sei pronto ad assumerti.
  • Rinuncia e liberatoria: Non riterrai NinjaOne responsabile di eventuali conseguenze negative o indesiderate derivanti dall’uso dello script e rinuncerai a qualsiasi diritto legale o di equità e a qualsiasi rivalsa nei confronti di NinjaOne in relazione all’uso dello script.
  • EULA: Se sei un cliente NinjaOne, l’uso dello script è soggetto al Contratto di licenza con l’utente finale (EULA) applicabile.