MSInfo32: Una forma fácil de generar un informe del sistema de Windows

¿Has tenido dificultades para crear un informe de información del sistema en tu computadora? Recopilar detalles del sistema puede parecer difícil, pero la herramienta de Información del Sistema de Microsoft (MSInfo32) simplifica rápidamente la recopilación de toda esa información.

En este artículo, dominarás la generación y visualización de informes de información del sistema en poco tiempo. ¡Sigue leyendo para obtener más información!

Prerrequisitos

Para este tutorial, puedes utilizar cualquier versión de Windows 10. La lectura de informes del sistema desde la línea de comandos requiere PowerShell. Este tutorial utiliza Windows 10 versión 21H1, compilación 19043, y PowerShell v7.1.

Visualización de un informe de información del sistema

El primer paso para obtener información detallada sobre tu sistema es abrir la herramienta MSInfo32.

Para encontrar la herramienta, busca MSInfo32 en el Menú de Inicio, y asegúrate de hacer clic en la opción Ejecutar como administrador.

Cuando MSInfo32 no se ejecuta como administrador, no puede actualizar correctamente su caché de información interna, y algunos controladores pueden mostrar como detenidos cuando no lo están.

Tan pronto como la herramienta se abre, te presentará un informe, uno generado automáticamente. Verás un resumen de hardware de tu computadora en la vista de Resumen del sistema. Esta vista describe una visión general de la configuración del sistema. A la izquierda, verás categorías que desglosan aún más cada sección.

Viewing the System Summary in MSInfo32.

Guardar informes de MSInfo32

Quizás estás a punto de realizar cambios de hardware en tu sistema y te gustaría guardar un informe de información del sistema para compararlo o informarlo más tarde. Con MSInfo32, tienes dos opciones para guardar esa información: guardar y exportar. Aprenderás sobre ellas a continuación.

Puedes hacer clic en Archivo → Guardar para guardar la información como un archivo NFO, conocido como Archivo de Información del Sistema. El archivo NFO es un archivo basado en XML que más tarde se puede abrir con la herramienta MSInfo32 para verlo en el mismo formato organizado.

Saving a System Information report as an NFO file.

Aquí tienes un ejemplo del archivo XML NFO a continuación.

<?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>
...

También puedes hacer clic en Archivo → Exportar, lo que guarda la información como un archivo de texto sin formato (TXT) que puede ser más fácil de leer, pero no se puede abrir con la Herramienta de Información del Sistema más tarde.

Saving a Syst

Y a continuación verás un ejemplo del formato de archivo de texto que 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

Exportación de informes desde MSInfo32 mediante scripting

Ahora que sabes cómo generar un informe de información del sistema desde MSInfo32, ¿cómo generarías un informe NFO o TXT desde la línea de comandos? Tal vez estás creando un script y necesitas una forma rápida de recuperar información del hardware.

A continuación, hay dos opciones diferentes utilizando la línea de comandos para generar un informe NFO y TXT.

Puedes encontrar muchos artículos desactualizados sobre MSInfo32 donde podrías ver opciones como /categories, /category, /pch, y /showcategories. Estas solo están disponibles en Windows XP y no están disponibles en Windows 10.

Este primer ejemplo demuestra la generación de un informe TXT en el mismo directorio desde el que se ejecuta el comando, como se puede ver en la captura de pantalla siguiente.

MSInfo32 /report report.txt

Incluso al ejecutarlo desde la línea de comandos, aparece una ventana donde se puede observar que la Información del Sistema se actualiza antes de generar el informe.

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

Este segundo ejemplo muestra la generación del informe NFO, esta vez especificando el directorio donde se guardará el informe. Ten en cuenta que el directorio debe existir antes de ejecutar el comando; de lo contrario, fallará silenciosamente.

MSInfo32 /nfo c:\ata\report.nfo

Aunque cualquier extensión de archivo funcionará, dado que la exportación del informe de información del sistema es un archivo NFO, la opción /nfo dicta convencionalmente usar .nfo como extensión del informe.

Lectura de archivos NFO mediante PowerShell

A lo largo de este tutorial, has aprendido a generar y exportar informes MSInfo32. Pero viniste a Adam the Automator por una razón, así que aprenderás a automatizar el proceso.

Los informes NFO guardados pueden abrirse y verse en MSInfo32 a través del menú Archivo → Abrir. El problema es que una interfaz gráfica no es ideal al automatizar la recuperación de información. Dado que los archivos NFO se guardan como archivos XML, PowerShell puede analizar archivos XML y recuperar esa información.

