Технология Windows Management Instrumentation

Post on 12-Feb-2016

55 views 0 download

Tags:

description

Технология Windows Management Instrumentation. Марат Бакиров Эксперт по разработке ПО Microsoft Россия , Екатеринбург http://blogs.msdn.com/mbakirov. В омут с головой или из пушки по воробьям. Сколько нужно усилий чтобы получить Мак Адрес сетевой карты? - PowerPoint PPT Presentation

Transcript of Технология Windows Management Instrumentation

Microsoft TechDays http://www.techdays.ru

Технология Windows Management InstrumentationМарат БакировЭксперт по разработке ПОMicrosoft Россия, Екатеринбургhttp://blogs.msdn.com/mbakirov

Microsoft TechDays http://www.techdays.ru

В омут с головой или из пушки по воробьям.

Сколько нужно усилий чтобы получить Мак Адрес сетевой карты?6 кликов и 3 строчки кода (не считая using).

foreach (NetworkAdapter na in NetworkAdapter.GetInstances()){

Console.WriteLine(na.MACAddress);}

Microsoft TechDays http://www.techdays.ru

В омут

ДемоМарат БакировЭксперт по разработке ПОMicrosoft Россия, Екатеринбург

Microsoft TechDays http://www.techdays.ru

СодержаниеВведение

Зачем это нужно и что это дает.Как это устроено?

Как с этим работать?Встроенные инструменты.NET - Как использовать WMI?.NET - Как позволить WMI использовать нас?Как позволить WMI использовать нас еще лучше.

Заключение

Microsoft TechDays http://www.techdays.ru

Зачем это нужно – текущие проблемы

Возрастающая сложность системВозрастающее количество элементов управляемых одним человекомОтсутствие у ItPro знаний о специфике каждой конкретной программы или системы.Большое количество связей между системами

Microsoft TechDays http://www.techdays.ru

Microsoft Visionwww.microsoft.com/business/dsiDynamic Systems Initiative (DSI) is about building software that enables knowledge of an IT system to be created, modified, transferred, and operated on throughout the life cycle of that system. What is a Manageable Application?“an application that can be easily installed, monitored, diagnosed and corrected by IT operations, using standard IT Pro tools, without intervention from developers”

Microsoft TechDays http://www.techdays.ru

Windows Event Logs

IT Pro

Windows PowerShell

MMC 3.0

Web/App.config

VS MMD

Application

Windows Performance Logs

Installer

Group Policy

Management Pack

WMI

Архитектура DFO

Microsoft TechDays http://www.techdays.ru

Большое количество связей между системами.

SNMP

DMI

Other

Protocol

Protocol

Protocol

Data format

Data format

Data format

Системы

Microsoft TechDays http://www.techdays.ru

SNMP

DMI

Other

Protocol

Protocol

Protocol

Data format

Data format

Data format

Системы

WMI

Большое количество связей между системами.

Microsoft TechDays http://www.techdays.ru

Что дает WMI?Единая точка входа для управления и мониторинга чего угодноРасширяемаяСетеваяСкриптуемая Активная (предоставляет события)

Microsoft TechDays http://www.techdays.ru

А где это вообще используется?

Почти везде+2300 WMI classes, + 30000 properties exposed (Windows 2003)

В стандартной поставке , начиная с Windows 2000

Win 95/98 – можно скачатьWindows NT 4.0 = ± 15 providersWindows 2000 = ± 29 providersWindows 2003 = 95 providersWindows 2008 server = +- 106 providers

WMI широко используется, и внедряется во многие инструменты управления.

SC Operations Manager, SMS, HP OpenView

Microsoft TechDays http://www.techdays.ru

СодержаниеВведение

Зачем это нужно и что это дает.Как это устроено?

Как с этим работать?Встроенные инструменты.NET - Как использовать WMI?.NET - Как позволить WMI использовать нас?Как позволить WMI использовать нас еще лучше.

Заключение

Microsoft TechDays http://www.techdays.ru

Архитектура WMI

SNMP WMI ProviderWMI

Providers

ManagedObjects

SNMP Managed entity

Cimv2 WMI Provider

Windows (Win32)Managed entity

Any WMI Provider

Any Managed entity(Native Code)

