Come controllare rapidamente le versioni del software installato

Ci sono situazioni in cui è necessario verificare se voi oi vostri utenti hanno determinato software installato, e qual è la sua versione. Si consiglia di verificare se il software è aggiornato o se il software distribuito da GPO è stato installato per un determinato utente. Ti mostrerò diversi metodi che puoi usare per verificarlo con PowerShell.

Come controllare la versione del software installato

Navigazione rapida:

  • Check elenco del software installato localmente
    • Get-WmiObject
    • query del Registro di sistema
    • registro Eventi
  • Check elenco del software installato da remoto
    • Get-WmiObject
    • query del Registro di sistema
    • registro Eventi
  • Controllare se l’oggetto criteri di gruppo distribuito il software è stato applicato con successo

Verificare cosa c’è installato suil tuo computer

Per verificare che il software è installato, si può sempre utilizzare Programmi e Funzionalità nel Pannello di Controllo o sfoglia tutte le partizioni del disco alla ricerca di un’app specifica. Puoi anche provare a trovare un’app nel menu Start per lanciarla e cercare manualmente il suo numero di versione. Tuttavia, il problema con questi metodi è che sono lontani dal “rapido e automatico” come possono essere. Controllare le versioni del software installato utilizzando PowerShell consente di raccogliere i dati che avete bisogno molto più veloce.

Ottieni l’elenco dei software installati con Get-WmiObject

Il firstmethod è semplice come incollare una semplice query:

Get-WmiObject -Class Win32_Product
Come controllare la versione del software installato - Get-WmiObject

È anche possibile filtrare i dati per la ricerca di specifiche applicazioni da un unico fornitore, insieme con le loro versioni, per esempio:

Get-WmiObject -Class Win32_Product | where vendor -eq CodeTwo | select Name, Version
Come controllare la versione del software installato - Get-WmiObject filtrato

Despitebeing molto semplice, questo metodo ha un grande svantaggio – ci vuole un po ‘ toreturn i risultati.

Registro di query per il software installato

Un altro metodo per ottenere un elenco di software installato sta interrogando il registro. Thefollowing short script restituisce l’elenco delle applicazioni insieme alle loro versioni:

$InstalledSoftware = Get-ChildItem "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall"foreach($obj in $InstalledSoftware){write-host $obj.GetValue('DisplayName') -NoNewline; write-host " - " -NoNewline; write-host $obj.GetValue('DisplayVersion')}
Come controllare la versione del software installato - query di registro

Ora, prendi aquick guarda l’elemento HKLM in grassetto sopra. Significa che l’elenco ofsoftware restituito dallo script è tutto il software installato sulla LM-localmachine. Tuttavia, le applicazioni possono essere installate anche per utente. Per tornare unelenco di applicazioni dell’utente attualmente connesso, modificare HKLM HKCU(CU sta per “utente corrente”):

$InstalledSoftware = Get-ChildItem "HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall"
foreach($obj in $InstalledSoftware){write-host $obj.GetValue('DisplayName') -NoNewline; write-host " - " -NoNewline; write-host $obj.GetValue('DisplayVersion')}

Ottenere l’elenco ofrecently installato il software dal Registro Eventi

Se desiderato controllare solo recentemente installato il software, è possibile utilizzare il seguente cmdletto di ricerca attraverso il Registro Eventi.

Get-WinEvent -ProviderName msiinstaller | where id -eq 1033 | select timecreated,message | FL *

Questo metodo di individuazione del software installato è più affidabile per gli elementi aggiunti di recente perché, per impostazione predefinita, i registri eventi sono impostati per sovrascrivere i record più vecchi(registrazione circolare).

Ulteriori informazioni sull’uso di PowerShell per controllare i log degli eventi di Windows e i risultati del filtraggio

Ottenere un elenco di installedsoftware da remoto

Ciascuno dei metodi sopra menzionati può essere utilizzato anche per controllare il software installato su altre macchine nella stessa rete. Se si crea un elenco di tutti i nomi di computer nella rete, è possibile utilizzare i metodi seguenti all’interno di un ciclo Foreach per restituire i risultati da più di un singolo PC remoto.

pc pcname in ogni script sta per il nome del computer remoto su cui si desidera ottenere un elenco di software installato e le relative versioni.

Get installed softwarelist with remote Get-WmiObject command

Il seguente cmdlet è, ancora una volta, il più semplice del gruppo, ma può richiedere del tempo per finire:

Get-WmiObject Win32_Product -ComputerName $pcname | select Name,Version

dove pc pcname è il nome del computer che si desidera interrogare.

Verifica software installatocon query di registro remota

Le query di registro remote sono leggermente più complicate e richiedono l’esecuzione del servizio di registro remoto. Un esempio di query è il seguente:

$list=@()$InstalledSoftwareKey="SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"$InstalledSoftware=::OpenRemoteBaseKey('LocalMachine',$pcname)$RegistryKey=$InstalledSoftware.OpenSubKey($InstalledSoftwareKey) $SubKeys=$RegistryKey.GetSubKeyNames()Foreach ($key in $SubKeys){$thisKey=$InstalledSoftwareKey+"\"+$key$thisSubKey=$InstalledSoftware.OpenSubKey($thisKey)$obj = New-Object PSObject$obj | Add-Member -MemberType NoteProperty -Name "ComputerName" -Value $pcname$obj | Add-Member -MemberType NoteProperty -Name "DisplayName" -Value $($thisSubKey.GetValue("DisplayName"))$obj | Add-Member -MemberType NoteProperty -Name "DisplayVersion" -Value $($thisSubKey.GetValue("DisplayVersion"))$list += $obj}$list | where { $_.DisplayName } | select ComputerName, DisplayName, DisplayVersion | FT
Come controllare la versione del software installato - query del registro di sistema tabella di vista

Controllare recentemente installedsoftware elenco dal Registro Eventi in remoto

Controllo auser di eventi di log in remoto richiede l’aggiunta di un singolo attributo (-ComputerName) al cmdlet usato prima:

Get-WinEvent -ComputerName $pcname -ProviderName msiinstaller | where id -eq 1033 | select timecreated,message | FL *

Controllare se un oggetto criteri di gruppo, distribuito softwarewas applicato con successo

Se si applieda certa versione del software tramite oggetto criteri di gruppo, si può facilmente controllare se l’oggetto wassuccessfully applicato a un utente o meno. Tutto ciò di cui hai bisogno è lo strumento GPResult enomi del computer e dell’utente di destinazione:

gpresult /s "PCNAME" /USER "Username" /h "Target location of theHTML report"

Quindi, cerca il tuo GPOname e controlla se è elencato sotto GPO applicati o GPO negati.Il GPO di esempio di seguito è nel gruppo GPO applicato.

Come controllare la versione del software installato - gpresult html report