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

Презентация:



Advertisements
Похожие презентации
S5-1 PAT328, Section 5, September 2004 Copyright 2004 MSC.Software Corporation SECTION 5 RESULTS TITLE EDITOR.
Advertisements

© 2009 Avaya Inc. All rights reserved.1 Chapter Nine, Voic Pro in SCN Module Four – Distributed Voic Pro.
© 2006 Avaya Inc. All rights reserved. Embedded File Management and SD-Card Handling.
© 2006 Cisco Systems, Inc. All rights reserved. HIPS v Configuring Rules Configuring Windows-Only Rules.
© 2009 Avaya Inc. All rights reserved.1 Chapter Four, UMS Web Services Module One – UMS.
© 2009 Avaya Inc. All rights reserved.1 Chapter Four, UMS Web Services Module Three – Exchange 2007.
© 2002 IBM Corporation Confidential | Date | Other Information, if necessary © Wind River Systems, released under EPL 1.0. All logos are TM of their respective.
S11-1 PAT318, Section 11, March 2005 SECTION 11 ANALYSIS SETUP.
© 2006 Avaya Inc. All rights reserved. Using File Management and SD-Card Handling.
© 2009 Avaya Inc. All rights reserved.1 Chapter Three, Voic Pro Advanced Functions Module One – Text to Speech.
© 2006 Cisco Systems, Inc. All rights reserved.ISCW v IPsec VPNs Implementing the Cisco VPN Client.
© 2009 Avaya Inc. All rights reserved.1 Chapter Two, Voic Pro Components Module Two – Actions, Variables & Conditions.
© 2006 Cisco Systems, Inc. All rights reserved.ONT v Implement the DiffServ QoS Model Implementing QoS Preclassify.
S11-1PAT301, Section 11, October 2003 SECTION 11 ANALYSIS SETUP.
© Luxoft Training 2013 Annotations. © Luxoft Training 2013 Java reflection / RTTI // given the name of a class, get a "Class" object that // has all info.
Evgeniy Krivosheev Vyacheslav Yakovenko Last update: Feb, 2012 Spring Framework Module 4 – JNDI.
© 2006 Cisco Systems, Inc. All rights reserved.CIPT2 v Monitor and Manage IP Telephony Introducing Cisco Unified CallManager Serviceability.
Hibernate&EJB3 Studybook For students of university Author Sr.Java developer Dudnik Oxana.
© 2009 Avaya Inc. All rights reserved.1 Chapter Nine, Voic Pro in SCN Module Three – Backup Voic Pro.
How To Upload and Download Flies using Filezilla
Транксрипт:

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

Microsoft TechDayshttp:// Сколько нужно усилий чтобы получить Мак Адрес сетевой карты? 6 кликов и 3 строчки кода (не считая using). foreach (NetworkAdapter na in NetworkAdapter.GetInstances()) { Console.WriteLine(na.MACAddress); }

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

Microsoft TechDayshttp:// Введение Зачем это нужно и что это дает. Как это устроено? Как с этим работать? Встроенные инструменты.NET - Как использовать WMI?.NET - Как позволить WMI использовать нас? Как позволить WMI использовать нас еще лучше. Заключение

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

Microsoft TechDayshttp:// Dynamic 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 TechDayshttp:// 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

Microsoft TechDayshttp:// SNMP DMI Other Protocol Data format Системы

Microsoft TechDayshttp:// SNMP DMI Other Protocol Data format Системы WMI

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

Microsoft TechDayshttp:// Почти везде WMI classes, properties exposed (Windows 2003) В стандартной поставке, начиная с Windows 2000 Win 95/98 – можно скачать Windows NT 4.0 = ± 15 providers Windows 2000 = ± 29 providers Windows 2003 = 95 providers Windows 2008 server = providers WMI широко используется, и внедряется во многие инструменты управления. SC Operations Manager, SMS, HP OpenView

Microsoft TechDayshttp:// Введение Зачем это нужно и что это дает. Как это устроено? Как с этим работать? Встроенные инструменты.NET - Как использовать WMI?.NET - Как позволить WMI использовать нас? Как позволить WMI использовать нас еще лучше. Заключение

Microsoft TechDayshttp:// SNMP WMI Provider SNMP WMI Provider WMI Providers Managed Objects SNMP Managed entity SNMP Managed entity Cimv2 WMI Provider Cimv2 WMI Provider Windows (Win32) Managed entity Windows (Win32) Managed entity Any WMI Provider Any WMI Provider Any Managed entity (Native Code) Any Managed entity (Native Code) … Native C/C++ 1 System.Management.NET Client Applications Windows FormsWeb Forms COM Inter-Op C/C++ Client C/C++ Client WMI COM API WMI Consumers (Management Applications) Scripts 3 COM/DCOM WMI Scripting API POWER SHELL POWER SHELL WMI Repository WMI Repository WMI Core (CIM Object Manager) WMI Core (CIM Object Manager) WMI Infrastructure 2 COM/DCOM.NET WMI Provider.NET Managed App/entity System.Management. Instrumentation System.Management. Instrumentation COM Inter-Op. NET C#, VB.NET, etc

Microsoft TechDayshttp:// Пространства имен Классы Дочерние классы Свойства Ключ Ссылка Association Методы События Запросы

Microsoft TechDayshttp:// \\Server1\Root\Cimv2:Win32_LogicalDisk.DeviceId='C:'

