Egy másik lehetőség, hogy még a régi WMI-os cmdleteket használod, pl.
Get-Wmiobject Win32_Processor | select -First 1 -Property __PATH | fl
Erre valami hasonlót kell kapni:
__PATH : \\gepnev\root\cimv2:Win32_Processor.DeviceID="CPU0"
Itt a DeviceID a kulcsa a Win32_Processor osztálynak.
Ha egy bonyolultabb esetet akarunk nézni:
Get-WmiObject msft_netfirewallrule -Namespace root/standardcimv2 | select -First 1 -Property __path | fl
Válasz:
__PATH : \\IRFSERVER\root\standardcimv2:MSFT_NetFirewallRule.CreationClassName="MSFT|FW|FirewallRule|vm-monitoring-icmpv6",PolicyRuleName="",SystemCreationClassName="",SystemName=""
De ugyanezt adta volna vissza a Get-CimClass is:
(Get-CimClass MSFT_NetFireWallRule -Namespace root/standardcimv2).CimClassProperties | select name, qualifiers
A válaszban ez van benne:
CreationClassName {key, MaxLen, Override, read}
PolicyRuleName {key, MaxLen, Override, read}
SystemCreationClassName {key, MaxLen, Propagated, Override...}
SystemName {key, MaxLen, Propagated, Override...}
Tehát ennek 4 tulajdonságból áll a kulcsa. A lekérdezés során mindegyiket meg kell adni, még akkor is, ha üres az értéke a kulcsnak:
Get-WSManInstance -ResourceURI cimv2/MSFT_NetFireWallRule -SelectorSet @{CreationClassName="MSFT|FW|FirewallRule|vm-monitoring-icmpv6";__cimnamespace="root/standardcimv2";PolicyRuleName="";SystemCreationClassName="";SystemName=""}
Ez szépen vissza is adja az adott szabályt. Két dologra kell figyelni:
- A ResourceURI-ban a cimv2 aliast, tehát a DMTF szabványos URI-ját használtam.
- Mivel ez nem a root/cimv2 névtérben van, ezért a selectorok között meg kell adni a __cimnamespace kiválasztót is (ahogy az a gyakorlati anyagban is szerepel).