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

これはリストについての get-help からのものです。

-List [] Namespace パラメーターで指定された WMI リポジトリ名前空間内の WMI クラスの名前を取得して表示するかどうかを指定します。HKEY_LOCAL_MACHINE\ SOFTWARE\Microsoft\WBEM\Scripting レジストリ キーの Default Namespace レジストリ エントリは、このコマンドレットによって既定の名前空間を決定するために使用されません。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 に答える