Native C/C++1

System.Management

.NET Client Applications

Windows Forms Web Forms

COM Inter-Op

C/C++Client

WMI COM API

WMI Consumers(ManagementApplications)

Scripts

3COM/DCOM

WMI Scripting API

POWERSHELL

WMIRepository

WMI Core(CIM Object Manager)WMI Infrastructure

2COM/DCOM

.NET WMI Provider

.NET Managed App/entity

System.Management.Instrumentation

COM Inter-Op

.NET C#, VB.NET, etc

Microsoft TechDays http://www.techdays.ru

ВозможностиПространства именКлассы

Дочерние классыСвойства

КлючСсылкаAssociation

МетодыСобытияЗапросы

Microsoft TechDays http://www.techdays.ru

Пространства имен

\\Server1\Root\Cimv2:Win32_LogicalDisk.DeviceId='C:'

Microsoft TechDays http://www.techdays.ru

АссоциацияType of ClassNaming

Win32_ShareToDirectoryProperties

ShareSharedElement

Win32_DirectoryProperties

Name

Win32_ShareProperties

Name

\\Server\root\cimv2:Win32_Share.Name=“Temp"

\\Server\root\cimv2:Win32_Directory.Name="C:\\Temp"

Microsoft TechDays http://www.techdays.ru

Примеры WQLSELECT * FROM Win32_LogicalDiskSELECT installDate, Manufacturer FROM Win32_Adapter SELECT * FROM CIM_MediaAccessDevice WHERE __CLASS = 'Win32_CDROMDrive'" SELECT * FROM __InstanceCreationEvent WITHIN 60 WHERE TargetInstance ISA "Win32_LogicalDisk“Select * from __InstanceCreationEvent Where TargetInstance ISA 'Win32_NTLogEvent‘SELECT * FROM __ InstanceCreationEvent WHERE TargetInstance ISA ’Win32_PrintJob’ GROUP WITHIN 30 BY TargetInstance.Owner HAVING NumberOfEvents > 5

Microsoft TechDays http://www.techdays.ru

СодержаниеВведение

Зачем это нужно и что это дает.Как это устроено?

Как с этим работать?Встроенные инструменты.NET - Как использовать WMI?.NET - Как позволить WMI использовать нас?Как позволить WMI использовать нас еще лучше.

Заключение

Microsoft TechDays http://www.techdays.ru

Встроенные инструментыWMI Control MMC Snap InWMI StudioWMI BrowserODBC WMI provider (WQL)WMI event viewerVisual StudioPowerShell – Get-WmiObjectWMI Console (wmic.exe)

Microsoft TechDays http://www.techdays.ru

Встроенные инструменты

ДемоМарат БакировЭксперт по разработке ПОMicrosoft Россия, Екатеринбург

Microsoft TechDays http://www.techdays.ru

СодержаниеВведение

Зачем это нужно и что это дает.Как это устроено?

Как с этим работать?Встроенные инструменты.NET - Как использовать WMI?.NET - Как позволить WMI использовать нас?Как позволить WMI использовать нас еще лучше.

Заключение

Microsoft TechDays http://www.techdays.ru

Как использовать WMITechnology Area Classes/interfaces/configuration elementsGathering WMI class information ManagementObject, ManagementClassQuerying for data SelectQuery, ManagementObjectSearcher,

WqlObjectQuery, ObjectQueryQuerying for data asynchronously ManagementObjectCollection,

ManagementOperationObserverExecuting methods ManagementBaseObjectExecuting methods

asynchronouslyManagementOperationObserver

Receiving events WqlEventQuery, ManagementEventWatcher

Receiving events asynchronously EventArrivedEventArgs, EventArrivedEventHandler, CompletedEventArgs, CompletedEventHandler

Connecting to a remote computer ConnectionOptions, ManagementScope Creating data providers Instance, InstrumentationClassAttribute,

InstrumentedAttributeCreating event providers BaseEvent, InstrumentationRegistering a provider ManagementInstaller

Microsoft TechDays http://www.techdays.ru

Программа для доступа к WMI информации

ДемоМарат БакировЭксперт по разработке ПОMicrosoft Россия, Екатеринбург

Как использовать WMI gодключение

