black binocular on round device

Trovare i computer con certo software installato

>>> Download: Scarica lo script da GitHub

Spesso mi capita di dover fare l’elenco di tutte le macchine che hanno installato un certo software in un ambiente, non avendo però a disposizione un sistema di software inventory o di gestione degli endpoint che permetta di farlo in pochi clic.

Per ovviare al problema, ho creato un piccolo script che cerca per noi il software e crea un piccolo report CSV.

Prerequisito imprescindibile per questo script è che i computer da controllare siano Windows 7/2008 R2 almeno e che abbiano WinRM abilitato, dato che lo script si basa sulla cmdlet di PowerShell Invoke-Command. Da Windows 2012 R2 in poi, dovrebbe essere abilitato di default comunque.

Per usarlo, creare un file di testo che contenga l’elenco dei nomi dei computer da esaminare e passarlo nella variabile $targets.

La variabile $logFile va valorizzata con il percorso ed il nome completo del file CSV su cui salvare i risultati.

Il nome del software da cercare va inserito nella variabile $software. Per valorizzarla correttamente, prendere una macchina con installato il software che vogliamo cercare e cercare nel registro la chiave

HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall

Dentro troveremo una sottochiave per ogni software installato, prendiamo quella del software che ci interessa e usiamo per la variabile il contenuto del valore di “DisplayName”. Io aggiungo anche un * in testa e/o uno in coda alla stringa, per rendere più certa la ricerca. Ad esempio, se voglio cercare il Framework .Net 4.7.2, imposto così la variabile:

$software = "Microsoft .NET Framework 4.7.2*"

Al momento dell’esecuzione vi saranno richieste delle credenziali di un utente amministratore delle macchine su cui eseguirete il check.

Non ci sono altre particolari avvertenze. Solo una nota sul metodo con cui lo script cerca il software: c’è anche un altro sistema infatti che non sfrutta il registro, ma la WMI, usando la cmdlet:

Get-WMIObject -Class Win32_Product

Pur essendo molto efficace, ha problemi di perfomance, richiedendo diversi secondi per essere eseguita su ogni client: il suo utilizzo non risulta quindi adatto ad un parco macchine con diverse decine o centinaia di client. Per questo ho preferito una query a livello di registry, molto più performante.

>>> Download: Scarica lo script da GitHub

Link utili: come configurare WinRM sui sistemi Windows [Microsoft]