你曾经为在计算机系统上创建系统信息报告而苦恼吗?收集系统详细信息可能看起来很困难,但Microsoft System Information Tool(MSInfo32)可以快速收集所有这些信息!
在这篇文章中,您将迅速掌握生成和查看系统信息报告的方法。继续阅读以了解更多信息!
先决条件
对于本教程,您可以使用任何版本的Windows 10。从命令行读取系统报告需要PowerShell。本教程使用Windows 10版本21H1构建19043和PowerShell v7.1。
查看系统信息报告
检索有关系统的详细信息的第一步是打开MSInfo32工具。
要找到该工具,请在开始菜单中搜索MSInfo32,并确保单击以管理员身份运行选项。
当MSInfo32未以管理员身份运行时,它无法正确更新其内部信息缓存,有些驱动程序可能会显示为停止,而实际上并非如此。
一旦工具打开,它将呈现给您一个报告,一个自动生成的报告。您将在系统摘要视图中看到计算机的硬件摘要。在左侧,您将看到各个部分的分类,进一步细分每个部分。

保存MSInfo32报告
也许您正准备对系统进行硬件更改,并希望保存系统信息报告以供以后比较或报告。使用MSInfo32,您有两个选项可以保存该信息:保存和导出。接下来您将了解它们。
您可以点击文件 → 保存将信息保存为一个名为NFO的文件,也就是系统信息文件。NFO文件是基于XML的文件,稍后可以由MSInfo32工具打开以在相同的组织格式中查看。

下面是NFO XML文件的示例。
您也可以点击文件 → 导出,将信息保存为TXT纯文本文件,这样可能更容易阅读,但不能稍后通过系统信息工具打开。

下面您将看到MSInfo32导出的文本文件格式的示例。
从MSInfo32导出报告的脚本
现在您知道如何从MSInfo32生成系统信息报告,那么您将如何从命令行生成NFO或TXT报告呢?也许您正在创建一个脚本,需要一种快速的方式来检索硬件信息。
以下是使用命令行生成NFO和TXT报告的两种不同选项。
您可以找到大量关于MSInfo32的过时文章,在其中可能会看到诸如
/categories
、/category
、/pch
和/showcategories
之类的选项。这些选项仅适用于Windows XP,不适用于Windows 10。
这个第一个例子演示了在运行命令的同一目录中生成TXT报告,正如你在下面的截图中所看到的。
即使在命令行中运行时,也会弹出一个窗口,你可以在其中看到系统信息在生成报告之前被刷新。

这个第二个例子演示了生成NFO报告,这次是通过指定报告将被保存的目录来完成的。请注意,在运行命令之前,目录必须存在。否则,它将悄悄失败。
虽然任何文件扩展名都可以使用,因为系统信息报告导出是一个NFO文件,/nfo
选项,习惯上使用.nfo作为报告的扩展名。
通过PowerShell读取NFO文件
在本教程中,您已经学会了如何生成和导出MSInfo32报告。但你来找亚当自动化的原因是有原因的,所以你将学会如何自动化这个过程。
保存的NFO报告可以通过文件→打开菜单在MSInfo32中打开和查看。问题是:当自动化信息检索时,图形界面并不理想。由于NFO文件保存为XML文件,PowerShell可以解析XML文件并检索信息。
要读取XML报告文件,请打开PowerShell窗口并运行Get-Content
,如下面的截图所示。 [XML]
允许PowerShell读取XML文本并将其转换为PowerShell对象。最后,将结果保存到$Report
变量中。生成的命令如下所示。

$Report
variable. 也许您需要检索报告生成时正在运行的服务列表。由于MSInfo32报告包含了这些内容,您可以通过SelectNodes()
方法检索列表。
SelectNodes()
方法使用XPath。XPath是用于XML的查询语言。本文不涉及制作复杂的XPath查询。
XPath查询'//Category[@name="Software Environment"]/Category[@name="Services"]/Data'
将作为示例。下面显示了其各部分,以便您理解并为多种情况进行调整。
//Category[@name="Software Environment"]
– 返回整个文档中名称为“Software Environment”的任何Category节点,由前面的双斜杠表示。/Category[@name="Services"]
– 返回先前返回的“Software Environment”节点下的具有名称“Services”的Category节点。/Data
– 返回先前返回的“Services”节点下的子Data节点。
上面的示例结构展示了当运行MSInfo32时我们看到的自动生成的系统报告。您可以根据您在其中看到的部分进行构建。
将XPath查询//Category[@name="Software Environment"]/Category[@name="Services"]/Data
传递给下面显示的$Report
对象上的SelectNodes()
方法将所有窗口服务作为XML节点返回。由于XML节点未显示预期的输出(服务Name
、DisplayName
和State
),下面的代码创建一个PSCustomObject
并使用Format-Table
将输出格式化以适合在屏幕上显示。

以下是如何使用XPath查询和PowerShell查找有关系统报告显示类别的信息的另一个示例。XPath查询本身与之前的查询非常相似,但这次是查找组件和显示类别。

结论
在本文中,您已经学会了如何使用MSInfo32为本地系统生成全面的系统报告。通过MSInfo32的保存和导出功能,您学会了如何导出系统状态以进行长时间分析,并使用PowerShell分析可用信息。
如何在多个系统上自动化 MSInfo32?