/
/

Como detectar itens ausentes no inventário de software via script e gerar relatórios de conformidade

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

Resumo instantâneo

Esta postagem do blog NinjaOne oferece uma lista abrangente de comandos CMD básicos e um mergulho profundo nos comandos do Windows, com +70 comandos CMD essenciais para usuários iniciantes e avançados. Explicamos sobre comandos práticos de prompt de comando para gerenciamento de arquivos, navegação em diretórios, solução de problemas de rede, operações de disco e automação, tudo com exemplos reais para maximizar a produtividade. Seja para aprender comandos básicos CMD ou dominar ferramentas avançadas de CLI do Windows, este guia ajuda você a usar o prompt de comando com mais eficiência.

Pontos principais

  • Colete os softwares instalados com PowerShell: execute um comando do PowerShell nos caminhos de desinstalação do registro de 64 bits e de 32 bits para obter a lista de aplicativos instalados e exporte o resultado para um arquivo CSV.
  • Crie uma linha de base e compare: defina no PowerShell um array com os nomes dos aplicativos obrigatórios, compare-o com a lista de softwares instalados para sinalizar o que estiver faltando e exporte esse relatório para CSV.
  • Use CMD/WMIC quando o PowerShell não for uma opção: execute um comando WMIC em um Prompt de Comando elevado para exportar uma lista de softwares instalados em texto e, se quiser, analise esse arquivo com PowerShell para procurar aplicativos específicos.
  • Grave os resultados de conformidade no Registro: crie uma chave de registro em HKLM para armazenar os resultados da auditoria, defina as propriedades com a data da última auditoria e os itens ausentes e consulte a chave para confirmar que os valores foram salvos.
  • Reúna tudo em um relatório de conformidade: faça cada dispositivo salvar o CSV em uma pasta compartilhada ou no RMM e rode um comando do PowerShell para importar e combinar todos os CSVs em um relatório único. Confirme que ele traz nome do dispositivo, software ausente, status de conformidade e data/hora, e agrupe os resultados por cliente ou local, se precisar.

Garantir que o software obrigatório esteja presente e bloquear aplicativos não autorizados é essencial para conformidade, segurança e padronização dos endpoints. Fazer isso manualmente é lento, pouco confiável e consome tempo demais quando há muitos endpoints. Com scripts, porém, MSPs e administradores de TI conseguem automatizar o processo e detectar problemas antes que eles afetem os usuários.

Os métodos deste guia servem para auditar aplicativos instalados, gerar relatórios de conformidade e detectar aplicativos não autorizados e softwares ausentes. Vamos passar por PowerShell, Prompt de Comando e marcação via Registro. Além disso, veremos a integração opcional com GPO, RMM e NinjaOne para automação e relatórios em escala.

Quer saber mais? Assista a “Como detectar itens ausentes no inventário de software via script e gerar relatórios de conformidade” para um guia visual.

Como detectar softwares ausentes via script e gerar relatórios de conformidade

Pré-requisitos:

  • Windows 10, 11 ou Server 2016+ para dar suporte aos scripts.
  • PowerShell 5.1 ou superior para executar os comandos de inventário e de relatórios.
  • Direitos de administrador nos endpoints para consultar os softwares instalados.
  • Uma lista de softwares obrigatórios por site, função ou cliente, para que o script saiba o que verificar.

Opcional:

  • Acesso à Política de Grupo para aplicar chaves de registro ou caminhos de arquivo.
  • Uma plataforma de RMM ou de gerenciamento de endpoints, como NinjaOne, para facilitar a implantação remota de scripts e os relatórios.

Método 1: como coletar o inventário de software instalado via PowerShell

O PowerShell permite extrair a lista de aplicativos instalados dos locais de registro de 64 bits e de 32 bits. Depois, basta exportar para CSV e gerar relatórios.

Casos de uso:

  • Criar uma lista clara dos softwares instalados, verificar a conformidade e descobrir se os dispositivos atendem aos padrões.
  • Obter dados para comparar o que deveria estar instalado com o que está de fato instalado.

