MSInfo32: Uma Forma Fácil de Gerar um Relatório do Sistema Windows

Você já teve dificuldade em criar um relatório de informações do sistema no seu computador? Coletar detalhes do sistema pode parecer difícil, mas a Ferramenta de Informações do Sistema Microsoft (MSInfo32) faz um trabalho rápido ao coletar todas essas informações!

Neste artigo, você dominará a geração e visualização de relatórios de informações do sistema em pouco tempo. Continue lendo para saber mais!

Pré-requisitos

Para este tutorial, você pode usar qualquer versão do Windows 10. A leitura de relatórios do sistema a partir da linha de comando requer o PowerShell. Este tutorial usa o Windows 10 versão 21H1 build 19043 e o PowerShell v7.1.

Visualizando um Relatório de Informações do Sistema

O primeiro passo para obter informações detalhadas sobre o seu sistema é abrir a ferramenta MSInfo32.

Para encontrar a ferramenta, pesquise por MSInfo32 no Menu Iniciar, e certifique-se de clicar na opção Executar como administrador.

Quando o MSInfo32 não é executado como administrador, ele não pode atualizar corretamente seu cache interno de informações, e alguns drivers podem aparecer como parados quando não estão.

Assim que a ferramenta abrir, ela apresentará um relatório, um gerado automaticamente. Você verá um resumo do hardware do seu computador na visualização Resumo do Sistema. Esta visualização apresenta uma visão geral da configuração do sistema. À esquerda, você verá categorias, que detalham ainda mais cada seção.

Viewing the System Summary in MSInfo32.

Salvando relatórios MSInfo32

Talvez você esteja prestes a fazer alterações de hardware no seu sistema e gostaria de salvar um relatório de informações do sistema para comparação ou relatório posterior. Com o MSInfo32, você tem duas opções para salvar essas informações: salvar e exportar. Você aprenderá sobre elas a seguir.

Você poderia clicar em Arquivo → Salvar para salvar as informações como um arquivo NFO, que é conhecido como Arquivo de Informações do Sistema. O arquivo NFO é um arquivo baseado em XML que pode ser posteriormente aberto pela ferramenta MSInfo32 para visualização no mesmo formato organizado.

Saving a System Information report as an NFO file.

Você pode ver um exemplo do arquivo XML NFO abaixo.

<?xml version="1.0"?>
<MsInfo>
  <Metadata>
    <Version>8.0</Version>
    <CreationUTC>08/12/21 02:09:47</CreationUTC>
  </Metadata>
  <Category name="System Summary">
    <Data>
      <Item><![CDATA[OS Name]]></Item>
      <Value><![CDATA[Microsoft Windows 10 Education]]></Value>
    </Data>
    <Data>
      <Item><![CDATA[Version]]></Item>
      <Value><![CDATA[10.0.19043 Build 19043]]></Value>
    </Data>
    <Data>
      <Item><![CDATA[Other OS Description ]]></Item>
      <Value><![CDATA[Not Available]]></Value>
    </Data>
    <Data>
      <Item><![CDATA[OS Manufacturer]]></Item>
      <Value><![CDATA[Microsoft Corporation]]></Value>
    </Data>
    <Data>
      <Item><![CDATA[System Name]]></Item>
      <Value><![CDATA[ASPIREBOX]]></Value>
    </Data>
    <Data>
      <Item><![CDATA[System Manufacturer]]></Item>
      <Value><![CDATA[Acer]]></Value>
...

Você também poderia clicar em Arquivo → Exportar o que salva as informações como um arquivo de texto TXT que pode ser mais fácil de ler, mas não pode ser aberto posteriormente via Ferramenta de Informações do Sistema.

Saving a Syst

E abaixo você verá um exemplo do formato de arquivo de texto que o MSInfo32 exporta.

System Information report written at: 08/11/21 23:33:55
System Name: ASPIREBOX
[System Summary]

