Windows-os osztályok selectorai

0 votes
asked Apr 10, 2013 in IRF tantárgy by anonymous  

Sziasztok,

egy Windows-os osztálynak hogyan lehet megnézni a Selectorait, hogy mivel lehet egy példányt azonosítani?

Köszönöm

3 Answers

0 votes
answered Apr 11, 2013 by micskeiz (2,873 points)  
 
Best answer

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:

  1. A ResourceURI-ban a cimv2 aliast, tehát a DMTF szabványos URI-ját használtam.
  2. 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).
+1 vote
answered Apr 10, 2013 by szucsmark (46 points)  

A következő utasítással lehet (jelen esetben a CIM_ProtocolEndpointra):

(Get-CimClass CIM_ProtocolEndpoint -Namespace root/standardcimv2).CimClassProperties | select Name, Qualifiers

Itt ahol a Qualifiers értékénél key-t látsz, az beletartozik a selectorai közé.

commented Apr 10, 2013 by anonymous  
Igen, de ezek a legtöbb osztálynál nálam üresen jönnek át. Ezzel mit lehet kezdeni?
commented Apr 11, 2013 by micskeiz (2,873 points)  
Melyik osztálynál és melyik része jön vissza üresen? Nekem a válaszban lévő lekérdezés a gyorsan kipróbált 3-4 osztályra szépen működik.
commented Apr 11, 2013 by anonymous  
Már wsman-nal Linux oldalon próbálom és például az MSFT_NetIPAddress vagy az ősosztálya CIM_IPProtocolEndpoint (Linux-os provider szépen kitöltötte) is üresen hagyja a SystemCreationClassName, CreationClassName és SystemName mezőket, egyedül a Name-re ad vissza valamilyen kódot.
 Ha ki akarok választani egy konkrét példányt, hogy annak a kapcsolatait lekérdezzem és így mondjuk csak a Name-et használnám, akkor a wsman egy > jelet rak a következő sorba, ez azt jelenti, hogy még szüksége van valamilyen információra?
Tehát a kulcs mezőket sikerült megtalálni, csak egy példány azonosítása nem wsman-nal.
0 votes
answered Apr 11, 2013 by anonymous  

Szia,

sikerült azzal amit írtál wsman-ból, köszönöm.

Ide teszem a wsman parancsot is, hátha még másnak is tanulságos lesz:

wsman -h 192.168.80.130 --auth basic -u user -p pass get 'http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/MSFT_NetFireWallRule?CreationClassName="MSFT|FW|FirewallRule|vm-monitoring-icmpv6",__cimnamespace="root/standardcimv2",PolicyRuleName="",SystemCreationClassName="",SystemName=""' -N root/standardcimv2

én is a dmtf szabványos urit használom és utána adom meg a névteret

Remélem sikerül majd a többi osztályra is alkalmaznom.

Köszi még egyszer!

...