我知道-List
获取WMI存储库名称空间中WMI类的名称,但我不明白它在以下上下文中的含义:
(Get-WmiObject -list Win32_ShadowCopy).Create("C:\","ClientAcessible")
答案 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]
那就是说,
-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\Cimv2
(Win32_ShadowCopy
)参数,在这种情况下,它充当过滤器
-ClassName
是 literal 类名,因此只匹配该类,但您也可以使用通配符(见下文)。,例如,要查找名称中包含单词-Class
的所有WMI类(在名称空间Win32_ShadowCopy
中),请使用:
ROOT\Cimv2