Windows távfelügyelet és WMI
A Windows Remote Management a Windows Management Instrumentation (WMI és MI) által közzétett adatok lekérésére használható. WMI-adatokat olyan szkriptekkel vagy alkalmazásokkal szerezhet be, amelyek a WinRM Scripting API- vagy a Winrm parancssori eszközén keresztül használják.
A WinRM támogatja a legtöbb ismert WMI-osztályt és -műveletet, beleértve a beágyazott objektumokat is. A WinRM a WMI használatával adatokat gyűjthet erőforrásokról vagy a Windows-alapú operációs rendszerek erőforrásairól. Ez azt jelenti, hogy a vállalaton belüli objektumokról, például lemezekről, hálózati adapterekről, szolgáltatásokról vagy folyamatokról a meglévő WMI-osztályokkeresztül szerezhet be adatokat. A szabványos WMI-IPMI-szolgáltatóelérhető hardveradatokat is elérheti.
WMI-erőforrás azonosítása
A WMI-osztályokat erőforrásként hivatkozhat a WinRM-ben és a WS-Management protokollban: egy felügyelt entitástípusra, például szolgáltatásra vagy lemezre.
A WMI-osztályokat vagy metódusokat egy URI-azonosítja, ugyanúgy, mint bármely más erőforrás a WS-Management protokoll használatakor. Az URI megadhat egy WMI-erőforrást (osztályt), egy WMI-műveletet (metódust), vagy azonosíthatja az osztály egy adott példányát üzenetekben, hálózaton keresztül küldött üzenetekben. További információ: erőforrás-URI-k.
A WMI-osztályok URI-előtagjának létrehozása
Az URI-előtag rögzített részt és WMI-névteret tartalmaz. Például a Windows Server URI előtagja, amely tartalmazza az előtag rögzített részét, a következő: http://schemas.microsoft.com/wbem/wsman/1/wmi/<WmiNamespace>
. Ez lehetővé teszi, hogy az URI-előtag bármilyen WMI-névtérhez létrejönjön. Például a root\alapértelmezett WMI-névtér eléréséhez használja a következő URI-előtagot: http://schemas.microsoft.com/wbem/wsman/1/wmi/root/default/
.
A wmi-osztályok többsége a root\cimv2 névtérben található. Az osztályok és példányok root\cimv2 névtérben való eléréséhez használja a következő URI-előtagot: http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/
. További információ: erőforrás-URI-k.
Teljes URI létrehozása WMI-osztályokhoz
Az Winrm parancssori eszközhöz vagy parancsfájlhoz megadott URI az előtagból és az erőforrás-specifikációból áll.
Az alábbi eljárás azt ismerteti, hogyan hozhat létre erőforrás-URI-t WMI-osztály lekéréséhez vagy számbavételi művelethez.
Egy WMI-osztály erőforrás-URI-jának létrehozása
Kezdje a WS-Management protokollséma használatát jelző előtaggal.
https://schemas.microsoft.com/wbem/wsman/1
A WMI-osztályok erőforrás-URI előtagja mindig ugyanaz. További információ: URI-előtagok.
Adja hozzá a WMI-névteret az előtaghoz.
http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/
Adja hozzá az osztály nevét.
http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service
Egy tulajdonság értékének beállításához vagy egy adott metódus meghívásához adja hozzá az osztályhoz szükséges kulcsértéket vagy értékeket.
http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=Winmgmt
Ha üresen hagyja a kulcsértéket, az eredeti tulajdonságértéket nem fogja módosítani.
Jegyzet
Ha üresen hagyja a kulcsértéket, a tulajdonság értéke a NULL lesz.
WMI-erőforrás keresése a WinRM használatával
WMI-adatokat a parancssori eszközzel, a Winrm vagy a WinRM Scripting API-használó Visual Basic-szkripttel szerezhet be. Az erőforrás megkereséséhez nem használ WMI-elérési utat. Ehelyett átalakítja a WMI-névteret és a hierarchiát egy URI-.
A WMI-osztály WinRM URI-ja két részből áll: a URI előtagból és a elérni kívánt osztályból.
A következő URI például a Session.Enumerate metódushoz adható meg a számítógépen található összes szolgáltatás listázásához. Az URI előtag http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/
, az osztály pedig Win32_Service.
strResourceUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_CurrentTime"
A WMI-ben egy erőforrás vagy osztály összes példányának adatait többféleképpen listázhatja:
Az erőforrás összes példányának lekérdezése.
Set colServices = objWMIService.ExecQuery("Select * from Win32_Service")
Hívás SWbemServices.InstancesOf vagy SWbemObject.Instances_.
Set colServices = InstancesOf("Win32_Service")
A WinRM-ben egy módon listázhatja az erőforrás összes példányát: Session.Enumerate.
strResource = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service"
Set colServices = objSession.Enumerate( strResource )
WMI-erőforrás adott példányának keresése
A WMI-ben kijelölhet egy osztály egy adott példányát a kulcstulajdonságok értékeinek megadásával, vagy a tulajdonságértékek listájával egyező példány lekérdezésével. A kulcstulajdonságok wmi-kulcs-minősítőrendelkeznek.
Az osztály egy adott példányát többféleképpen is beszerezheti:
Hívás Session.Enumerate a szűrővel és nyelvjárási paraméterekkel lekérdezés létrehozásához.
RemoteComputer = "servername.domain.com" strDialect = "http://schemas.microsoft.com/wbem/wsman/1/WQL" strResource = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/*" Set objWsman = CreateObject("Wsman.Automation") Set objSession = objWsman.CreateSession("https://" & RemoteComputer) strFilter = "SELECT * FROM Win32_Share WHERE Name='Admin$'" Set objResultSet = objSession.Enumerate(strResource, strFilter, strDialect)
Hívás SWbemServices.Get. Az Session.Getesetében meg kell adnia egy vagy több konkrét kulcsértéket, amelyet kérdőjel (?) előz meg.
Egy adott példány URI formátuma
http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/WMI_Class?Key1=Value
.strResourceUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=winmgmt"
Egy WMI-osztály több kulccsal is rendelkezhet. A kulcsnév-érték párokat "+" jel választja el egymástól. Ebben az esetben a formátum a következő:
http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Key1=Value1+Key2=Value2
.Az egytonos WMI-objektumok lekérésére vonatkozó WinRM-szintaxis eltér a WMI-től. A singleton egy WMI-osztály, amely úgy van definiálva, hogy csak egy példány legyen engedélyezve. Win32_CurrentTime vagy Win32_WMISetting egy WMI-egyenrangú osztályra mutatnak be példákat.
Az egytonos WMI-szintaxis az alábbi VBScript-kód példában látható.
Set TimeObject = objWMIService.Get("Win32_CurrentTime=@")
Az alábbi példa a WinRM singleton szintaxisát mutatja be, amely nem használja a "@" kifejezést.
strResourceUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_CurrentTime"
-választó hozzáadása ResourceLocator vagy IWSManResourceLocator objektumhoz.
Az alábbi VBScript-kód példája bemutatja, hogyan használhat választót a Win32_Processoregy adott példányának lekéréséhez.
strUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Processor" Set objWsman = CreateObject("Wsman.Automation") Set Session = objWsman.CreateSession Set Locator = objWsman.CreateResourceLocator(strUri) Locator.AddSelector "DeviceID", "CPU0"