MSInfo32: Простой способ создания отчета о системе Windows

Вы испытывали трудности при создании отчета о системной информации на вашем компьютере? Сбор деталей системы может показаться сложным, но инструмент Microsoft System Information Tool (MSInfo32) быстро справляется с этой задачей, собирая всю необходимую информацию!

В этой статье вы научитесь генерировать и просматривать отчеты о системной информации в кратчайшие сроки. Читайте далее, чтобы узнать больше!

Предварительные требования

Для этого учебного пособия вы можете использовать любую сборку Windows 10. Для чтения системных отчетов из командной строки требуется PowerShell. В данном учебнике используются Windows 10 версии 21H1 сборка 19043 и PowerShell v7.1.

Просмотр отчета о системной информации

Первый шаг для получения подробной информации о вашей системе – открыть инструмент MSInfo32.

Чтобы найти инструмент, ищите MSInfo32 в меню “Пуск”, и обязательно выберите опцию Запуск от имени администратора.

Когда MSInfo32 не запускается с правами администратора, он не может правильно обновить свой внутренний кэш информации, и некоторые драйверы могут отображаться как остановленные, когда они на самом деле работают.

Как только инструмент откроется, он предоставит вам отчет, автоматически сгенерированный. Вы увидите краткое описание аппаратных средств вашего компьютера в представлении Общая информация о системе. Это представление содержит общий обзор конфигурации системы. Слева вы увидите категории, которые подробно разбивают каждый раздел.

Viewing the System Summary in MSInfo32.

Сохранение отчетов MSInfo32

Возможно, вы собираетесь внести изменения в аппаратное обеспечение вашей системы и хотели бы сохранить отчет о системной информации для последующего сравнения или отчетности. С помощью MSInfo32 у вас есть два варианта сохранения этой информации: сохранение и экспорт. Вы узнаете о них далее.

Вы можете нажать Файл → Сохранить, чтобы сохранить информацию в файле NFO, который известен как файл системной информации. Файл NFO является файлом на основе XML, который позже можно открыть с помощью инструмента MSInfo32 для просмотра в том же организованном формате.

Saving a System Information report as an NFO file.

Ниже вы можете увидеть пример файла XML NFO.

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

Вы также можете нажать Файл → Экспорт, что сохранит информацию в файле TXT в формате обычного текста, который может быть проще прочитать, но не может быть открыт позже с помощью инструмента системной информации.

Saving a Syst

И ниже вы увидите пример формата текстового файла, который экспортирует MSInfo32.

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

Скриптовый экспорт отчетов из MSInfo32

Теперь, когда вы знаете, как создать отчет о системной информации из MSInfo32, как вы бы пошли на создание либо NFO, либо TXT отчета из командной строки? Возможно, вы создаете сценарий, и вам нужен быстрый способ получить информацию об аппаратных средствах.

Ниже приведены два различных варианта использования командной строки для создания как NFO, так и TXT отчетов.

Вы можете найти множество устаревших статей о MSInfo32, где вы можете увидеть такие параметры, как /categories, /category, /pch и /showcategories. Они доступны только в Windows XP и не поддерживаются в Windows 10.

Этот первый пример демонстрирует создание TXT-отчета в том же каталоге, откуда запускается команда, как вы можете видеть на следующем снимке экрана.

MSInfo32 /report report.txt

Даже при запуске из командной строки появляется окно, где вы можете видеть обновление информации о системе перед созданием отчета.

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

В этом втором примере демонстрируется создание отчета NFO, на этот раз с указанием каталога, где будет сохранен отчет. Обратите внимание, что каталог должен существовать до запуска команды. В противном случае она завершится без вывода сообщений об ошибке.

MSInfo32 /nfo c:\ata\report.nfo

Хотя любое расширение файла будет работать, так как экспорт отчета об информации системы является файлом NFO, соглашение предполагает использование .nfo в качестве расширения отчета.

Чтение файлов NFO через PowerShell

На протяжении этого руководства вы узнали, как создавать и экспортировать отчеты MSInfo32. Но вы обратились к Адаму Автоматизатору по какой-то причине, так что вы научитесь автоматизировать процесс.