ManagementScope scope = new ManagementScope( "\\\\FullComputerName\\root\\cimv2");

ManagementPath p = new ManagementPath( "\\\\ComputerName\\root" + "\\cimv2:Win32_LogicalDisk.DeviceID=\"C:\"");

Как использовать WMI Подключение

ConnectionOptions options = new ConnectionOptions();

if (!MainForm.isLocalServerName(computer.Text)){

options.Username = user.Text;options.Password = password.Text;password.Text = "";if (domain.Text != ""){

options.Authority = "NTLMDOMAIN:" + domain.Text;}

}

//Удаленный компьютерManagementScope scope = new ManagementScope("\\\\" + computer.Text + "\\root\\cimv2", options);scope.Connect();

Microsoft TechDays http://www.techdays.ru

Основные обьекты

ManagementBaseObjectProperties

ManagementObject InvokeMethod()

ManagementClass GetInstancesGetSubclasses()GetRelatedClasses()

Получаем Классы

ManagementClass class = new ManagementClass(scope,new ManagementPath(strClassName), new ObjectGetOptions())….foreach (PropertyData data in mgmClass.Properties){

if (!table.Columns.Contains(data.Name)){

DataColumn column = table.Columns.Add(data.Name);

column.DataType = typeof(String);}

}

Получаем Обьекты

22.04.2023

ManagementObjectCollection objects = mgmClass.GetInstances();table.Rows.Clear();foreach (ManagementObject mgmObject in objects){

DataRow newRow = table.NewRow();foreach (PropertyData data in mgmObject.Properties){

newRow[data.Name] = data.Value.ToString();}table.Rows.Add(newRow);newRow.AcceptChanges();

}

Правим Объекты

ManagementObject drive_d = new ManagementObject(@"\\.\root\CIMV2:Win32_LogicalDisk.DeviceID=""D:""");

drive_d["VolumeName"] = "My Label";

drive_d.Put();

Microsoft TechDays http://www.techdays.ru

Правим обьекты

ДемоМарат БакировЭксперт по разработке ПОMicrosoft Россия, Екатеринбург

Подписываемся на события в коде

WqlEventQuery query = new WqlEventQuery("__InstanceCreationEvent", new TimeSpan(0,0,1), "TargetInstance isa \"Win32_Process\"");

ManagementEventWatcher watcher = new ManagementEventWatcher(query);

watcher.EventArrived += new EventArrivedEventHandler(watcher_EventArrived);watcher.Start();

ManagementBaseObject e = watcher.WaitForNextEvent();

Microsoft TechDays http://www.techdays.ru

Подписка на события

ДемоМарат БакировЭксперт по разработке ПОMicrosoft Россия, Екатеринбург

Microsoft TechDays http://www.techdays.ru

Стандартный сгенерированный класс

NetworkAdapter

ComponentClass

FieldsProperties

AutoCommitCreationClassNameIsSpeedNullMACAddressManagementClassNameManufacturerNetConnectionStatusNetworkAddressesSpeedStaticScopeSystemProperties

MethodsCommitObject (+ 1 overload)CreateInstanceDeleteGetInstances (+ 7 overloads)ResetSetPowerState

Nested Types

Microsoft TechDays http://www.techdays.ru

СодержаниеВведение

Зачем это нужно и что это дает.Как это устроено?

Как с этим работать?Встроенные инструменты.NET - Как использовать WMI?.NET - Как позволить WMI использовать нас?Как позволить WMI использовать нас еще лучше.

Заключение

Как позволить WMI использовать нас? классы[assembly: Instrumented("root\\my_net_sample_2")]

[InstrumentationClass(InstrumentationType.Abstract)]public class TopInstance : Instance

private string myProperty; [ManagedName("MyOtherName")] public string MyProperty { get { return myProperty; } set { myProperty = value; } }

leaf1a.Published = true; leaf1a.Published = false;

Как позволить WMI использовать нас? классы[assembly:Instrumented]

[InstrumentationClass(InstrumentationType.Abstract)]public class TopInstance2{}

Instrumentation.Publish(leaf1a); Instrumentation.Revoke(leaf1a);

Microsoft TechDays http://www.techdays.ru

СодержаниеВведение

Зачем это нужно и что это дает.Как это устроено?