Pré-requisitos:

  • Os dispositivos de destino precisam rodar PowerShell 5.1 ou superior.
  • São necessários direitos de administrador para acessar os locais do registro em que o Windows guarda informações sobre os programas instalados.

Para consultar as instalações de 64 bits e de 32 bits, use este comando no 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

Para exportar para CSV:

$installedSoftware | Export-Csv "C:\Reports\InstalledSoftware.csv" -NoTypeInformation

Método 2: como definir e comparar com uma linha de base de software

Depois de coletar a lista de aplicativos instalados, a próxima tarefa é compará-la com uma linha de base predefinida. A linha de base é a lista de aplicativos que precisam estar presentes em todos os dispositivos por exigência de conformidade e de operação. Com PowerShell, dá para sinalizar os aplicativos ausentes e exportar os resultados.

Casos de uso:

  • Garantir que todos os endpoints tenham os aplicativos obrigatórios.
  • Identificar aplicativos ausentes ou não autorizados antes que afetem os usuários.

Pré-requisitos:

  • Uma lista definitiva e predefinida dos aplicativos obrigatórios por site, função ou cliente.
  • PowerShell 5.1 ou superior no dispositivo de destino para executar os scripts.

Veja um exemplo de lista de linha de base e de comando para executar no PowerShell. Ele define quais softwares precisam estar presentes. Dá para incluir mais aplicativos usando vírgula + aspas retas:

$requiredApps = @("Microsoft Defender Antivirus", "7-Zip", "Microsoft Edge", "FortiClient VPN")

Já para detectar os aplicativos ausentes em relação à lista da linha de base, use este código:

$installed = $installedSoftware.DisplayName
$missing = $requiredApps | Where-Object { $installed -notcontains $_ }

$missingReport = [PSCustomObject]@{
ComputerName = $env:COMPUTERNAM
MissingSoftware = $missing -join "; "
Timestamp = (Get-Date).ToString("u")

}

Para exportar para CSV, execute este comando:

$missingReport | Export-Csv "C:\Reports\MissingSoftware.csv" -NoTypeInformation

Método 3: como usar CMD e WMIC para um inventário leve

Se o PowerShell estiver restrito ou indisponível, use o Prompt de Comando e o Windows Management Instrumentation Command-line (WMIC). É uma forma rápida de reunir informações sobre os softwares instalados. O resultado é menos detalhado que o do PowerShell, mas funciona em ambientes legados.

Casos de uso:

  • Coletar o inventário de software em ambientes legados ou restritos.
  • Gerar listas rápidas de softwares instalados em formato de texto.

Pré-requisitos:

  • Um endpoint Windows com WMIC disponível (Windows 10 ou anterior, ou versão de servidor anterior a 2022).
  • Permissões para executar comandos em um Prompt de Comando elevado.

Use este comando no Prompt de Comando para exportar a lista de softwares instalados para um arquivo de texto:

wmic product get name, version > C:\Reports\SoftwareInventory.txt

Opcional: analise os resultados com PowerShell:

Get-Content "C:\Reports\SoftwareInventory.txt" | Select-String "AppName"

Método 4: como armazenar o status de conformidade no Registro

Este método grava os resultados da auditoria no Registro do Windows, de modo que cada endpoint mantenha um registro local do próprio status de conformidade, incluindo a data da última auditoria e os softwares ausentes.

Casos de uso:

  • Deixar os resultados de conformidade visíveis no próprio dispositivo, para que técnicos e scripts consultem rapidamente.
  • Permitir que ferramentas de RMM leiam os valores do registro e os usem em relatórios de conformidade.

Pré-requisitos:

  • Direitos de administrador para criar e editar chaves do Registro em HKLM.
  • O array $missing criado durante a comparação com a linha de base no Método 2.

Veja como criar um registro local que reflita os resultados de conformidade:

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

Depois, valide pelo CMD para confirmar que a chave e os valores foram realmente criados. Use este código:

reg query HKLM\SOFTWARE\Org\SoftwareAudit

Método 5: gerar relatórios de conformidade entre dispositivos

