MSInfo32: Ein einfacher Weg, einen Windows-Systembericht zu generieren

Haben Sie Probleme, einen Systeminformationsbericht über Ihr Computersystem zu erstellen? Das Sammeln von Systemdetails mag schwierig erscheinen, aber das Microsoft System Information Tool (MSInfo32) erledigt die Sammlung dieser Informationen im Handumdrehen!

In diesem Artikel lernen Sie, wie Sie schnell und einfach Systeminformationsberichte generieren und anzeigen können. Lesen Sie weiter, um mehr zu erfahren!

Voraussetzungen

Für dieses Tutorial können Sie jede Version von Windows 10 verwenden. Um Systemberichte über die Befehlszeile zu lesen, benötigen Sie PowerShell. In diesem Tutorial wird Windows 10 Version 21H1 Build 19043 und PowerShell v7.1 verwendet.

Anzeigen eines Systeminformationsberichts

Der erste Schritt zum Abrufen detaillierter Informationen über Ihr System besteht darin, das MSInfo32-Tool zu öffnen.

Um das Tool zu finden, suchen Sie nach MSInfo32 im Startmenü und stellen Sie sicher, dass Sie die Option Als Administrator ausführen auswählen.

Wenn MSInfo32 nicht als Administrator ausgeführt wird, kann MSInfo32 seinen internen Informationscache nicht korrekt aktualisieren und einige Treiber können als angehalten angezeigt werden, obwohl sie es nicht sind.

Sobald das Tool geöffnet ist, wird es Ihnen einen Bericht präsentieren, der automatisch generiert wurde. Sie sehen eine Hardware-Zusammenfassung Ihres Computers in der Ansicht Systemzusammenfassung. Diese Ansicht gibt einen Überblick über die Systemkonfiguration. Links sehen Sie Kategorien, die jede Sektion weiter aufschlüsseln.

Viewing the System Summary in MSInfo32.

Speichern von MSInfo32-Berichten

Vielleicht möchten Sie hardwareseitige Änderungen an Ihrem System vornehmen und einen Systeminformationsbericht für spätere Vergleiche oder Berichte speichern. Mit MSInfo32 haben Sie zwei Möglichkeiten, diese Informationen zu speichern: Speichern und Exportieren. Das erfahren Sie als Nächstes.

Sie könnten auf Datei → Speichern klicken, um die Informationen als NFO-Datei zu speichern, die als Systeminformationsdatei bekannt ist. Die NFO-Datei ist eine auf XML basierende Datei, die später vom MSInfo32-Tool geöffnet werden kann, um sie im gleichen organisierten Format anzuzeigen.

Saving a System Information report as an NFO file.

Sie sehen unten ein Beispiel für die NFO-XML-Datei.

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

Sie könnten auch auf Datei → Exportieren klicken, um die Informationen als TXT-Plaintext-Datei zu speichern, die möglicherweise einfacher zu lesen ist, aber später nicht über das Systeminformationswerkzeug geöffnet werden kann.

Saving a Syst

Und unten sehen Sie ein Beispiel für das Textdateiformat, das MSInfo32 exportiert.

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

Skripting exportierter Berichte von MSInfo32

Jetzt, da Sie wissen, wie Sie einen Systeminformationsbericht von MSInfo32 generieren können, wie würden Sie einen NFO- oder TXT-Bericht über die Befehlszeile generieren? Vielleicht erstellen Sie ein Skript, und Sie benötigen eine schnelle Möglichkeit, Hardwareinformationen abzurufen.

Im Folgenden finden Sie zwei verschiedene Optionen, um über die Befehlszeile sowohl einen NFO- als auch einen TXT-Bericht zu generieren.

Sie können viele veraltete Artikel zu MSInfo32 finden, in denen Sie Optionen wie /categories, /category, /pch und /showcategories sehen können. Diese sind nur für Windows XP verfügbar und nicht für Windows 10 verfügbar.

Dieses erste Beispiel zeigt die Generierung eines TXT-Berichts im gleichen Verzeichnis, in dem der Befehl ausgeführt wird, wie Sie im folgenden Screenshot sehen können.

MSInfo32 /report report.txt

Sogar beim Ausführen über die Befehlszeile öffnet sich ein Fenster, in dem Sie sehen können, wie die Systeminformationen aktualisiert werden, bevor der Bericht generiert wird.

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

Dieses zweite Beispiel zeigt die Generierung des NFO-Berichts, diesmal durch Angabe des Verzeichnisses, in dem der Bericht gespeichert wird. Beachten Sie, dass das Verzeichnis vorhanden sein muss, bevor der Befehl ausgeführt wird. Andernfalls schlägt er still fehl.

MSInfo32 /nfo c:\ata\report.nfo

Obwohl jede Dateierweiterung funktioniert, da der Export des Systeminformationsberichts eine NFO-Datei ist, /nfo-Option, schreibt die Konvention vor, .nfo als Dateierweiterung für den Bericht zu verwenden.

Lesen von NFO-Dateien über PowerShell

In diesem Tutorial haben Sie gelernt, wie Sie MSInfo32-Berichte generieren und exportieren. Aber Sie sind aus einem Grund zu Adam the Automator gekommen, also werden Sie lernen, den Prozess zu automatisieren.