Как с этим работать?Встроенные инструменты.NET - Как использовать WMI?.NET - Как позволить WMI использовать нас?Как позволить WMI использовать нас еще лучше.

Заключение

Microsoft TechDays http://www.techdays.ru

WMI Provider Extension v2.0Цель – увеличить масштабируемость текущей модели

Режимы – coupled и decoupledDecoupled

Приложение предоставляет провайдер самостоятельно (in-process)

CoupledWmi управляет циклом создания провайдеровИнтересные сценарии – редактирование веб config

.NET Framework 3.5

Microsoft TechDays http://www.techdays.ru

Построение провайдераNamespaces and Attributes

System.Core/System.Management [.Instrumentation]Пространство имен

Пространство имен WMI

Атрибут

using System.Management.Instrumentation

[assembly: WmiConfiguration(@"root\MicrosoftSearchSample, HostingModel = ManagementHostingModel.Decoupled, IdentifyLevel = false)]

[ManagementEntity]public class SearchProvider

Microsoft TechDays http://www.techdays.ru

Построение провайдера Defining class keys

Management KeyНе надо использовать GUIDRead only\\Server1\Root\Cimv2:Win32_LogicalDisk.DeviceId='C:'

[ManagementKey] public string Name { get { return “WebApplicationName"; }}

Microsoft TechDays http://www.techdays.ru

Построение провайдера read/write properties

ManagementConfigurationПоля или свойстваОбозначает свойство для чтения и записи [ManagementConfiguration] public bool DisplayURL { get { return Application["default_display_urls"]; } set { Application["default_display_urls"] = value; } }

Microsoft TechDays http://www.techdays.ru

Построение провайдера read only properties

ManagementProbeПоля или свойстваОбозначает свойство для чтения

[ManagementProbe] public int QueryCount { get { Application.Lock(); object Value = Application["counter"]; Application.UnLock(); return (Int32)Value; } }

Microsoft TechDays http://www.techdays.ru

Построение провайдера methods

ManagementTaskМетод WMI

[ManagementTask] public void SetSiteUrl(string site){ Application.Lock(); Application["site_to_search"] = site; Application.UnLock();}

Microsoft TechDays http://www.techdays.ru

Построение провайдера Installation

Необходим инсталляторusing System.Configuration.Install;...[System.ComponentModel.RunInstaller(true)] public class TheInstaller : DefaultManagementInstaller{}

Microsoft TechDays http://www.techdays.ru

Построение провайдера Модель провайдеров

Можно самому управлять созданием обьектов[ManagementCreate][ManagementBind][ManagementRemove][ManagementEnumerator]

Microsoft TechDays http://www.techdays.ru

Построение провайдера Публикация и отзыв decoupled провайдера

Публикация провайдера

Оттзыв провайдера

Есть также методы Register/Unregister Assembly

InstrumentationManager.RegisterType(typeof(MyProvider));

Instrumentation.UnregisterType(typeof(MyProvider));

Microsoft TechDays http://www.techdays.ru

ПримерПровайдер который умеет работать с строками и выдавать их размер!Провайдер умеет работать с любыми строками!

Microsoft TechDays http://www.techdays.ru

WMI2.0 Provider

ДемоМарат БакировЭксперт по разработке ПОMicrosoft Россия, Екатеринбург

Microsoft TechDays http://www.techdays.ru

ВыводыПоддержка записи свойств

Вызов методов

Масштабируемая модель.

Microsoft TechDays http://www.techdays.ru

СодержаниеВведение

Зачем это нужно и что это дает.Как это устроено?

Как с этим работать?Встроенные инструменты.NET - Как использовать WMI?.NET - Как позволить WMI использовать нас?Как позволить WMI использовать нас еще лучше.

Заключение

Microsoft TechDays http://www.techdays.ru

Заключение (Философия)Сценарии использования Wmi

Взять хотя бы sql server или веб приложения

PowerShell или не PowerShell?Вы еще не используете WMI?Тогда мы идем к вам.

Microsoft TechDays http://www.techdays.ru

Вопросы?

Marat Bakirovi-maratb@microsoft.com

http://blogs.msdn.com/mbakirov

Microsoft TechDays http://www.techdays.ru