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

Você 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 da Microsoft (MSInfo32) facilita a coleta de todas essas informações!

Neste artigo, você aprenderá a gerar e visualizar 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 utiliza a versão 21H1 build 19043 do Windows 10 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 de informações internas 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 do MSInfo32

Talvez você esteja prestes a fazer alterações de hardware em 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ê pode clicar em Arquivo → Salvar para salvar as informações como um arquivo NFO, 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 pode clicar em Arquivo → Exportar, o que salva as informações como um arquivo de texto simples (TXT) que pode ser mais fácil de ler, mas não pode ser aberto via Ferramenta de Informações do Sistema posteriormente.

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

Exportação de Relatórios por Script do MSInfo32

Agora que você sabe como gerar um relatório de informações do sistema pelo 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 obter informações de hardware.

Aqui 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 pode ver opções como /categories, /category, /pch e /showcategories. Essas opções estão disponíveis apenas no Windows XP e não estão disponíveis no 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 é aberta onde você pode ver as Informações do Sistema sendo atualizadas 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, falhará silenciosamente.

MSInfo32 /nfo c:\ata\report.nfo

Embora qualquer extensão de arquivo funcione, como o relatório de informações do sistema exportado é um arquivo NFO, a opção /nfo, a convenção dita o uso de .nfo como a extensão do 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.

Os 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 converta-o em objetos 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 via 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 no documento inteiro, 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”.
  • /Dados – Retorna o nó filho de dados sob o nó “Serviços” previamente retornado.

A estrutura de exemplo acima é presente no Relatório do Sistema gerado automaticamente que vemos quando o MSInfo32 é executado. Você pode adaptá-lo construindo de acordo com a seção que você vê ali.

A passagem da consulta XPath //Categoria[@name="Ambiente de Software"]/Categoria[@name="Serviços"]/Dados para o método SelectNodes() no objeto $Relatório mostrado abaixo retorna todos os serviços do Windows como nós XML. Como os nós XML não estão exibindo uma saída esperada (O serviço Nome, DisplayName e Estado), o código abaixo cria um PSCustomObject e formata a saída para caber na tela com Format-Table.

# A consulta XPath mostrada abaixo mudará 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.

Abaixo está um exemplo adicional de como usar uma consulta XPath e 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 mudará com base nos dados que você 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 tabela de hash personalizada é porque o Nome pode ser duplicado, o que não é permitido em uma tabela de hash
  If (-Not [String]::IsNullOrWhiteSpace($PSItem.Item.innerText)) {
    $Object += [PSCustomObject]@{
      "Name"  = $PSItem.Item.innerText
      "Value" = $PSItem.Value.innerText
    }
  } Else {
		# Uma vez que um nome de Item em branco é encontrado, adicione isso à lista geral de objetos de dispositivos
    $Objects.Add($Object)
		# Redefina o objeto único do dispositivo
    $Object = @()
  }
} -End {
	# Envie apenas a coleção de objetos de dispositivos 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 análise 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/