1

我正在使用 PowerShell 2.0 并尝试从 Win32_ShadowCopy 获取可能的方法。

现在,当我使用时,Get-WmiObject -list Win32_ShadowCopy | Get-Member我得到:

   TypeName: System.Management.ManagementClass#ROOT\cimv2\Win32_ShadowCopy

Name                MemberType    Definition
----                ----------    ----------
Name                AliasProperty Name = __Class
Create              Method        System.Management.ManagementBaseObject Cre...
...

但如果我使用Get-WmiObject Win32_ShadowCopy | Get-Member我得到:

   TypeName: System.Management.ManagementObject#root\cimv2\Win32_ShadowCopy

Name                MemberType   Definition
----                ----------   ----------
Revert              Method       System.Management.ManagementBaseObject Reve...
Caption             Property     System.String Caption {get;set;}
...

现在我不明白。为什么我会得到 2 个看似不同的课程?我希望这两个命令的结果相同。我可以找到-list文档中的内容,但找不到没有-list开关的默认行为。有人愿意澄清吗?

4

2 回答 2

2

这是来自关于列表的获取帮助。

-List [] 指定是否检索和显示在 Namespace 参数中指定的 WMI 存储库命名空间中的 WMI 类的名称。此 cmdl 不使用 HKEY_LOCAL_MACHINE\ SOFTWARE\Microsoft\WBEM\Scripting 注册表项中的默认命名空间注册表项来确定默认命名空间。如果您指定 List 参数而不是 Namespace 参数,则默认使用 root\CIMV2 命名空间。

Required?                    false
Position?                    named
Default value
Accept pipeline input?       false
Accept wildcard characters?  false

为您的脚本

Get-WmiObject -list Win32_ShadowCopy

等于:

Get-WmiObject -list -class Win32_ShadowCopy

这意味着您要列出名称为 Win32_ShadowCopy 的类。

Get-WmiObject Win32_ShadowCopy

等于:

Get-WmiObject -Class Win32_ShadowCopy

它返回指定类的对象。

于 2013-02-04T02:11:14.680 回答
1

Get-WmiObject 默认将返回给定类的实例。另一方面,Get-WmiObject -List 将返回类本身。后者主要在使用通配符时有用(例如,列出默认的所有类 - root\cimv2 命名空间,名称为 Disk,您可以这样做Get-WmiObject -Class *Disk* -List)。

于 2013-02-03T22:41:12.120 回答