WMI и по-новият му брат CIM могат да бъдат използвани за управление на Windows машини във вашата среда. Но знаете ли разликата между тях? Присъединете се към нас, докато се вглеждаме.
Не забравяйте да прочетете предишните статии в серията:
И останете настроени за останалата част от серията през цялата седмица.
WMI означава Windows Management Instrumentation. Думата "Инструментация" се отнася до факта, че WMI ви позволява да получите информация за вътрешното състояние на вашия компютър, подобно на инструментите на таблото в автомобила ви може да извлича и показва информация за състоянието на вътрешните компоненти на вашите автомобили.
WMI се състои от хранилище, което съдържа класове, които представляват компоненти, които могат да се управляват във вашата машина. С това имаме предвид само защото WMI има клас Win32_Battery, не означава, че вашата машина съдържа батерия. След това тези класове могат да бъдат изпробвани за информация на местно ниво или дори в мрежа, използвайки език на заявката, много подобен на SQL, наречен WQL. Въпреки това, WMI е известно, че е много ненадеждна, най-вече поради факта, че се основава на RPC (Remote Procedure Calls), които правят някои луди неща с пристанищата, които избират да комуникират.
Започвайки с Windows 8 и Server 2012, WMI се прекратява в полза на Общия информационен модел или CIM за кратко. Единствената разлика между WMI и CIM е транспортните протоколи, които използват. Докато WMI изпълнява заявки, като използва дистанционни процедури, CIM използва HTTP, което изглежда има огромна разлика. На гръбнака те все още говорят за едно и също хранилище на информация.
Най-бързият и лесен начин за проучване на информацията, която ви е достъпна чрез WMI, е да вземете копие на всеки безплатен WMI Object Browser. Харесва ни това. След като го изтеглите, го задействайте и ще имате графичен интерфейс, за да разгледате класовете WMI.
Ако искате да научите нещо за конфигурацията на диска на компютъра, натиснете клавишната комбинация Ctrl + F, за да отворите поле за търсене, след това въведете "logicaldisk" и натиснете enter.
Веднага това ще ви отведе до класа Win32_LogicalDisk.
В долната половина на приложението можете да видите, че имаме два случая на класа.
След като получим класа, който търсим, запитването от PowerShell е направо напред.
Get-WmiObject -Query "SELECT * FROM Win32_LogicalDisk"
Не съм виждал този синтаксис за известно време с хора, които предпочитат да използват новия параметризиран синтаксис.
Get-WmiObject - клас Win32_LogicalDisk
Ако искате да получите информацията от друг компютър в мрежата, можете просто да използвате параметъра ComputerName.
Get-WmiObject - Клас Win32_LogicalDisk -ComputerName Viper -Credential viper \ administrator
Имайки предвид, че CIM е достъпен само за Windows 8 и Server 2012, напредвайки напред, това определено е начинът да вървим.
Get-CimInstance-КласName Win32_LogicalDisk
Има и завършване на раздела за параметъра -ClassName при използване на Get-CimInstance, което показва, че в бъдеще това ще е мястото, в което усилията на Microsoft ще бъдат съсредоточени.
Всъщност WMI е разработен от напълно отделен екип в Microsoft, но впоследствие е поет от хората, които отговарят за PowerShell. Те бяха тези, които забелязаха, че ще бъде много трудно да се изчисти катастрофата, която WMI изостана. В опит да се поправи ситуацията, те се опитват да направят WMI и CIM по-достъпни, като напишат обвивки, които използват WMI и CIM под качулката. Единственият начин да проверите дали една cmdlet е обвивка е чрез разглеждане на документацията. Например, cmdlet Get-Hotfix е обвивка за класа Win32_QuickFixEngineering, както се вижда в документацията.
Това означава, че можете да получите спешни корекции на отдалечени машини, като използвате командата Get-HotFix вместо заявка за WMI.
Get-HotFix -ComputerName localhost
Така че там го имаш. Просто помнете, че ако има специална cmdlet, винаги ще искате да я използвате, последвано от CIM, ако не съществува cmdlet. И накрая, ако всичко останало е неуспешно или имате по-стари машини във вашата среда, ще искате да използвате WMI. Това е всичко, което имам за този път. Ще се видим утре за още по-забавно PowerShell.