Обязательно прочитайте предыдущие статьи в серии:
- Узнайте, как автоматизировать Windows с помощью PowerShell
- Обучение использованию командлетов в PowerShell
- Обучение использованию объектов в PowerShell
- Форматирование, фильтрация и сравнение обучения в PowerShell
- Научитесь использовать Remoting в PowerShell
И оставайтесь настроенными для остальной части серии всю неделю.
Вступление
WMI - это инструментарий управления Windows. Слово «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, - это захватить копию любого бесплатного браузера объектов WMI. Нам это нравится. После загрузки запустите его, и у вас появится графический интерфейс для просмотра классов WMI.
В нижней части приложения вы можете видеть, что у нас есть два экземпляра класса.
Get-WmiObject -Query “SELECT * FROM Win32_LogicalDisk”
Get-WmiObject –Class Win32_LogicalDisk
Get-WmiObject -Class Win32_LogicalDisk -ComputerName Viper –Credential viperadministrator
Использование CIM
Помните, что CIM доступен только в Windows 8 и Server 2012, продвигаясь вперед, это определенно путь.
Get-CimInstance –ClassName Win32_LogicalDisk
Фактически, WMI был разработан полностью отдельной командой в Microsoft, но впоследствии был захвачен людьми, отвечающими за PowerShell. Это были те, кто заметил, что будет очень сложно очистить беспорядок WMI. В попытке исправить ситуацию они пытаются сделать WMI и CIM более доступными, написав командлеты wrapper, которые используют WMI и CIM под капотом. Единственный способ проверить, является ли командлет оболочкой, - это посмотреть на документацию. Например, командлет Get-Hotfix является оболочкой класса Win32_QuickFixEngineering, как видно из документации.
Get-HotFix –ComputerName localhost