我知道-List
在 WMI 存储库命名空间中获取 WMI 类的名称,但我真的不明白它在以下上下文中的含义:
(Get-WmiObject -list Win32_ShadowCopy).Create("C:\","ClientAcessible")
我知道-List
在 WMI 存储库命名空间中获取 WMI 类的名称,但我真的不明白它在以下上下文中的含义:
(Get-WmiObject -list Win32_ShadowCopy).Create("C:\","ClientAcessible")
注意:CIM cmdlet 已取代 WMI cmdlet,但答案在某种程度上适用,只是Get-CimInstance
不支持-List
,但有一个专用Get-CimClass
cmdlet,调用类方法的最简单方法是始终使用专用Invoke-CimMethod
cmdlet。
(Get-WmiObject -list Win32_ShadowCopy).Create("C:\","ClientAcessible")
使用-List
参数来访问Win32_ShadowCopy
类,以便能够通过它的方法实例化.Create()
它,这需要参数。
相比之下,许多 WMI 类的实例不需要参数,因此一个简单的Get-WmiObject <class-name>
调用通常就足够了;例如:
Get-WmiObject Win32_ComputerSystem # no arguments needed; returns instance directly
Ansgar Wiechers指出,获取 WMI 类的一种更简单(更快)的方法是将其名称转换为类型 Accelerator[wmiclass]
,因此与-List
基于 - 的命令等效的是:
([wmiclass] Win32_ShadowCopy).Create("C:\","ClientAcessible")
也就是说,在 WMI类上调用方法更类似于 PowerShell 的方式是使用
Invoke-WmiMethod
. 同样,-List
基于 - 的命令的等价物是:
Invoke-WmiMethod Win32_ShadowCopy -Name Create -ArgumentList "C:\", "ClientAcessible"
至于参数的一般用途-List
:
让我们问一下 PowerShell 自己的帮助系统,也可以在线获取:
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
的目的是列出(枚举)WMI 类,可选择按类名模式过滤:
如果您没有明确使用-NameSpace
,ROOT\Cimv2
则假定。
第一个位置参数 -Win32_ShadowCopy
在您的情况下 - 绑定到-ClassName
( -Class
) 参数,在这种情况下充当filter。
Win32_ShadowCopy
是一个文字类名,只有那个类被匹配,但你也可以使用通配符(见下文)。ROOT\Cimv2
例如,要查找名称中包含单词的所有 WMI 类(在命名空间中) shadow
,请使用:
PS> Get-WmiObject -List -Class *shadow*
NameSpace: ROOT\cimv2
Name Methods Properties
---- ------- ----------
Win32_ShadowProvider {} {Caption, CLSID, Description, ID...}
Win32_ShadowCopy {Create, Revert} {Caption, ClientAccessible, Count, Description...}
Win32_ShadowContext {} {Caption, ClientAccessible, Description, Differential...}
Win32_ShadowStorage {Create} {AllocatedSpace, DiffVolume, MaxSpace, UsedSpace...}
Win32_ShadowVolumeSupport {} {Antecedent, Dependent}
Win32_ShadowFor {} {Antecedent, Dependent}
Win32_ShadowOn {} {Antecedent, Dependent}
Win32_ShadowBy {} {Antecedent, Dependent}
Win32_ShadowDiffVolumeSupport {} {Antecedent, Dependent}