cmdlet中的-List属性Get-WmiObject

时间:2018-03-09 01:29:52

标签: windows powershell wmi get-wmiobject

我知道-List获取WMI存储库名称空间中WMI类的名称,但我不明白它在以下上下文中的含义:

(Get-WmiObject -list Win32_ShadowCopy).Create("C:\","ClientAcessible")

1 个答案:

答案 0 :(得分:2)

注意: CIM cmdlet已取代WMI cmdlet ,但答案有点类似,但Get-CimInstance不支持{ {1}},但是有一个专用的-List cmdlet,调用类方法的最简单方法是始终使用专用的Get-CimClass cmdlet。

Invoke-CimMethod

使用(Get-WmiObject -list Win32_ShadowCopy).Create("C:\","ClientAcessible") 参数来访问-List ,以便能够 通过Win32_ShadowCopy方法实例化,这需要参数

相比之下,许多WMI类的实例需要参数,因此简单的.Create()调用通常就足够了; e.g:

Get-WmiObject <class-name>

Ansgar Wiechers指出获取WMI类的更简单(更快)的方法是将其名称强制转换为加速器Get-WmiObject Win32_ComputerSystem # no arguments needed; returns instance directly ,因此等效于{基于{1}}的命令是:

[wmiclass]

那就是说, 在WMI 调用方法的方式越多,就是使用
-List
即可。同样,基于([wmiclass] Win32_ShadowCopy).Create("C:\","ClientAcessible") 的命令的等价物是:

Invoke-WmiMethod

关于-List参数常规目的:

让我们问一下PowerShell自己的帮助系统,也可以online

Invoke-WmiMethod Win32_ShadowCopy -Name Create -ArgumentList "C:\", "ClientAcessible"

换句话说: -List的目的是列出(枚举)WMI类,可选择按类名模式过滤

  • 如果您未明确使用PS> Get-Help Get-WmiObject -Parameter List -List [<SwitchParameter>] Gets the names of the WMI classes in the WMI repository namespace that is specified by the Namespace parameter. If you specify the List parameter, but not the Namespace parameter, Get-WmiObject uses the Root\Cimv2 namespace by default. This cmdlet does not use the Default Namespace registry entry in the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\Scripting registry key to determine the default namespace. ,则会假设-List

  • 您的案例中的第一个位置参数 - -NameSpace - 绑定到ROOT\Cimv2Win32_ShadowCopy)参数,在这种情况下,它充当过滤器

    • 由于-ClassName literal 类名,因此只匹配该类,但您也可以使用通配符(见下文)。

,例如,要查找名称中包含单词-Class的所有WMI类(在名称空间Win32_ShadowCopy中),请使用:

ROOT\Cimv2