Depois que cada dispositivo gera o CSV da auditoria, dá para combinar os resultados em um relatório único. Isso oferece uma visão completa da conformidade nos endpoints e facilita o acompanhamento das lacunas por cliente, local ou função.

Caso de uso:

  • Criar um relatório único que reúna os dados de conformidade de todos os dispositivos.

Pré-requisitos:

  • Acesso a uma unidade compartilhada ou a um RMM que colete os relatórios CSV de cada dispositivo.
  • PowerShell 5.1 ou superior para agregar os resultados exportados.

Veja o passo a passo para gerar relatórios de conformidade entre dispositivos:

  1. Colete os relatórios dos dispositivos: cada endpoint deve salvar o CSV em uma pasta compartilhada ou enviá-lo pelo RMM.
  2. Execute este comando do PowerShell para consolidar os resultados, reunindo e combinando todos os CSVs:

Get-ChildItem "\\server\auditshare\*.csv" | Import-Csv | Export-Csv "C:\Reports\MasterComplianceReport.csv" -NoTypeInformation

  1. Em seguida, revise as colunas principais. Confirme que o relatório consolidado tem os campos essenciais, como:
    1. Nome do dispositivo
    2. Software ausente
    3. Status de conformidade
    4. Data/hora
  2. O Group-Object do PowerShell ou a filtragem organizam os resultados por cliente, local ou função do endpoint. Por exemplo, agrupe todos os dispositivos de cada cliente com este comando:
Import-Csv "C:\Reports\MasterComplianceReport.csv" | Group-Object Client | ForEach-Object {
Write-Output "Client: $($_.Name)"
$_.Group | Select-Object DeviceName, MissingSoftware, ComplianceStatus
""
}

⚠️ Pontos de atenção

RiscosPossíveis consequênciasSolução
Arquivos CSV ausentes de alguns dispositivosO relatório consolidado fica incompleto e pode subestimar a não conformidade.Verifique se cada endpoint exportou o CSV com sucesso. Se necessário, execute o script de auditoria de novo.
Os scripts de auditoria não funcionamDispositivos são ignorados e o relatório de conformidade subestima a quantidade de softwares ausentes.Execute os scripts com uma conta que tenha permissões elevadas.
Nomes de colunas inconsistentes entre os CSVsA importação pode falhar ou gerar resultados imprecisos.Padronize as saídas dos scripts, assim todos os dispositivos exportam os mesmos nomes de colunas.

Outros pontos a considerar na detecção e no relatório de softwares ausentes

Falsos negativos

Os nomes de software no campo DisplayName variam. Há diferença entre “Google Chrome” e “Chrome”, por exemplo. Para evitar isso, use regex ou correspondência por curingas e reduza o risco de resultados imprecisos.

Controle de licenças

As verificações de conformidade devem ir além das instalações ausentes. Vale acompanhar também versões divergentes e licenças de teste expiradas. Assim, os endpoints seguem em conformidade e atualizados.

Exclusões

Considere manter listas separadas para softwares obrigatórios e softwares proibidos. Dá para sinalizar tanto instalações ausentes quanto aplicativos não autorizados.

Flexibilidade e ajustes da linha de base

Ajuste os requisitos da linha de base conforme a função de cada endpoint. Quiosques usados só para exibição podem precisar de poucos aplicativos, enquanto engenheiros talvez precisem de uma variedade grande de programas para trabalhar com eficiência.

Guia de início rápido

NinjaOne tem recursos robustos para detectar e gerenciar o inventário de software e gerar relatórios de conformidade. Em detalhes:

1. Detecção de inventário de software:

NinjaOne oferece vários scripts e ferramentas para acompanhar o inventário de software

  • Há um recurso dedicado: Painel: Inventário de software
  • A plataforma permite acompanhar os softwares instalados nos dispositivos

2. Relatórios de conformidade:

NinjaOne oferece recursos completos de relatórios, incluindo:

  • Ferramentas de Vulnerability Management
  • Importação de dados de vulnerabilidades a partir de arquivos CSV
  • Relatórios de runbook personalizáveis e exportáveis
  • Condições de política para acompanhar a presença de softwares

