Технология windows management instrumentation

54

Upload: shayla

Post on 12-Feb-2016

59 views

Category:

Documents


0 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Технология  Windows Management Instrumentation
Page 2: Технология  Windows Management Instrumentation

Microsoft TechDays http://www.techdays.ru

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

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

Microsoft TechDays http://www.techdays.ru

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

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

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

Console.WriteLine(na.MACAddress);}

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

Microsoft TechDays http://www.techdays.ru

В омут

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

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

Microsoft TechDays http://www.techdays.ru

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

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

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

Заключение

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

Microsoft TechDays http://www.techdays.ru

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

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

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

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”

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

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

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

Microsoft TechDays http://www.techdays.ru

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

SNMP

DMI

Other

Protocol

Protocol

Protocol

Data format

Data format

Data format

Системы

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

Microsoft TechDays http://www.techdays.ru

SNMP

DMI

Other

Protocol

Protocol

Protocol

Data format

Data format

Data format

Системы

WMI

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

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

Microsoft TechDays http://www.techdays.ru

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

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

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

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

Microsoft TechDays http://www.techdays.ru

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

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

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

Заключение

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

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

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

Microsoft TechDays http://www.techdays.ru

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

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

КлючСсылкаAssociation

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

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

Microsoft TechDays http://www.techdays.ru

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

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

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

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"

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

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

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

Microsoft TechDays http://www.techdays.ru

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

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

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

Заключение

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

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)

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

Microsoft TechDays http://www.techdays.ru

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

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

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

Microsoft TechDays http://www.techdays.ru

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

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

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

Заключение

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

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

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

Microsoft TechDays http://www.techdays.ru

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

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

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

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

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

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

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

Как использовать 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();

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

Microsoft TechDays http://www.techdays.ru

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

ManagementBaseObjectProperties

ManagementObject InvokeMethod()

ManagementClass GetInstancesGetSubclasses()GetRelatedClasses()

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

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

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);}

}

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

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

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();

}

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

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

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

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

drive_d.Put();

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

Microsoft TechDays http://www.techdays.ru

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

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

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

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

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();

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

Microsoft TechDays http://www.techdays.ru

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

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

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

Microsoft TechDays http://www.techdays.ru

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

NetworkAdapter

ComponentClass

FieldsProperties

AutoCommitCreationClassNameIsSpeedNullMACAddressManagementClassNameManufacturerNetConnectionStatusNetworkAddressesSpeedStaticScopeSystemProperties

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

Nested Types

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

Microsoft TechDays http://www.techdays.ru

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

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

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

Заключение

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

Как позволить 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;

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

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

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

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

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

Microsoft TechDays http://www.techdays.ru

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

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

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

Заключение

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

Microsoft TechDays http://www.techdays.ru

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

Режимы – coupled и decoupledDecoupled

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

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

.NET Framework 3.5

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

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

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

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"; }}

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

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; } }

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

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; } }

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

Microsoft TechDays http://www.techdays.ru

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

ManagementTaskМетод WMI

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

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

Microsoft TechDays http://www.techdays.ru

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

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

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

Microsoft TechDays http://www.techdays.ru

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

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

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

Microsoft TechDays http://www.techdays.ru

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

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

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

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

InstrumentationManager.RegisterType(typeof(MyProvider));

Instrumentation.UnregisterType(typeof(MyProvider));

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

Microsoft TechDays http://www.techdays.ru

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

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

Microsoft TechDays http://www.techdays.ru

WMI2.0 Provider

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

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

Microsoft TechDays http://www.techdays.ru

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

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

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

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

Microsoft TechDays http://www.techdays.ru

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

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

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

Заключение

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

Microsoft TechDays http://www.techdays.ru

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

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

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

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

Microsoft TechDays http://www.techdays.ru