Технология windows management instrumentation
Post on 12-Feb-2016
60 Views
Preview:
DESCRIPTION
TRANSCRIPT
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
top related