Gespeicherte NFO-Berichte können in MSInfo32 über das File → Open-Menü geöffnet und angezeigt werden. Das Problem ist: Eine grafische Benutzeroberfläche ist nicht ideal, wenn Sie die Informationsabfrage automatisieren. Da NFO-Dateien als XML-Dateien gespeichert werden, kann PowerShell XML-Dateien analysieren und diese Informationen abrufen.

Um die XML-Berichtsdatei zu lesen, öffnen Sie ein PowerShell-Fenster und führen Sie Get-Content aus, wie im folgenden Screenshot gezeigt. Das [XML] ermöglicht es PowerShell, den XML-Text zu lesen und in PowerShell-Objekte umzuwandeln. Speichern Sie schließlich das Ergebnis in der Variable $Report. Der resultierende Befehl ist unten zu sehen.

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

Vielleicht müssen Sie die Liste der Dienste abrufen, die zum Zeitpunkt der Berichterstellung ausgeführt wurden. Da MSInfo32-Berichte dies enthalten, rufen Sie die Liste über die Methode SelectNodes() ab.

Die Methode SelectNodes() verwendet XPath. XPath ist eine Abfragesprache für XML. Das Erstellen komplexer XPath-Abfragen fällt nicht in den Rahmen dieses Artikels.

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

Die XPath-Abfrage '//Category[@name="Software Environment"]/Category[@name="Services"]/Data' dient als Beispiel. Ihre Teile werden unten aufgeführt, damit Sie sie verstehen und für verschiedene Szenarien anpassen können.

  • //Category[@name="Software Environment"] – Gibt einen Category-Knoten im gesamten Dokument zurück, der durch das vorangestellte Doppel-Slash-Symbol angezeigt wird, mit dem Namen „Softwareumgebung“.
  • /Category[@name="Services"] – Gibt den Category-Knoten unter dem zuvor zurückgegebenen Knoten „Softwareumgebung“ zurück, der den Namen „Dienste“ hat.
  • /Daten – Gibt das untergeordnete Datenknoten unter dem zuvor zurückgegebenen Knoten „Dienste“ zurück.

Die obige Beispielstruktur zeigt den automatisch generierten Systembericht, den wir beim Ausführen von MSInfo32 sehen. Sie können ihn anpassen, indem Sie ihn entsprechend dem Abschnitt erstellen, den Sie dort sehen.

Das Übergeben der XPath-Abfrage //Category[@name="Software Environment"]/Category[@name="Services"]/Data an die SelectNodes()-Methode des unten gezeigten $Report-Objekts gibt alle Windows-Dienste als XML-Knoten zurück. Da die XML-Knoten keine erwartete Ausgabe anzeigen (der Dienst Name, Anzeigename und Zustand), erstellt der folgende Code ein PSCustomObject und formatiert die Ausgabe so, dass sie auf dem Bildschirm mit Format-Table passt.

# Die unten gezeigte XPath-Abfrage wird sich je nach den Daten, die Sie extrahieren möchten, ändern. Sie folgt nicht immer diesem Muster.
$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.

Im Folgenden finden Sie ein zusätzliches Beispiel dafür, wie Sie eine XPath-Abfrage und PowerShell verwenden können, um Informationen zur Kategorie „Systembericht anzeigen“ zu finden. Die XPath-Abfrage selbst ähnelt sehr den vorherigen, sucht aber dieses Mal nach den Kategorien „Komponenten“ und „Anzeige“.

# Die XPath-Abfrage unten wird sich je nach den zu extrahierenden Daten ändern, sie folgt nicht immer dieser Konvention
$Report.SelectNodes('//Category[@name="Components"]/Category[@name="Display"]/Data') | ForEach-Object -Begin {
	# Erstellen Sie eine Objektsammlung, um eine Sammlung von Geräten zu halten
	$Objects = [System.Collections.ArrayList]@()
	# Das temporäre Objekt wird verwendet, um die Namen und Werte eines einzelnen Geräts zu halten
	$Object = @()
} -Process {
	# Wenn der Elementname nicht leer ist, was auf ein neues Gerät hinweist, fügen Sie dann den Namen und den Wert zum temporären $Object-Array hinzu.
  # Der Grund, warum dies nicht in einer benutzerdefinierten Hashtabelle sein kann, ist, dass der Name dupliziert sein kann, was in einer Hashtabelle nicht erlaubt ist
  If (-Not [String]::IsNullOrWhiteSpace($PSItem.Item.innerText)) {
    $Object += [PSCustomObject]@{
      "Name"  = $PSItem.Item.innerText
      "Value" = $PSItem.Value.innerText
    }
  } Else {
		# Sobald ein leerer Elementname gefunden wird, fügen Sie dies zur Gesamtliste der Geräte hinzu
    $Objects.Add($Object)
		# Setzen Sie das einzelne Geräteobjekt zurück
    $Object = @()
  }
} -End {
	# Senden Sie nur die Sammlung von Geräteobjekten weiter durch die Pipeline
	$Objects
} | Format-Table -AutoSize
Results of the XML query against the Display Components list.

Schlussfolgerung

In diesem Artikel haben Sie gelernt, wie MSInfo32 eine bequeme Möglichkeit bietet, einen umfassenden Systembericht für ein lokales System zu erstellen. Mit den Speicher- und Exportfunktionen von MSInfo32 haben Sie gelernt, wie Sie den Systemstatus exportieren, um ihn im Laufe der Zeit zu analysieren, und PowerShell verwenden, um die verfügbaren Informationen zu analysieren.

Wie würden Sie MSInfo32 auf mehreren Systemen automatisieren?

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