Como verificar rapidamente as versões de software instaladas

existem situações em que você precisa verificar se você ou seus usuários têm determinado software instalado, e qual é a sua versão. Você pode querer verificar se o software está atualizado ou se o seu software GPO-implantado foi instalado para um determinado usuário. Vou mostrar-lhe vários métodos que pode usar para verificar isso com PowerShell.

como verificar a versão de software instalada

navegação rápida:

  • Verifique a lista de software instalado localmente
    • Get-WmiObject
    • consulta de Registo
    • log de Eventos
  • Verifique a lista de software instalado remotamente
    • Get-WmiObject
    • consulta de Registo
    • log de Eventos
  • Verificar se o GPO implantado o software foi aplicado com sucesso

Verificar o que está instalado onyour computador

Para verificar qual o software está instalado, você sempre pode usar Programas e Recursos no Painel de Controle ou procurar todas as partições do disco em busca de um aplicativo específico. Você pode até mesmo tentar encontrar um aplicativo no menu Iniciar, a fim de lançá-lo e procurar por seu número de versão manualmente. No entanto, o problema com esses métodos é que eles estão tão longe de “rápido e automático” como eles podem ser. Verificar as versões de software instaladas usando PowerShell permite que você reúna dados que você precisa muito mais rápido.

Get installed software list with Get-WmiObject

The firstmethod is as simple as pasting a simple query:

Get-WmiObject -Class Win32_Product
Como verificar a versão do software instalado - Get-WmiObject

Você também pode facilmente filtrar os dados para encontrar as aplicações a partir de um único fornecedor, juntamente com suas versões, por exemplo:

Get-WmiObject -Class Win32_Product | where vendor -eq CodeTwo | select Name, Version
Como verificar a versão do software instalado - Get-WmiObject filtrada

Despitebeing muito fácil, este método tem uma grande desvantagem – que demora muito tempo toreturn os resultados.

Query registry forinstalled software

Anothermethod of getting a list of installed software is querying the registry. Thefollowing pequeno script retorna a lista de aplicações em conjunto com suas versões:

$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')}
Como verificar a versão do software instalado - consulta de registo

Agora, pegue aquick olhar para o HKLM elemento em negrito acima. Isso significa que a lista de software retornado pelo script é todo o software instalado no LM – localmachine. No entanto, as aplicações também podem ser instaladas por usuário. Para retornar alist de aplicações do usuário atualmente conectado, altere HKLM HKCU(CU significa “usuário atual”):

$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')}

Obter a lista ofrecently de software instalado a partir do Registo de Eventos

Se você wantto verificar apenas recentemente o software instalado, você pode usar o seguinte cmdletto de pesquisa através do Log de Eventos.

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

este método de descobrir que o software instalado é mais fiável para os acréscimos recentes porque, por omissão, os logs de eventos são definidos para substituir os registos mais antigos(registo circular).

Saiba mais sobre a utilização do PowerShell para verificar os Logs de Eventos do Windows e filtragem de resultados

Obter uma lista de installedsoftware remotamente

Cada um dos métodos mencionados acima também pode ser usado para verificar se o software instalado em outras máquinas na mesma rede. Se você criar uma lista de todos os nomes de computador em sua rede, você pode usar os métodos abaixo dentro de um loop Foreach para retornar os resultados de mais de um único PC remoto.

$pcname em cada script significa o nome do computador remoto no qual você deseja obter uma lista de software instalado e suas versões.

instalado softwarelist com controle remoto Get-WmiObject comando

Thefollowing cmdlet é, novamente, o mais fácil no monte, mas pode levar algum tempo tofinish:

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

onde$pcname é o nome do computador que você deseja consultar.

Check installed softwarewarewith remote registry query

Remote registry queries are slightly more complicated and require the Remote Registry service to be running. Um exemplo de consulta é o seguinte:

$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
Como verificar a versão do software instalado - consulta de registro vista de tabela

Verifique recentemente installedsoftware lista do Registo de Eventos remotamente

Verificar auser log de eventos do remotamente requer a adição de um único atributo (-ComputerName) tothe cmdlet usado antes:

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

Verifique se um GPO implantado softwarewas aplicada com sucesso

Se você applieda determinada versão de software via GPO, você pode facilmente verificar se este GPO wassuccessfully aplicadas a um usuário ou não. Tudo o que você precisa é a ferramenta GPResult e nomes do computador e usuário alvo:

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

em seguida, procure o seu GPOname e verifique se ele está listado sob GPOs aplicados ou negado GPOs.A amostra de GPO abaixo está no grupo GPOs aplicado.

Como verificar a versão de software instalada-gpresult html report