Para leer el archivo de informe XML, abre una ventana de PowerShell y ejecuta Get-Content, como se muestra en la captura de pantalla a continuación. El [XML] permite que PowerShell lea el texto XML y lo convierta en objetos de PowerShell. Finalmente, guarda el resultado en la variable $Report. El comando resultante se puede ver a continuación.

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

Tal vez necesites recuperar la lista de servicios que estaban en ejecución en el momento en que se generó el informe. Dado que los informes MSInfo32 contienen esa información, puedes recuperar la lista mediante el método SelectNodes().

El método SelectNodes() utiliza XPath. XPath es un lenguaje de consulta para XML. La creación de consultas XPath complejas está fuera del alcance de este artículo.

<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>

La consulta XPath '//Category[@name="Software Environment"]/Category[@name="Services"]/Data' servirá como ejemplo. Sus partes se muestran a continuación para que puedas entenderlo y adaptarlo a varios escenarios.

  • //Category[@name="Software Environment"] – Devuelve cualquier nodo Category en todo el documento, indicado por el doble slash precedente, con el nombre “Software Environment”.
  • /Category[@name="Services"] – Devuelve el nodo Category debajo del nodo “Software Environment” previamente devuelto, que tiene el nombre “Services”.
  • /Datos – Devuelve el nodo hijo Datos debajo del nodo “Servicios” previamente devuelto.

La estructura de ejemplo anterior presenta el Informe del Sistema generado automáticamente que vemos cuando se ejecuta MSInfo32. Puedes adaptarlo construyéndolo según la sección que ves en esos.

Pasando la consulta XPath //Category[@name="Software Environment"]/Category[@name="Services"]/Data al método SelectNodes() en el objeto $Report mostrado a continuación, se devuelven todos los servicios de Windows como nodos XML. Dado que los nodos XML no muestran una salida esperada (el servicio Name, DisplayName y State), el código a continuación crea un PSCustomObject y formatea la salida para que encaje en la pantalla con Format-Table.

# La consulta XPath mostrada a continuación cambiará según los datos que desees extraer, no siempre seguirá esta convención.
$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.

A continuación se muestra un ejemplo adicional de cómo utilizar una consulta XPath y PowerShell para encontrar información sobre la categoría de visualización del Informe del Sistema. La consulta XPath en sí es muy similar a las anteriores, pero busca las categorías de Componentes y Visualización esta vez.

# La consulta XPath mostrada a continuación cambiará en función de los datos que desee extraer, no siempre seguirá esta convención
$Report.SelectNodes('//Category[@name="Components"]/Category[@name="Display"]/Data') | ForEach-Object -Begin {
	# Crear una colección de Objetos para mantener toda una colección de dispositivos
	$Objects = [System.Collections.ArrayList]@()
	# El objeto temporal utilizado para mantener los nombres y valores de un solo dispositivo
	$Object = @()
} -Process {
	# Si el nombre del ítem no está en blanco, lo que significa que viene un nuevo dispositivo, entonces añada el Nombre y el Valor al arreglo $Object temporal.
  # La razón por la cual esto no puede estar en una tabla de hash personalizada es porque el Nombre puede ser duplicado lo cual no está permitido en una tabla de hash
  If (-Not [String]::IsNullOrWhiteSpace($PSItem.Item.innerText)) {
    $Object += [PSCustomObject]@{
      "Name"  = $PSItem.Item.innerText
      "Value" = $PSItem.Value.innerText
    }
  } Else {
		# Una vez que se encuentra un nombre de ítem en blanco, añada esto a la lista general de Objetos de dispositivos
    $Objects.Add($Object)
		# Reiniciar el objeto de dispositivo único
    $Object = @()
  }
} -End {
	# Enviar solo la colección de objetos de Dispositivo más adelante en el pipeline
	$Objects
} | Format-Table -AutoSize
Results of the XML query against the Display Components list.

Conclusión

En este artículo, has aprendido cómo MSInfo32 ofrece una forma conveniente de generar un informe del sistema comprensivo para un sistema local. Con las funciones de guardar y exportar de MSInfo32, aprendiste cómo exportar el estado del sistema para analizarlo a lo largo del tiempo y usar PowerShell para analizar la información disponible.

¿Cómo automatizarías MSInfo32 en múltiples sistemas?

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