Сохраненные отчеты NFO могут быть открыты и просмотрены в MSInfo32 через меню Файл → Открыть. Проблема в том, что графический интерфейс не идеален для автоматизации извлечения информации. Поскольку файлы NFO сохраняются как файлы XML, PowerShell может разбирать файлы XML и извлекать из них информацию.

Для чтения файла отчета в формате XML откройте окно PowerShell и выполните команду Get-Content, как показано на скриншоте ниже. [XML] позволяет PowerShell читать XML-текст и преобразовывать его в объекты PowerShell. Наконец, сохраните результат в переменную $Report. Результирующую команду можно увидеть ниже.

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

Возможно, вам потребуется извлечь список служб, которые были запущены во время создания отчета. Поскольку отчеты MSInfo32 содержат эту информацию, вы можете извлечь список с помощью метода SelectNodes().

Метод SelectNodes() использует XPath. XPath – это язык запросов для XML. Создание сложных запросов XPath выходит за рамки данной статьи.

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

Запрос XPath '//Category[@name="Software Environment"]/Category[@name="Services"]/Data' будет служить примером. Его части показаны ниже, чтобы вы могли понять и адаптировать его для различных сценариев.

  • //Category[@name="Software Environment"] – Возвращает любой узел Category во всем документе, указанный двойным слэшем, с именем “Software Environment”.
  • /Category[@name="Services"] – Возвращает узел Category под ранее возвращенным узлом “Software Environment” с именем “Services”.
  • /Данные – Возвращает дочерний узел данных под ранее возвращенным узлом “Службы”.

Приведенная выше структура представляет собой автоматически сгенерированный системный отчет, который мы видим при запуске MSInfo32. Вы можете адаптировать его, строя раздел в соответствии с тем разделом, который вы видите в нем.

Передача XPath-запроса //Category[@name="Software Environment"]/Category[@name="Services"]/Data методу SelectNodes() объекта $Report, показанному ниже, возвращает все службы Windows в виде XML-узлов. Поскольку XML-узлы не отображают ожидаемого вывода (служба Name, DisplayName и State), приведенный ниже код создает PSCustomObject и форматирует вывод для отображения на экране с использованием Format-Table.

# XPath-запрос, показанный ниже, изменится в зависимости от того, какие данные вы хотите извлечь, он не всегда будет следовать этому соглашению
$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.

Приведен ниже дополнительный пример того, как использовать XPath-запрос и PowerShell для получения информации о категории “Отображение системного отчета”. Сам XPath-запрос очень похож на предыдущие, но на этот раз он ищет категории “Компоненты” и “Отображение”.

# Запрос XPath, показанный ниже, будет изменяться в зависимости от того, какие данные вы хотите извлечь, он не всегда будет следовать этому соглашению
$Report.SelectNodes('//Category[@name="Components"]/Category[@name="Display"]/Data') | ForEach-Object -Begin {
	# Создайте коллекцию объектов для хранения всех устройств
	$Objects = [System.Collections.ArrayList]@()
	# Временный объект, используемый для хранения имен и значений одного устройства
	$Object = @()
} -Process {
	# Если имя элемента не пустое, что означает появление нового устройства, добавьте имя и значение во временный массив $Object.
  # Причина, по которой это не может быть пользовательским хэш-таблицей, заключается в том, что имя может быть дублированным, что не допускается в хэш-таблице
  If (-Not [String]::IsNullOrWhiteSpace($PSItem.Item.innerText)) {
    $Object += [PSCustomObject]@{
      "Name"  = $PSItem.Item.innerText
      "Value" = $PSItem.Value.innerText
    }
  } Else {
		# Как только встречается пустое имя элемента, добавьте его в общий список объектов устройств
    $Objects.Add($Object)
		# Сбросить объект одного устройства
    $Object = @()
  }
} -End {
	# Отправить только коллекцию объектов Device дальше по конвейеру
	$Objects
} | Format-Table -AutoSize
Results of the XML query against the Display Components list.

Заключение

В этой статье вы узнали, как MSInfo32 предлагает удобный способ создания полного системного отчета для локальной системы. С помощью функций сохранения и экспорта MSInfo32 вы узнали, как экспортировать статус системы для анализа в течение времени и использовать PowerShell для анализа доступной информации.

Как бы вы автоматизировали MSInfo32 на нескольких системах?

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