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

  1. 使用 Get-WmiObject 显示 PowerShell 对象的所有属性
  2. 检索类实例/对象信息
  3. 使用 Format-List Cmdlet 显示属性
  4. 结论
如何显示 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

输出:

获取-WmiObject

可以指定不同于默认命名空间(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 对象及其属性,这些属性包含关于计算机系统的所有信息,如下所示。

获取-WmiObject -Class

输出中显示的属性数量有限。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 *

输出:

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_ProcessorWin32_OperatingSystem。将 Get-WmiObject 纳入脚本可以简化系统管理任务。

作为一个多功能工具,Get-WmiObject 适用于初学者和经验丰富的用户,体现了它在 PowerShell 中对各种 IT 任务和自动化的重要性。

Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

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.

相关文章 - PowerShell Object