MSG 334 Creating Exchange Administrative Scripting for the Non-Programmer Susan Hill Lead Programmer...

Post on 19-Jan-2018

228 views 0 download

description

Windows Management Instrumentation (WMI) Microsoft’s implementation of WBEM Uniform access to management information Most Exchange 2003 monitoring is done through WMI

Transcript of MSG 334 Creating Exchange Administrative Scripting for the Non-Programmer Susan Hill Lead Programmer...

MSG 334Creating Exchange Administrative Scripting for the Non-Programmer Susan HillLead Programmer WriterMicrosoft Corporation

Agenda

Overview of WMIArchitectureKey Features

Code SamplesWMI in Exchange Server 2003

Windows Management Instrumentation (WMI)

Microsoft’s implementation of WBEM Uniform access to management information Most Exchange 2003 monitoring is done through WMI

Overview Of WMI

Based on Distributed Management Task Force Standards – CIM, WBEM Designed to reduce TCO of Windows Systems Extensible, object-oriented APIEnables system-wide and application-level observation and control

Consistent schema, queries, methods, events, and API

WMI Architecture

WMIWMI

ConsumersConsumers

RegistryRegistry PerformancePerformanceCountersCounters

Other WMI Other WMI ProvidersProvidersExchangeExchange DirectoryDirectory

Windows Windows Management Management

InstrumentationInstrumentationServiceService

How WMI Works in Exchange 2003 Server

Consumer calls a WMI serviceService authenticates the clientService passes call to the Exchange providerProvider queries the system for the information Provider returns information back to client

Key Features of WMI

API accessible from multiple programming languagesRemote administration Discoverability and navigation Query capability Event publication and subscription

Multiple Languages

C++Visual BasicJScriptVBScriptC#Perl …

Remote Administration

No different than local administrationAllows for enterprise management from a single computer

Discoverability and Navigation

Enumerate Classes Tells you what objects are available

Associations Define the relationships between classes Can be traversed

Query Capability

Data is stored in a relational database WQL – SQL-style language

Select * from ExchangeServerState where ServerState=3

Eventing

Clients subscribe for events No internal event mechanism needed Events can be “keyed” off of:

Instance Creation, Modification, Deletion

What’s New in WMI for Exchange 2003

20 new classesMessage TrackingQueue ManagementPublic Folder ManagementMailbox MAPI Table Management

Full list in the Exchange 2003 SDK on MSDN

Skeleton of a WMI program

Get the WMI locator objectGain the root interface

microsoftexchangev2Query the provider

Can use WSQL

Interpret your results

VBS – Public Folder Names

Set oLocator = CreateObject("WbemScripting.SWbemLocator")

Set oServices = oLocator.connectServer("localhost", "root\microsoftexchangev2")

Set oPFs = oServices.ExecQuery("select * from exchange_publicfolder”)

For each oPF in oPFsWScript.Echo(oPF.name)

Next

VBS – Create Public FolderSet oLocator = CreateObject("WbemScripting.SWbemLocator")Set oServices = oLocator.connectServer("localhost", "root\microsoftexchangev2")

'get the mapi folder treeset oTLHs = oServices.ExecQuery("select * from exchange_foldertree where

mapifoldertree = true")

for each oTLH in oTLHs'there is only one mapi TLHszRootFolderUrl = oTLH.RootFolderUrl

next

'create a public folder under the mapi folder treeSet oPF = oServices.Get("Exchange_PublicFolder").SpawnInstance_()oPF.Name = "WMI Public Folder"oPF.ParentFriendlyUrl = szRootFolderUrloPF.Put_

wscript.echo("done.")

VBS – Mailbox TableSet oLocator = CreateObject("WbemScripting.SWbemLocator")Set oServices = oLocator.connectServer("localhost", "root\

microsoftexchangev2")

set oLogins = oServices.ExecQuery("select * from Exchange_Logon")

for each oLogin in oLogins WScript.Echo(oLogin.LoggedOnUserAccount & " " & oLogin.ClientVersion)

Next

wscript.echo("done.")

VBS Programs Calling VBS Programs Calling WMIWMI

demodemo

JScript – Message Trackingvar oLocator = new ActiveXObject("WbemScripting.SWbemLocator");

var oServices = oLocator.connectServer("", "root\\microsoftexchangev2");

var szQuery = "select * from exchange_messagetrackingentry";

var e = new Enumerator(oServices.ExecQuery(szQuery));

var oMT = e.item();

var e = new Enumerator(oMT.Properties_);

for (; !e.atEnd(); e.moveNext())WScript.Echo (e.item().Name + " = " + e.item().Value);

JScript Program Calling JScript Program Calling WMIWMI

demodemo

C# Get Exchange DCpublic class WMICommon{

public WMICommon(){}~WMICommon(){}

public string GetDC(){ ManagementObjectSearcher searcher = new ManagementObjectSearcher(); string DCName = "";

ManagementScope scope = new ManagementScope("root\\microsoftexchangev2"); System.Management.ObjectQuery query = new System.Management.ObjectQuery("select *

from Exchange_DSAccessDC whereType = 0"); searcher.Scope = scope; searcher.Query = query;

foreach (ManagementObject configDC in searcher.Get()) { DCName = configDC["Name"].ToString(); }

searcher.Dispose();}

return DCName;

C# Program Calling WMIC# Program Calling WMI

demodemo

Additional Information

Good WMI Intro Article http://msdn.microsoft.com/library/techart/mngwmi.htm

Exchange Server 2003 WMIExchange Server 2003 SDK Documentationhttp://msdn.microsoft.com/exchange

Ask The ExpertsGet Your Questions Answered

11:00 Friday morning

Community Resources

Community Resourceshttp://www.microsoft.com/communities/default.mspx

Most Valuable Professional (MVP)http://www.mvp.support.microsoft.com/

NewsgroupsConverse online with Microsoft Newsgroups, including Worldwidehttp://www.microsoft.com/communities/newsgroups/default.mspx

User GroupsMeet and learn with your peershttp://www.microsoft.com/communities/usergroups/default.mspx

Suggested Reading And Resources

The tools you need to put technology to work!The tools you need to put technology to work!

TITLETITLE AvailableAvailable

Microsoft® Exchange Server 2003 Microsoft® Exchange Server 2003 Administrator's Companion:Administrator's Companion:0-7356-1979-40-7356-1979-4 9/24/039/24/03

Active Directory® for Microsoft® Active Directory® for Microsoft® Windows® Server 2003 Windows® Server 2003 Technical Reference:Technical Reference:0-7356-1577-20-7356-1577-2

TodayToday

Microsoft Press books are 20% off at the TechEd Bookstore

Also buy any TWO Microsoft Press books and get a FREE T-Shirt

evaluationsevaluations

© 2003 Microsoft Corporation. All rights reserved.© 2003 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.