Microsoft TechDayshttp:// Type of Class Naming Win32_ShareToDirectory Properties Share SharedElement Win32_Directory Properties Name Win32_Share Properties Name \\Server\root\cimv2:Win32_Share.Name=Temp" \\Server\root\cimv2:Win32_Directory.Name="C:\\Temp"

Microsoft TechDayshttp:// SELECT * FROM Win32_LogicalDisk SELECT 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 TechDayshttp:// Введение Зачем это нужно и что это дает. Как это устроено? Как с этим работать? Встроенные инструменты.NET - Как использовать WMI?.NET - Как позволить WMI использовать нас? Как позволить WMI использовать нас еще лучше. Заключение

Microsoft TechDayshttp:// WMI Control MMC Snap In WMI Studio WMI Browser ODBC WMI provider (WQL) WMI event viewer Visual Studio PowerShell – Get-WmiObject WMI Console (wmic.exe)

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

Microsoft TechDayshttp:// Введение Зачем это нужно и что это дает. Как это устроено? Как с этим работать? Встроенные инструменты.NET - Как использовать WMI?.NET - Как позволить WMI использовать нас? Как позволить WMI использовать нас еще лучше. Заключение

Microsoft TechDayshttp://

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

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

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 TechDayshttp:// ManagementBaseObject Properties ManagementObject InvokeMethod() ManagementClass GetInstances GetSubclasses() 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); }

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 "D:"""); drive_d["VolumeName"] = "My Label"; drive_d.Put();

Microsoft TechDayshttp:// Марат Бакиров Эксперт по разработке ПО 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 TechDayshttp:// Марат Бакиров Эксперт по разработке ПО Microsoft Россия, Екатеринбург

Microsoft TechDayshttp://

Введение Зачем это нужно и что это дает. Как это устроено? Как с этим работать? Встроенные инструменты.NET - Как использовать WMI?.NET - Как позволить 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;

[assembly:Instrumented] [InstrumentationClass(InstrumentationType.Abstract)] public class TopInstance2 { } Instrumentation.Publish(leaf1a); Instrumentation.Revoke(leaf1a);

[assembly:Instrumented] [InstrumentationClass(InstrumentationType.Event)] public class TopEvent : BaseEvent { } new TopEvent().Fire(); [InstrumentationClass(InstrumentationType.Event)] public class TopEvent2 { } Instrumentation.Fire(new TopEvent2());

Microsoft TechDayshttp:// Введение Зачем это нужно и что это дает. Как это устроено? Как с этим работать? Встроенные инструменты.NET - Как использовать WMI?.NET - Как позволить WMI использовать нас? Как позволить WMI использовать нас еще лучше. Заключение

Microsoft TechDayshttp:// Цель – увеличить масштабируемость текущей модели Режимы – coupled и decoupled Decoupled Приложение предоставляет провайдер самостоятельно (in-process) Coupled Wmi управляет циклом создания провайдеров Интересные сценарии – редактирование веб config.NET Framework 3.5

Microsoft TechDayshttp:// System.Core/System.Management [.Instrumentation] Пространство имен Пространство имен WMI Атрибут using System.Management.Instrumentation [assembly: HostingModel = ManagementHostingModel.Decoupled, IdentifyLevel = false)] [ManagementEntity] public class SearchProvider [ManagementEntity] public class SearchProvider

Microsoft TechDayshttp:// Management Key Не надо использовать GUID Read only \\Server1\Root\Cimv2:Win32_LogicalDisk.DeviceId='C :' [ManagementKey] public string Name { get { return WebApplicationName"; } [ManagementKey] public string Name { get { return WebApplicationName"; }

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

Microsoft TechDayshttp:// ManagementProbe Поля или свойства Обозначает свойство для чтения [ManagementProbe] public int QueryCount { get { Application.Lock(); object Value = Application["counter"]; Application.UnLock(); return (Int32)Value; } [ManagementProbe] public int QueryCount { get { Application.Lock(); object Value = Application["counter"]; Application.UnLock(); return (Int32)Value; }

Microsoft TechDayshttp:// ManagementTask Метод WMI [ManagementTask] public void SetSiteUrl(string site) { Application.Lock(); Application["site_to_search"] = site; Application.UnLock(); } [ManagementTask] public void SetSiteUrl(string site) { Application.Lock(); Application["site_to_search"] = site; Application.UnLock(); }

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

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

Microsoft TechDayshttp:// Публикация провайдера Оттзыв провайдера Есть также методы Register/Unregister Assembly InstrumentationManager.RegisterType(typeof(MyProvider)); Instrumentation.UnregisterType(typeof(MyProvider));

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

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

Microsoft TechDayshttp:// Поддержка записи свойств Вызов методов Масштабируемая модель.

Microsoft TechDayshttp:// Введение Зачем это нужно и что это дает. Как это устроено? Как с этим работать? Встроенные инструменты.NET - Как использовать WMI?.NET - Как позволить WMI использовать нас? Как позволить WMI использовать нас еще лучше. Заключение

Microsoft TechDayshttp:// Использовать WMI This will make your.NET application manageable by any existing WMI consumer on the market!!! Не отказываться от xml config Persist changes to.config files but expose.NET class representing content through WMI by leveraging attribution Правильно помечать классы Use properties for configuration and settings Use methods for actions Не использовать сложные свойства (1-many) Use CIM associations instead Пишите installer

Microsoft TechDayshttp:// Сценарии использования Wmi Взять хотя бы sql server или веб приложения PowerShell или не PowerShell? Вы еще не используете WMI? Тогда мы идем к вам.

Microsoft TechDayshttp:// Вопросы? Marat Bakirov

Microsoft TechDayshttp://

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