MSInfo32: Een eenvoudige manier om een ​​rapport van het Windows-systeem te genereren

Heb je moeite gehad om een systeeminformatierapport op je computersysteem te maken? Het verzamelen van systeemgegevens lijkt misschien moeilijk, maar de Microsoft System Information Tool (MSInfo32) maakt snel werk van het verzamelen van al die informatie!

In dit artikel zul je snel leren hoe je systeeminformatierapporten genereert en bekijkt. Lees verder om meer te weten te komen!

Vereisten

Voor deze handleiding kun je elke versie van Windows 10 gebruiken. Het lezen van systeemrapporten vanaf de opdrachtregel vereist PowerShell. Deze handleiding gebruikt Windows 10 versie 21H1 build 19043 en PowerShell v7.1.

Het bekijken van een systeeminformatierapport

De eerste stap om gedetailleerde informatie over je systeem op te halen, is het openen van de MSInfo32-tool.

Om de tool te vinden, zoek je naar MSInfo32 in het Startmenu, en zorg ervoor dat je de optie Uitvoeren als administrator selecteert.

Wanneer MSInfo32 niet als administrator wordt uitgevoerd, kan MSInfo32 zijn interne informatiecache niet correct bijwerken, en kunnen sommige stuurprogramma’s als gestopt worden weergegeven wanneer dat niet het geval is.

Zodra de tool opent, wordt er een rapport gepresenteerd, een automatisch gegenereerd rapport. Je ziet een hardwareoverzicht van je computer in de System Summary weergave. Deze weergave geeft een algemeen overzicht van de systeemconfiguratie. Aan de linkerkant zie je categorieën, die elk onderdeel verder opsplitsen.

Viewing the System Summary in MSInfo32.

Opslaan van MSInfo32-rapporten

Misschien ben je van plan hardwarewijzigingen aan je systeem aan te brengen en wil je een systeeminformatierapport opslaan voor latere vergelijking of rapportage. Met MSInfo32 heb je twee opties om die informatie op te slaan: opslaan en exporteren. Je leert er zo meer over.

Je kunt op Bestand → Opslaan klikken om de informatie op te slaan als een NFO-bestand, dat bekend staat als een systeeminformatiebestand. Het NFO-bestand is een op XML gebaseerd bestand dat later kan worden geopend door de MSInfo32-tool om te bekijken in hetzelfde georganiseerde formaat.

Saving a System Information report as an NFO file.

Hieronder zie je een voorbeeld van het NFO XML-bestand.

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

Je kunt ook op Bestand → Exporteren klikken, wat de informatie opslaat als een TXT-tekstbestand dat misschien gemakkelijker te lezen is maar niet kan worden geopend via de Systeeminformatietool later.

Saving a Syst

En hieronder zie je een voorbeeld van het tekstbestandsformaat dat MSInfo32 exporteert.

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

Scripts exporteren rapporten van MSInfo32

Nu je weet hoe je een systeeminformatierapport van MSInfo32 kunt genereren, hoe zou je dan een NFO- of TXT-rapport genereren vanaf de opdrachtregel? Misschien maak je een script en heb je een snelle manier nodig om hardware-informatie op te halen.

Hieronder staan twee verschillende opties met de opdrachtregel om zowel een NFO- als een TXT-rapport te genereren.

Je kunt tal van verouderde artikelen vinden over MSInfo32 waarin je mogelijk opties ziet zoals /categories, /category, /pch en /showcategories. Deze zijn alleen beschikbaar op Windows XP en niet beschikbaar voor Windows 10.

Dit eerste voorbeeld toont het genereren van een TXT-rapport in dezelfde map waarin het commando wordt uitgevoerd, zoals je kunt zien in de volgende schermafbeelding.

MSInfo32 /report report.txt

Zelfs bij het uitvoeren vanaf de opdrachtregel verschijnt er een venster waarin je de systeeminformatie ziet worden vernieuwd voordat het rapport wordt gegenereerd.

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

Dit tweede voorbeeld toont het genereren van het NFO-rapport, deze keer door de map op te geven waar het rapport zal worden opgeslagen. Wees ervan bewust dat de map moet bestaan voordat het commando wordt uitgevoerd. Anders zal het stil mislukken.

MSInfo32 /nfo c:\ata\report.nfo

Hoewel elke bestandsextensie zal werken, aangezien het exporteren van systeeminformatierapporten een NFO-bestand is, dicteert de conventie het gebruik van .nfo als de rapportextensie.

Het lezen van NFO-bestanden via PowerShell

Gedurende deze tutorial heb je geleerd hoe je MSInfo32-rapporten genereert en exporteert. Maar je kwam naar Adam the Automator met een reden, dus je zult leren het proces te automatiseren.

Opgeslagen NFO-rapporten kunnen worden geopend en bekeken in MSInfo32 via het Bestand → Openen-menu. Het probleem is echter dat een grafische interface niet ideaal is bij het automatiseren van informatie ophalen. Aangezien NFO-bestanden als XML-bestanden worden opgeslagen, kan PowerShell XML-bestanden parseren en die informatie ophalen.