3. Recursos de scripts:

A plataforma tem uma ampla biblioteca de automação, com scripts como:

4. Outros recursos de relatórios:

Relatórios agendados

  • Exportação de relatórios para PDF
  • Campos personalizados para acompanhar informações de software e dispositivos

Solução de problemas na auditoria de software e na geração de relatórios

Softwares de 32 bits ausentes no PowerShell de 64 bits

Se os aplicativos de 32 bits não aparecerem, confirme se o script consulta o caminho de registro Wow6432Node e também a chave de desinstalação padrão.

Exportação vazia

Se o CSV exportado vier em branco, confirme se o software está instalado e se o campo DisplayName está preenchido.

Falhas de gravação no Registro

Se os resultados de conformidade não estiverem sendo salvos no Registro, execute o script com direitos de administrador ou no contexto SYSTEM.

Problemas de Unicode no CSV

Se os CSVs exportados mostrarem texto ilegível ou caracteres faltando, use -Encoding UTF8 com Export-Csv para tratar os caracteres especiais corretamente.

Serviços NinjaOne que ajudam a detectar softwares ausentes e gerar relatórios

O que NinjaOne faz O que éComo ajuda
Implanta scripts de inventário e comparação em escalaExecuta scripts de PowerShell ou CMD em todos os dispositivos gerenciadosGarante que todo endpoint seja verificado automaticamente em relação à linha de base de software
Coleta marcações locais do registro para visibilidade da auditoriaLê chaves de conformidade como LastAudit e MissingItems no RegistroDá visibilidade local e centralizada a técnicos e auditores
Marca dispositivos como “Não conforme”Identifica os endpoints que não atendem aos requisitos da linha de baseAcelera a triagem, deixando os técnicos focados nos dispositivos fora de conformidade
Alerta sobre softwares ausentesDispara notificações quando aplicativos obrigatórios não estão presentesPermite que o técnico aja na hora, antes que os usuários sejam afetados
Gera relatórios de conformidade para o clienteProduz relatórios com controle de versões e status de implantaçãoEntrega relatórios transparentes às partes interessadas e apoia auditorias

Com NinjaOne, MSPs padronizam e escalam as auditorias de TI de software e ainda entregam relatórios de conformidade transparentes aos clientes.

Mais conformidade e menos risco com auditorias de software automatizadas

Detectar softwares ausentes e manter os endpoints em conformidade é essencial para a segurança e a operação do dia a dia. MSPs e administradores de TI confirmam rapidamente quais dispositivos atendem aos requisitos ao coletar inventários de software, compará-los com uma linha de base e registrar os resultados local e centralmente.

Relatórios de conformidade para toda a organização dão visibilidade completa de todos os clientes, e NinjaOne automatiza auditorias, acelera a remediação e mantém a conformidade contínua em escala.

Temas relacionados:

FAQs

Consulte a lista de softwares instalados nas chaves de desinstalação do registro do Windows com PowerShell e compare-a com uma lista de linha de base dos aplicativos obrigatórios. Todo aplicativo obrigatório que não aparecer na lista de instalados é sinalizado como ausente e pode ir para um relatório CSV.

É a lista definitiva de aplicativos que precisam estar em um dispositivo para que ele seja considerado em conformidade. Normalmente as linhas de base são definidas por site, função ou cliente, então um quiosque, a estação de trabalho de um engenheiro e um servidor do cliente podem ter requisitos diferentes.

Sim. Use o CMD com WMIC para exportar uma lista básica dos softwares instalados para um arquivo de texto. Como WMIC está obsoleto nas versões atuais do Windows, trate essa opção como alternativa para ambientes legados, não como solução de longo prazo.

NinjaOne executa scripts de inventário e comparação em todos os dispositivos gerenciados, lê os valores de conformidade do Registro em campos personalizados e alerta os técnicos quando falta um software obrigatório. Os relatórios de inventário de software nativos dão visibilidade a toda a organização sem coleta manual de CSV.

Recomendados para você

Pronto para simplificar as partes mais difíceis da TI?