Item	Value	
OS Name	Microsoft Windows 10 Education	
Version	10.0.19043 Build 19043	
Other OS Description 	Not Available	
OS Manufacturer	Microsoft Corporation	
System Name	ASPIREBOX	
System Manufacturer	Acer	
System Model	Aspire A514-54	
System Type	x64-based PC	
System SKU	0000000000000000	
Processor	11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz, 2419 Mhz, 4 Core(s), 8 Logical Processor(s)	
BIOS Version/Date	Insyde Corp. V1.12, 5/26/2021	
SMBIOS Version	3.3	
Embedded Controller Version	1.12	
BIOS Mode	UEFI	
BaseBoard Manufacturer	TGL	
BaseBoard Product	Lily_TL	
BaseBoard Version	V1.12	
Platform Role	Mobile	
Secure Boot State	On	
PCR7 Configuration	Elevation Required to View	
Windows Directory	C:\WINDOWS	
System Directory	C:\WINDOWS\system32	
Boot Device	\Device\HarddiskVolume1	
Locale	Brazil

Scripting Exported Reports from MSInfo32

Agora que você sabe como gerar um relatório de informações do sistema a partir do MSInfo32, como você geraria um relatório NFO ou TXT a partir da linha de comando? Talvez você esteja criando um script e precise de uma maneira rápida de recuperar informações de hardware.

Abaixo estão duas opções diferentes usando a linha de comando para gerar tanto um relatório NFO quanto TXT.

Você pode encontrar muitos artigos desatualizados sobre o MSInfo32 onde você pode ver opções como /categorias, /categoria, /pch e /mostrarcategorias. Estas estão disponíveis apenas no Windows XP, não disponíveis para o Windows 10.

Este primeiro exemplo demonstra a geração de um relatório TXT no mesmo diretório onde o comando é executado, como você pode ver na captura de tela a seguir.

MSInfo32 /report report.txt

Mesmo ao ser executado a partir da linha de comando, uma janela aparece onde você pode ver a atualização das informações do sistema antes da geração do relatório.

Exporting a System Information report as a TXT file on the command line. Notice the window that pop

Este segundo exemplo demonstra a geração do relatório NFO, desta vez especificando o diretório onde o relatório será salvo. Esteja ciente de que o diretório deve existir antes de executar o comando. Caso contrário, ele falhará silenciosamente.

MSInfo32 /nfo c:\ata\report.nfo

Embora qualquer extensão de arquivo funcione, como o relatório de exportação de informações do sistema é um arquivo NFO, a opção /nfo, a convenção dita o uso da extensão .nfo para o relatório.

Lendo arquivos NFO via PowerShell

Ao longo deste tutorial, você aprendeu como gerar e exportar relatórios do MSInfo32. Mas você veio até Adam the Automator por um motivo, então aprenderá a automatizar o processo.

Relatórios NFO salvos podem ser abertos e visualizados no MSInfo32 através do menu Arquivo → Abrir. O problema é: uma interface gráfica não é ideal ao automatizar a recuperação de informações. Como os arquivos NFO são salvos como arquivos XML, o PowerShell pode analisar arquivos XML e recuperar essas informações.

Para ler o arquivo de relatório XML, abra uma janela do PowerShell e execute o comando Get-Content, conforme mostrado na captura de tela abaixo. O [XML] permite que o PowerShell leia o texto XML e o converta em objetos do PowerShell. Por fim, salve o resultado na variável $Report. O comando resultante pode ser visto abaixo.

$Report = [XML](Get-Content -Path 'Report.nfo')
Output of the $Report variable.

Talvez você precise recuperar a lista de serviços que estavam em execução no momento em que o relatório foi gerado. Como os relatórios do MSInfo32 contêm essa informação, você pode recuperar a lista por meio do método SelectNodes().

O método SelectNodes() utiliza XPath. XPath é uma linguagem de consulta para XML. A elaboração de consultas XPath complexas está fora do escopo deste artigo.

<Category name="Services">
        <Data>
          <Display_Name><![CDATA[ACC Service]]></Display_Name>
          <Name><![CDATA[ACCSvc]]></Name>
          <State><![CDATA[Running]]></State>
          <Start_Mode><![CDATA[Auto]]></Start_Mode>
          <Service_Type><![CDATA[Own Process]]></Service_Type>
          <Path><![CDATA["c:\\program files (x86)\\acer\\care center\\accsvc.exe"]]></Path>
          <Error_Control><![CDATA[Normal]]></Error_Control>
          <Start_Name><![CDATA[LocalSystem]]></Start_Name>
          <Tag_ID><![CDATA[0]]></Tag_ID>
        </Data>
        <Data>
          <Display_Name><![CDATA[AllJoyn Router Service]]></Display_Name>
          <Name><![CDATA[AJRouter]]></Name>
          <State><![CDATA[Stopped]]></State>
          <Start_Mode><![CDATA[Manual]]></Start_Mode>
          <Service_Type><![CDATA[Share Process]]></Service_Type>
          <Path><![CDATA[c:\\windows\\system32\\svchost.exe -k localservicenetworkrestricted -p]]></Path>
          <Error_Control><![CDATA[Normal]]></Error_Control>
          <Start_Name><![CDATA[NT AUTHORITY\\LocalService]]></Start_Name>
          <Tag_ID><![CDATA[0]]></Tag_ID>
        </Data>