Om het XML-rapportbestand te lezen, opent u een PowerShell-venster en voert u Get-Content uit, zoals weergegeven in de onderstaande schermafbeelding. De [XML] stelt PowerShell in staat om de XML-tekst te lezen en om te zetten naar PowerShell-objecten. Sla ten slotte het resultaat op in de variabele $Report. Het resulterende commando kan hieronder worden gezien.

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

Mogelijk moet u de lijst met services ophalen die op het moment van rapportage werden uitgevoerd. Aangezien MSInfo32-rapporten dat bevatten, haalt u de lijst op via de SelectNodes()-methode.

De SelectNodes()-methode gebruikt XPath. XPath is een querytaal voor XML. Het maken van complexe XPath-query’s valt buiten de reikwijdte van dit artikel.

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

De XPath-query '//Category[@name="Software Environment"]/Category[@name="Services"]/Data' zal als voorbeeld dienen. De onderdelen ervan worden hieronder getoond, zodat u deze kunt begrijpen en aanpassen aan verschillende scenario’s.

  • //Category[@name="Software Environment"] – Geeft elke categorieknooppunt in het hele document terug, aangegeven door de voorafgaande dubbele slash, met de naam “Software Environment”.
  • /Category[@name="Services"] – Geeft het categorieknooppunt onder het eerder teruggegeven knooppunt “Software Environment” terug met de naam “Services”.
  • /Gegevens – Geeft de onderliggende Gegevensknooppunt terug onder de eerder geretourneerde “Services”-knooppunt.

Het bovenstaande voorbeeldstructuur wordt weergegeven in het automatisch gegenereerde systeemrapport dat we zien wanneer MSInfo32 wordt uitgevoerd. U kunt het aanpassen door te bouwen volgens de sectie die u in die ziet.

Het doorgeven van de XPath-query //Categorie[@name="Software Omgeving"]/Categorie[@name="Services"]/Gegevens naar de SelecteerKnopen()-methode op het $Rapport-object hieronder weergegeven, retourneert alle Windows-services als XML-knooppunten. Aangezien de XML-knooppunten geen verwachte uitvoer weergeven (de service Naam, Weergavenaam en Toestand), maakt de onderstaande code een PSCustomObject en formatteert de uitvoer om op het scherm te passen met Format-Table.

# De onderstaande XPath-query zal veranderen op basis van de gegevens die u wilt extraheren, het zal niet altijd deze conventie volgen
$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.

Hieronder wordt een aanvullend voorbeeld getoond van hoe u een XPath-query en PowerShell kunt gebruiken om informatie te vinden over de categorie Systeemrapportweergave. De XPath-query zelf is zeer vergelijkbaar met die van ervoor, maar zoekt dit keer naar de Componenten en Weergavecategorieën.

# De XPath-query hieronder zal veranderen afhankelijk van welke gegevens u wilt extraheren; het zal niet altijd deze conventie volgen.
$Report.SelectNodes('//Category[@name="Components"]/Category[@name="Display"]/Data') | ForEach-Object -Begin {
	# Maak een Objects-collectie aan om alle apparaten te bevatten
	$Objects = [System.Collections.ArrayList]@()
	# Het tijdelijke object dat wordt gebruikt om de namen en waarden van een enkel apparaat vast te houden
	$Object = @()
} -Process {
	# Als de Item-naam niet leeg is, wat aangeeft dat er een nieuw apparaat komt, voeg dan de Naam en Waarde toe aan de tijdelijke $Object-array.
  # De reden dat dit niet in een aangepaste hashtable kan staan, is omdat de Naam mogelijk dubbel is, wat niet is toegestaan in een hashtable
  If (-Not [String]::IsNullOrWhiteSpace($PSItem.Item.innerText)) {
    $Object += [PSCustomObject]@{
      "Name"  = $PSItem.Item.innerText
      "Value" = $PSItem.Value.innerText
    }
  } Else {
		# Zodra een lege Item-naam wordt aangetroffen, voeg dit toe aan de algehele Objects-lijst van apparaten
    $Objects.Add($Object)
		# Herstel het enkele apparaatobject
    $Object = @()
  }
} -End {
	# Stuur alleen de verzameling Device-objecten verder in de pijplijn
	$Objects
} | Format-Table -AutoSize
Results of the XML query against the Display Components list.

Conclusie

In dit artikel heb je geleerd hoe MSInfo32 een handige manier biedt om een uitgebreid systeemrapport te genereren voor een lokaal systeem. Met de opslag- en exportfuncties van MSInfo32 heb je geleerd hoe je de systeemstatus kunt exporteren om in de loop van de tijd te analyseren en hoe je PowerShell kunt gebruiken om de beschikbare informatie te analyseren.

# Definieer de lijst met computers
$computers = “Computer1”, “Computer2”, “Computer3”

# Loop door elke computer in de lijst
foreach ($computer in $computers) {
# Genereer de naam van het uitvoerbestand op basis van de computernaam
$outputFile = “C:\Path\To\Output\$computer_MSInfo32.txt”

# Voer MSInfo32 uit en sla de resultaten op in het uitvoerbestand
msinfo32.exe /nfo $outputFile

# Geef aan dat het proces is voltooid
Write-Host “MSInfo32 op $computer voltooid. Resultaten opgeslagen in $outputFile”
}

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