Get-WmiObject
获取 Windows Management Instrumentation (WMI) 类的实例或可用类的相关信息。
语法
Get-WmiObject
[-Class] <String>
[[-Property] <String[]>]
[-Filter <String>]
[-Amended]
[-DirectRead]
[-AsJob]
[-Impersonation <ImpersonationLevel>]
[-Authentication <AuthenticationLevel>]
[-Locale <String>]
[-EnableAllPrivileges]
[-Authority <String>]
[-Credential <PSCredential>]
[-ThrottleLimit <Int32>]
[-ComputerName <String[]>]
[-Namespace <String>]
[<CommonParameters>]
Get-WmiObject
[[-Class] <String>]
[-Recurse]
[-Amended]
[-List]
[-AsJob]
[-Impersonation <ImpersonationLevel>]
[-Authentication <AuthenticationLevel>]
[-Locale <String>]
[-EnableAllPrivileges]
[-Authority <String>]
[-Credential <PSCredential>]
[-ThrottleLimit <Int32>]
[-ComputerName <String[]>]
[-Namespace <String>]
[<CommonParameters>]
Get-WmiObject
[-Amended]
[-DirectRead]
-Query <String>
[-AsJob]
[-Impersonation <ImpersonationLevel>]
[-Authentication <AuthenticationLevel>]
[-Locale <String>]
[-EnableAllPrivileges]
[-Authority <String>]
[-Credential <PSCredential>]
[-ThrottleLimit <Int32>]
[-ComputerName <String[]>]
[-Namespace <String>]
[<CommonParameters>]
Get-WmiObject
[-Amended]
[-AsJob]
[-Impersonation <ImpersonationLevel>]
[-Authentication <AuthenticationLevel>]
[-Locale <String>]
[-EnableAllPrivileges]
[-Authority <String>]
[-Credential <PSCredential>]
[-ThrottleLimit <Int32>]
[-ComputerName <String[]>]
[-Namespace <String>]
[<CommonParameters>]
Get-WmiObject
[-Amended]
[-AsJob]
[-Impersonation <ImpersonationLevel>]
[-Authentication <AuthenticationLevel>]
[-Locale <String>]
[-EnableAllPrivileges]
[-Authority <String>]
[-Credential <PSCredential>]
[-ThrottleLimit <Int32>]
[-ComputerName <String[]>]
[-Namespace <String>]
[<CommonParameters>]
说明
从 PowerShell 3.0 开始,此 cmdlet 已被 Get-CimInstance
取代。
Get-WmiObject
cmdlet 获取 WMI 类的实例或可用的 WMI 类的相关信息。 若要指定远程计算机,请使用 ComputerName 参数。 如果指定了 List 参数,则 cmdlet 将获取有关指定的命名空间中可用的 WMI 类的信息。 如果指定了 Query 参数,则 cmdlet 将运行 WMI 查询语言 (WQL) 语句。
Get-WmiObject
cmdlet 不使用 Windows PowerShell 远程处理功能来执行远程操作。
即使你的计算机不符合 Windows PowerShell 远程处理的要求,或者计算机未配置为在 Windows PowerShell 中进行远程处理,也可以使用 Get-WmiObject
cmdlet 的 ComputerName 参数。
从 Windows PowerShell 3.0 开始,Get-WmiObject
所返回对象的 __Server 属性具有 PSComputerName 别名。 从而可以更轻松地在输出和报告中包含源计算机名称。
示例
示例 1:获取本地计算机上的进程
此示例获取本地计算机上的进程。
Get-WmiObject -Class Win32_Process
示例 2:获取远程计算机上的服务
此示例获取远程计算机上的服务。 ComputerName 参数指定远程计算机的 IP 地址。 默认情况下,当前用户帐户必须是远程计算机上 Administrators 组的成员。
Get-WmiObject -Class Win32_Service -ComputerName 10.1.4.62
示例 3:获取本地计算机的根目录下或默认命名空间中的 WMI 类
此示例获取本地计算机的根目录下或默认命名空间中的 WMI 类。
Get-WmiObject -Namespace "root/default" -List
示例 4:获取多台计算机上的某个已命名服务
此示例获取 ComputerName 参数值指定的计算机上的 WinRM 服务。
Get-WmiObject -Query "select * from win32_service where name='WinRM'" -ComputerName Server01, Server02 |
Format-List -Property PSComputerName, Name, ExitCode, Name, ProcessID, StartMode, State, Status
PSComputerName : SERVER01
Name : WinRM
ExitCode : 0
Name : WinRM
ProcessID : 844
StartMode : Auto
State : Running
Status : OK
PSComputerName : SERVER02
Name : WinRM
ExitCode : 0
Name : WinRM
ProcessID : 932
StartMode : Auto
State : Running
Status : OK
管道运算符 (|
) 将输出发送给 Format-List
cmdlet,这会将 PSComputerName 属性添加到默认输出。 PSComputerName 是 Get-WmiObject
所返回对象的 __Server 属性的别名。 此别名是在 PowerShell 3.0 中引入的。
示例 5:停止远程计算机上的服务
此示例停止远程计算机上的 WinRM 服务。 Get-WmiObject
获取 Server01 上的 WinRM 服务对象的实例。 然后,它在该对象上调用 Win32_Service WMI 类的 StopService 方法。
(Get-WmiObject -Class Win32_Service -Filter "name='WinRM'" -ComputerName Server01).StopService()
这等效于使用 Stop-Service
cmdlet。
示例 6:获取本地计算机上的 BIOS
此示例从本地计算机获取 BIOS 信息。 Format-List
cmdlet 的 Property 参数用于在列表中显示所返回对象的所有属性。 默认情况下,只会显示在 Types.ps1xml
配置文件中定义的属性子集。
Get-WmiObject -Class Win32_Bios | Format-List -Property *
Status : OK
Name : Phoenix ROM BIOS PLUS Version 1.10 A05
Caption : Phoenix ROM BIOS PLUS Version 1.10 A05
SMBIOSPresent : True
__GENUS : 2
__CLASS : Win32_BIOS
__SUPERCLASS : CIM_BIOSElement
__DYNASTY : CIM_ManagedSystemElement
__RELPATH : Win32_BIOS.Name="Phoenix ROM BIOS PLUS Version 1.10
__PROPERTY_COUNT : 27
__DERIVATION : {CIM_BIOSElement, CIM_SoftwareElement, CIM_LogicalElement,
__SERVER : Server01
__NAMESPACE : root\cimv2
__PATH : \\SERVER01\root\cimv2:Win32_BIOS.Name="Phoenix ROM BIOS
BiosCharacteristics : {7, 9, 10, 11...}
BIOSVersion : {DELL - 15, Phoenix ROM BIOS PLUS Version 1.10 A05}
BuildNumber :
CodeSet :
CurrentLanguage : en|US|iso8859-1
Description : Phoenix ROM BIOS PLUS Version 1.10 A05
IdentificationCode :
InstallableLanguages : 1
InstallDate :
LanguageEdition :
ListOfLanguages : {en|US|iso8859-1}
Manufacturer : Dell Inc.
OtherTargetOS :
PrimaryBIOS : True
ReleaseDate : 20101103000000.000000+000
SerialNumber : 8VDM9P1
SMBIOSBIOSVersion : A05
SMBIOSMajorVersion : 2
SMBIOSMinorVersion : 6
SoftwareElementID : Phoenix ROM BIOS PLUS Version 1.10 A05
SoftwareElementState : 3
TargetOperatingSystem : 0
Version : DELL - 15
Scope : System.Management.ManagementScope
Path : \\SERVER01\root\cimv2:Win32_BIOS.Name="Phoenix ROM BIOS
Options : System.Management.ObjectGetOptions
ClassPath : \\JUNE-PC\root\cimv2:Win32_BIOS
Properties : {BiosCharacteristics, BIOSVersion, BuildNumber, Caption...}
SystemProperties : {__GENUS, __CLASS, __SUPERCLASS, __DYNASTY...}
Qualifiers : {dynamic, Locale, provider, UUID}
Site :
Container :
示例 7:获取远程计算机上的服务
此示例使用 Get-WmiObject
cmdlet 的 Credential 参数获取远程计算机上的服务。 Credential 参数的值为用户帐户名称。 将提示用户输入密码。
Get-WmiObject Win32_Service -Credential FABRIKAM\administrator -ComputerName Fabrikam
注意
当面向本地计算机时,不能使用凭据。
参数
-Amended
获取或设置一个值,该值指示从 WMI 返回的对象是否应包含修正信息。 通常,修正信息是附加到 WMI 对象的可本地化信息,如对象和属性说明。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-AsJob
将命令作为后台作业运行。 使用此参数可运行需要较长时间才能完成的命令。
使用 AsJob 参数时,该命令将返回表示后台作业的对象,然后显示命令提示符。 当作业完成时,你可以继续在此会话中工作。 如果 Get-WmiObject
与 ComputerName 参数一起使用,则作业在本地计算机上创建,并且来自远程计算机的结果将自动返回本地计算机。 若要管理作业,请使用包含 Job
名词的 cmdlet。 若要获取作业结果,请使用 Receive-Job
cmdlet。
有关 Windows PowerShell 后台作业的详细信息,请参阅 about_Jobs 和 about_Remote_Jobs。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Authentication
指定用于 WMI 连接的身份验证级别。 有效值为:
-1
:Unchanged0
:Default1
:None(不执行身份验证。)2
:Connect(仅当客户端与应用程序建立了关系时才执行身份验证。)3
:Call(应用程序收到请求时只在每次调用的开始执行身份验证。)4
:Packet(对从客户端收到的所有数据执行身份验证。)5
:PacketIntegrity(所有在客户端和应用程序之间传送的数据都经过身份验证和验证。)6
:PacketPrivacy(使用其他身份验证等级的属性,并且所有数据都加密。)
类型: | AuthenticationLevel |
接受的值: | Default, None, Connect, Call, Packet, PacketIntegrity, PacketPrivacy, Unchanged |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Authority
指定用于对 WMI 连接进行身份验证的授权机构。 可以指定标准 NTLM 或 Kerberos 身份验证。 若要使用 NTLM,请将授权机构设置设为 ntlmdomain:<DomainName>
,其中 <DomainName>
标识有效的 NTLM 域名。 若要使用 Kerberos,请指定 kerberos:<DomainName>\<ServerName>
。 连接到本地计算机时不能包含授权机构设置。
类型: | String |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Class
指定 WMI 类的名称。 如果使用此参数,则 cmdlet 将检索 WMI 类的实例。
类型: | String |
别名: | ClassName |
Position: | 1 |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-ComputerName
指定用于管理操作的目标计算机。 输入一个完全限定的域名 (FQDN)、NetBIOS 名称或 IP 地址。 当远程计算机与本地计算机处于不同的域中时,必须使用完全限定的域名。
默认为本地计算机。 若要指定本地计算机,例如在计算机名称的列表中,请使用 localhost
、本地计算机名称或句点 (.
)。
指定远程计算机时,当前帐户或使用 Credential 参数指定的帐户必须具有该访问信息的适当权限。
此参数不依赖于 Windows PowerShell 远程处理,该远程处理使用 WS-Management。 即使你的计算机未配置为运行 WS-Management 远程命令,也可以使用 Get-WmiObject
的 ComputerName 参数。
类型: | String[] |
别名: | Cn |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Credential
指定有权执行此操作的用户帐户。 默认为当前用户。 键入用户名,例如 User01
、Domain01\User01
或 User@Contoso.com
。 或者输入 PSCredential 对象,例如 Get-Credential
cmdlet 返回的对象。 如果键入用户名,则将提示你输入密码。 当面向本地计算机时,不能使用凭据。
类型: | PSCredential |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-DirectRead
指定无论其基类或派生类如何,是否都要求指定类直接访问 WMI 提供程序。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-EnableAllPrivileges
在命令进行 WMI 调用之前,启用当前用户的所有权限。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Filter
指定要用作筛选器的 Where 子句。 使用 WMI 查询语言 (WQL) 的语法。
重要
请不要在参数的值中包括 Where 关键字。 例如,以下命令不使用 Where 关键字,仅返回 DeviceID 为 c:
的逻辑磁盘和名为“WinRM”的服务。
Get-WmiObject Win32_LogicalDisk -filter "DeviceID = 'c:' "
Get-WmiObject win32_service -filter "name='WinRM'"
类型: | String |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Impersonation
指定要使用的模拟级别。
此参数的可接受值为:
0
:Default。 读取默认模拟级别的本地注册表。 默认值通常设置为 Impersonate。1
:Anonymous。 隐藏调用方的凭据。2
:Identify。 允许对象查询调用方的凭据。3
:Impersonate。 允许对象使用调用方的凭据。4
:Delegate。 允许对象允许其他对象使用调用方的凭据。
类型: | ImpersonationLevel |
接受的值: | Default, Anonymous, Identify, Impersonate, Delegate |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-List
获取由 Namespace 参数指定的 WMI 存储库命名空间中的 WMI 类的名称。
如果指定了 List 参数,但未指定 Namespace 参数,则默认情况下 Get-WmiObject
将使用 Root\Cimv2 命名空间。 此 cmdlet 不使用 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\Scripting
注册表项中的 Default Namespace 注册表条目来确定默认的命名空间。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Locale
指定 WMI 对象的首选区域设置。 按 MS_<LCID>
格式输入一个值。
类型: | String |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Namespace
当 Namespace 参数与 Class 参数一起使用时,它将指定指定的 WMI 类所在的 WMI 存储库命名空间。 当此参数与 List 参数一起使用时,它将指定所收集 WMI 类信息的来源命名空间。
类型: | String |
别名: | NS |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Property
指定此 cmdlet 从中获取信息的 WMI 类属性。 输入属性名称。
类型: | String[] |
Position: | 1 |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Query
运行指定的 WMI 查询语言 (WQL) 语句。 此参数不支持事件查询。
类型: | String |
Position: | Named |
默认值: | None |
必需: | True |
接受管道输入: | False |
接受通配符: | False |
-Recurse
在当前命名空间和所有其他命名空间中搜索 Class 参数指定的类名。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-ThrottleLimit
指定可同时执行的最大 WMI 操作数。 仅当命令中使用了 AsJob 参数时,此参数才有效。
类型: | Int32 |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
输入
None
不能通过管道将输入传递给 Get-WmiObject
。
输出
PSObject or System.Management.Automation.RemotingJob
当你使用 AsJob 参数时,该 cmdlet 将返回作业对象。 否则,Get-WmiObject
返回的对象取决于 Class 参数的值。
备注
Windows PowerShell 包含 Get-WmiObject
的以下别名:
gwmi
若要访问远程计算机上的 WMI 的信息,则 cmdlet 必须在远程计算机上的本地管理员组的成员帐户下运行。 或者,可以更改远程存储库的 WMI 命名空间上的默认访问控制,以授予其他帐户访问权限。
默认情况下,只显示每个 WMI 类的部分属性。 将为每个 WMI 类显示的属性组是在 Types.ps1xml
配置文件中指定的。 若要获取某个 WMI 对象的所有属性,请使用 Get-Member
或 Format-List
cmdlet。