</Category>

A consulta XPath '//Category[@name="Software Environment"]/Category[@name="Services"]/Data' servirá como exemplo. Suas partes são mostradas abaixo, para que você possa entendê-la e adaptá-la para vários cenários.

  • //Category[@name="Software Environment"] – Retorna qualquer nó Category em todo o documento, indicado pelo duplo-slash precedente, com o nome “Software Environment”.
  • /Category[@name="Services"] – Retorna o nó Category sob o nó “Software Environment” previamente retornado, que tem o nome “Services”.
  • /Data – Retorna o nó filho Data sob o nó “Services” retornado anteriormente.

A estrutura de exemplo acima representa o Relatório do Sistema gerado automaticamente que vemos ao executar o MSInfo32. Você pode adaptá-lo construindo de acordo com a seção que você vê neles.

Ao passar a consulta XPath //Category[@name="Software Environment"]/Category[@name="Services"]/Data para o método SelectNodes() no objeto $Report mostrado abaixo, todos os serviços do Windows são retornados como nós XML. Como os nós XML não estão exibindo uma saída esperada (O serviço Name, DisplayName e State), o código abaixo cria um PSCustomObject e formata a saída para caber na tela com Format-Table.

# A consulta XPath mostrada abaixo será alterada com base nos dados que você deseja extrair, nem sempre seguirá esta convenção
$Report.SelectNodes('//Category[@name="Software Environment"]/Category[@name="Services"]/Data') | ForEach-Object {
  [PSCustomObject]@{
    "Name"    = $PSItem.Name.innerText
    "Display" = $PSItem.Display_Name.innerText
    "State"   = $PSItem.State.innerText
  }
} | Format-Table -AutoSize
Selecting XML data from an NFO file.

Aqui está um exemplo adicional de como usar uma consulta XPath e o PowerShell para encontrar informações na categoria de Exibição do Relatório do Sistema. A consulta XPath em si é muito semelhante às anteriores, mas desta vez procurando pelas categorias Componentes e Exibição.

# A consulta XPath mostrada abaixo será alterada com base nos dados que deseja extrair, nem sempre seguirá esta convenção
$Report.SelectNodes('//Category[@name="Components"]/Category[@name="Display"]/Data') | ForEach-Object -Begin {
	# Crie uma coleção de objetos para armazenar todos os dispositivos
	$Objects = [System.Collections.ArrayList]@()
	# O objeto temporário usado para armazenar os nomes e valores de um único dispositivo
	$Object = @()
} -Process {
	# Se o nome do Item não estiver em branco, indicando que um novo dispositivo está chegando, adicione o Nome e o Valor à matriz temporária $Object.
  # A razão pela qual isso não pode estar em uma hashtable personalizada é porque o Nome pode ser duplicado, o que não é permitido em uma hashtable
  If (-Not [String]::IsNullOrWhiteSpace($PSItem.Item.innerText)) {
    $Object += [PSCustomObject]@{
      "Name"  = $PSItem.Item.innerText
      "Value" = $PSItem.Value.innerText
    }
  } Else {
		# Quando um nome de Item em branco é encontrado, adicione isso à lista geral de dispositivos
    $Objects.Add($Object)
		# Redefina o objeto de dispositivo único
    $Object = @()
  }
} -End {
	# Envie apenas a coleção de objetos de dispositivo mais adiante no pipeline
	$Objects
} | Format-Table -AutoSize
Results of the XML query against the Display Components list.

Conclusão

Neste artigo, você aprendeu como o MSInfo32 oferece uma maneira conveniente de gerar um relatório abrangente do sistema para um sistema local. Com as funções de salvar e exportar do MSInfo32, você aprendeu como exportar o status do sistema para analisar ao longo do tempo e usar o PowerShell para analisar as informações disponíveis.

Como você automatizaria o MSInfo32 em vários sistemas?

Source:
https://adamtheautomator.com/msinfo32/