如何显示 PowerShell 对象的所有属性

有要求查找有关 Windows 计算机及其组件的信息,例如网络、应用程序和服务。通用信息模型(CIM)是一个开放源代码标准,用于操作这些组件及其信息。
微软在 CIM 基础上实现了自己的标准,称为 Windows 管理工具(WMI),用于查询和操作计算机、服务和网络信息。
使用 Get-WmiObject
显示 PowerShell 对象的所有属性
Get-WmiObject
cmdlet 是一个强大的工具,特别用于系统管理和管理任务。它允许访问 Windows 管理工具(WMI)数据,其中包含关于系统的大量信息,例如硬件、已安装软件、网络配置等的详细信息。
Get-WmiObject
的一个不太为人所知但强大的功能是使用 -List
参数。此选项使用户能够检索指定命名空间内的所有 WMI 类的列表。
Get-WmiObject -List
的基本语法如下:
Get-WmiObject -List [-Namespace <String>] [-ComputerName <String>]
关键参数包括:
-Namespace <String>
:指定 WMI 存储库命名空间。默认是root\cimv2
,其中包含大多数常用的 WMI 类。-ComputerName <String>
:目标为远程计算机。如果没有此参数,cmdlet 将在本地计算机上操作。
因此,Windows 系统管理过程变得简单得多。让我们使用 Get-WmiObject
cmdlet 检查可用的类。
Get-WmiObject -List
此命令将输出本地计算机默认命名空间中的所有可用类。默认命名空间为 Windows 计算机中的 ROOT\cimv2
。
输出:
可以指定不同于默认命名空间(ROOT\cimv2
)的命名空间。我们可以使用 -Namespace
参数更改默认命名空间。
Get-WmiObject -Namespace <custom_namespace>
检索类实例/对象信息
使用 Get-WmiObject -Class
主要是为了检索有关系统特定方面的详细信息。例如,查询 Win32_Processor
类提供有关处理器的信息,而 Win32_OperatingSystem
则揭示有关操作系统的详细信息。
此 cmdlet 的 -Class
参数允许用户查询 WMI 存储库中的特定类,这些类本质上是表示系统信息的对象模板。这些类涵盖了广泛的数据,从硬件细节到配置设置。
语法:
Get-WmiObject -Class <String> [-Namespace <String>] [-ComputerName <String>]
关键参数包括:
-Class <String>
:指定所需信息的 WMI 类。-Namespace <String>
:可选。指定 WMI 存储库命名空间(默认是root\cimv2
)。-ComputerName <String>
:可选。将命令指向远程计算机。
可供使用的 WMI 类有数百个。我们可以检索给定类的信息,如下所示。
Get-WmiObject -Class Win32_computersystem
在这里,我们正在检索 Win32_computersystem
类的信息。它返回 Win32_computersystem
对象及其属性,这些属性包含关于计算机系统的所有信息,如下所示。
输出中显示的属性数量有限。Win32_computersystem
对象包含比这些更多的属性。
我们可以使用 Format-List
cmdlet 显示检索到的对象的所有属性。
使用 Format-List
Cmdlet 显示属性
Format-List
可以与其他命令的输出管道相连,以格式化结果。此 cmdlet 可以以可读格式显示指定的或所有检索到的 WMI 对象的属性。
语法:
Get-WmiObject -Class Win32_computersystem | Format-List -Property Name, Model, Manufacturer
让我们为 Win32_computersystem
实例指定一些属性。
Format-List [-Property <PropertyName[]>]
:将输出格式化为列表。-Property <PropertyName[]>
:(可选)指定要显示的属性。如果省略,则显示所有属性。
输出:
Get-WmiObject
返回 Win32_computersystem
对象的默认属性。然后,输出将通过管道操作符(|
)传递到 Format-List
命令。
我们可以将 -Property
参数传递给 Format-List
cmdlet。这样将使用给定的三个属性过滤最终输出。
有时,检查指定 WMI 对象的所有可用属性和值非常重要。在这种情况下,您需要使用 -Property *
来检索所有可用的属性及其值。
*
表示所有属性。
Get-WmiObject -Class Win32_computersystem | Format-List -Property *
输出:
输出包含 Win32_computersystem
对象的所有可用属性及其值。我们可以省略上述命令中的 -Property
参数并写成。
Get-WmiObject -Class Win32_computersystem | Format-List *
上述命令应该显示与上面相同的输出。
结论
在对 PowerShell 的 Get-WmiObject
的探索中,我们发现了它在 Windows 系统管理中的关键作用。-List
参数使用户能够枚举所有 WMI 类,帮助识别相关数据源。
集中于 -Class
,我们展示了它在检索详细系统信息方面的精确性,以 Win32_ComputerSystem
为例。增加 Format-List
增强了输出可读性,这在处理大量属性列表时至关重要。
为了加深您的知识,可以深入了解各种 WMI 类,例如 Win32_Processor
或 Win32_OperatingSystem
。将 Get-WmiObject
纳入脚本可以简化系统管理任务。
作为一个多功能工具,Get-WmiObject
适用于初学者和经验丰富的用户,体现了它在 PowerShell 中对各种 IT 任务和自动化的重要性。
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.