Scripting WMI per la gestione dei sistemi Windows Server 2003
Agenda Revisione di WMI Risorse Cos’è WMI? Modello dati e Schema CIM Architettura Funzioni WMI Buone Pratiche Accesso agli oggetti di sistema con WMI Demo Risorse
Cos’è WMI ? WMI = Windows Management Instrumentation Implementazione Microsoft di WBEM WMI è un’estensione di CIM per default
Obiettivi WMI Gestione dell’Enterprise Controllo e configurazione di sistemi e applicazioni Implementazione consistente Unico punto di accesso
Modello dati e Schema CIM Configurazione di Boot Memoria File System V2.0 V2.1 V2.2 V2.3 V2.4 WMI System Policy Device Network Support User Apps Physical Core Schema Account Utenti Processi Event Log Impostazioni ý¨¨ Computer Sistema Operativo
.NET Client Applications Instrumented Applications Architettura di WMI .NET Framework System.Management .NET Client Applications .Instrumentation Windows Forms Web Forms Instrumented Applications Database application Web Browser C/C++ ActiveX Controls ODBC WMI COM API Management Applications Scripts 1 CIM Repository CIM Object Manager (CIMOM) Management Instrumentation COM/DCOM 2 SNMP Provider Win32 Registry Objects Providers Managed WDM Driver COM/DCOM 3
Il Common Information Model Il modello ad oggetti Gli schema CIM Gli spazi dei nomi I Provider WMI Provider Standard WMI MOF
Modello ad Oggetti Classi Proprietà Qualificatori Istanze Metodi Tipi di oggetti gestiti Sotto classi Proprietà Chiave Referenze Qualificatori Istanze Metodi
Schema CIM Core schema Common schema Extensible schema CIM_ManagedSystemElement CIM_LogicalElement Common schema CIM_LogicalDevice CIM_MediaAccessDevice Extensible schema CIM_DiskDrive CIM_CDRomDrive WIN32_DiskDrive WIN32_CDRomDrive
WMI Provider Various Windows components Windows Applications Windows NT 4.0: ± 15 WMI providers Windows 2000: ±29 WMI providers Windows Server 2003: ± 84 WMI Providers Various Windows components NT Event Logs Disk Quota Windows Clock Registry Power Management DFS AD replication Trust monitoring Server Session Ping IP Routing SNMP Network Load Balancing High Performance Data Access Security Terminal Server Cluster IIS RSOP MSI Event Consumers Operating System VSS Windows Applications Exchange SQL Office MOM SMS Management and monitoring (events)
Spazio dei nomi \\Server1\Root\Cimv2:Win32_LogicalDisk.DeviceId='C:'
Relazione tra WMI e AD Top ds_Top abstract Person ds_Person non-abstract/structural organizationalPerson ds_organizationalPerson user ads_user inetOrgPerson ads_inetOrgPerson ds_user ds_inetOrgPerson
WMI Buone Pratiche Capire le tecniche di Scripting!! Capire il modello CIM Quando ci si connette ad un repository CIM remoto: Nessuna credenziale nel codice Usare il contesto di sicurezza corrente o chiedere credenziali Usare WMI CIM Studio per scoprire quali sono i provider e funzionalità utili Evitare le tecniche asincrone: Se si decide di usarle: implementare il meccanismo di lockdown di Windows Server 2003 Appoggiarsi alle capacità di WQL quando possibile Implementare la gestione degli errori
Uso delle API SWbem Il modello ad oggetti dello scripting SWbemObject, SWbemLocator, SWbemService Le Collection Proprietà (objVolume.DefragAnalysis) e Metodi (objVolume.Caption) Array di Proprietà objVolume.DefragAnalysis(blnRecommended, objReport) If blnRecommended = True Then Wscript.Echo "This volume should be defragged." Else Wscript.Echo _ "This volume does not need to be defragged." End IfFor Each objVolume in colVolumes Next If isArray(obj.IPAddress) Then For i = 0 to Ubound(obj.IPAddress,1) strResult = strResult & " IP: " & obj.Ipaddress(i) & vbcrlf Next Else strResult = strResult & obj.IPAddress & vbcrlf End If Wscript.Echo strResult
Connettersi a WMI con un Locator (SWbemLocator) LOCATOR SECURITY CreateObject( ) (SWbemServices) SERVICE SECURITY ConnectServer( ) (SWbemObject) SECURITY Enumerate OBJECT Retrieve Properties_ Qualifiers_ Methods_
Connettersi a WMI con un Locator (SWbemLocator) LOCATOR SECURITY CreateObject( ) Set objLocator = CreateObject("wbemscripting.SwbemLocator") Set objSvc = objLocator.ConnectServer() Set objDisk_C = objSvc.Get("Win32_LogicalDisk.DeviceID=’C:’") freeSpace = objdisk_C.freeSpace Wscript.echo "The Free Space on C: is " & freeSpace (SWbemServices) SERVICE SECURITY ConnectServer( ) (SWbemObject) SECURITY Enumerate OBJECT Retrieve Properties_ Qualifiers_ Methods_
Connetersi a WMI con un Moniker Un Moniker è un concetto COM che nasconde la complessità di connessione agli oggetti COM WMI usa il prefisso WinMgmts: Un moniker WMI deve contenere: WinMgmts: Impostazioni di sicurezza: Opzionali Racchiuse tra parentesi grafe Set objSvc = GetObject("WinMgmts:{impersonationLevel=impersonate}") Impostazioni relative alla lingua: Racchiuse tra parentesi quadre 2 Per definire un server/servizio/oggetto Set objLogicalDisk = GetObject("WinMgmts:Win32_LogicalDisk.DeviceId=’C:’")
Connetersi a WMI con un Moniker Un Moniker è un concetto COM che nasconde la complessità di connessione agli oggetti com WMI usa il prefisso WinMgmts: Un moniker WMI deve contenere: WinMgmts: Impostazioni di sicurezza: Opzionali Racchiuse tra parentesi grafe Set objSvc = GetObject("WinMgmts:{impersonationLevel=impersonate}") Impostazioni relative alla lingua: Racchiuse tra parentesi quadre 2 Per definire un server/servizio/oggetto Set objLogicalDisk = GetObject("WinMgmts:Win32_LogicalDisk.DeviceId=’C:’") GetObject(“WinMgmts:{impersonationLevel=impersonate}[locale=ms_409]! //Instructor/root/cimv2: Win32_LogicalDisk”)
Locator vs. Moniker SERVICES SERVICES OBJECT System Locator ConnectServer Credentials SERVICES WinMgmts: OBJECT System
Locator vs. Moniker SERVICES SERVICES OBJECT System Locator ConnectServer Credentials Set objLocator = CreateObject("wbemscripting.SwbemLocator") Set objSvc = objLocator.ConnectServer() Set objDisk_C = objSvc.Get("Win32_LogicalDisk.DeviceID=’C:’") freeSpace = objdisk_C.freeSpace Wscript.echo "The Free Space on C: is " & freeSpace SERVICES WinMgmts: OBJECT System
Locator vs. Moniker SERVICES SERVICES OBJECT System Locator Set objDisk_C = _ GetObject("WinMgmts:Win32_LogicalDisk.DeviceID=’C:’") freeSpace = objdisk_C.freeSpace Wscript.echo "The Free Space on C: is " & freeSpace SERVICES Locator ConnectServer Credentials SERVICES WinMgmts: OBJECT System
Locator vs. Moniker SERVICES SERVICES OBJECT System Locator ConnectServer Credentials Set objLocator = CreateObject("wbemscripting.SwbemLocator") Set objSvc = _ objLocator.ConnectServer("Server1",,"sysAdmin","password",,,) Set objDisk_C = objSvc.Get("Win32_LogicalDisk.DeviceID=’C:’") freeSpace = objdisk_C.freeSpace Wscript.echo "The Free Space on C: is " & freeSpace SERVICES WinMgmts: OBJECT System
Uso dell’oggetto SWbemServices System Applicazioni di gestione Per esempio, Script Oggetto chiave per acedere alle funzionalità di WMI objSvc = GetObject(“WinMgmts:”) Proprietà Istanze Set obj = objSvc.Get("Win32_process.handle=764") Classi Set obj = objSvc.Get("Win32_process") Result = obj.Create("calc.exe", null, null, processID) Metodi
Uso di proprietà e metodi Scenario installazione di software Verifica della quantità di RAM Win32_computerSystem Installazione di un pacchetto Windows Installer Win32_Product
Uso di proprietà e metodi Scenario Installazione di software Verica della quantità di RAM Win32_computerSystem Installazione di un pacchetto Windows Installer Win32_Product Set objSvc = GetObject("winmgmts:\\Server1") Set obj = objSvc.Get("Win32_computerSystem.name=.Server1.") If obj.TotalPhysicalMemory > 267952128 Then WScript.Echo “Devono esserci almeno 256 MB di RAM” WSCript.Quit Else Set objProduct = objSvc.Get("Win32_Product") VLocationPath = "C:\source\scriptApp.msi" retVal = objProduct.Install(VLocationPath) End If
Uso di proprietà e metodi Scenario: gestione dei client DHCP Metodo EnableStatic Metodo EnableDHCP Metodi Get e InstancesOf
Uso di proprietà e metodi Scenario: gestione dei client DHCP Metodo EnableStatic Metodo EnableDHCP Metodi Get e InstancesOf Set objSvc = GetObject("WinMgmts:") Set obj = objSvc.Get("Win32_NetworkAdapterConfiguration.index=0") ipaddr = Array("192.168.30.25") subnet = Array("255.255.255.0") RetVal = obj.EnableStatic(ipaddr,subnet)
Uso di proprietà e metodi Scenario: gestione dei client DHCP Metodo EnableStatic Metodo EnableDHCP Metodi Get e InstancesOf Set objSvc = GetObject("WinMgmts:") Set obj = objSvc.Get _ ("Win32_NetworkAdapterConfiguration.index=0") RetVal = obj.EnableDHCP()
Modifica dei valori delle proprietà Uso del metodo Put_ Win32_LogicalDisk.DriveID=‘C’ Properties Description FileSystem Size FreeSpace VolumeName Methods Reset SetPowerState In memoria Get Put_
Modifica dei valori delle proprietà Uso del metodo Put_ Win32_LogicalDisk.DriveID=‘C’ Properties Description FileSystem Size FreeSpace VolumeName Methods Reset SetPowerState Set objSvc = GetObject("WinMgmts:") Set obj = objSvc.Get("Win32_LogicalDisk.DeviceId=’C:’") obj.VolumeName="System" obj.Put_ In memoria Get Put_
Microsoft TechNet Esempi di WMI : TechNet Script Center: http://www.microsoft.com/technet/scriptcenter Servono maggiori informazioni sui tool di Windows Server 2003? hh.exe %SystemRoot%\System32\NTCmds.chm (DS*.*, Event*.* BootCfg.*, Prn*.*, …)
Microsoft MSDN Microsoft WMI MSDN Library (SDK) http://msdn.microsoft.com/library/en-us/wmisdk/wmi/wmi_start_page.asp Management Community Forum http://www.microsoft.com/windows.netserver/community/centers/management/default.asp Email: wmi@microsoft.com
Publicazioni 1 WSH / ADSI / CDO / WMI Compaq Active Answers White Papers on Windows 2000 & Exchange 2000 http://www.LissWare.net (in basso nella pagina) Secure Script Execution with WSH 5.6 http://www.winscriptingsolutions.com/Articles/Index.cfm?ArticleID=25644 Security Changes in Windows Server 2003 WMI http://www.winscriptingsolutions.com/Articles/Index.cfm?ArticleID=40512 Using WMI to Manage AD Replication in Windows Server 2003 http://www.winscriptingsolutions.com/Articles/Index.cfm?ArticleID=40881 Using WMI to Monitor Trust Status in Windows Server 2003 http://www.winscriptingsolutions.com/Articles/Index.cfm?ArticleID=41196
Pubblicazioni 2 Altri articoli: http://www.winnetmag.com http://www.winscriptingsolutions.com http://www.exchangeadmin.com http://www.lissware.net
Libri su WMI per Windows Server 2003 Understanding WMI Scripting (Volume 1) ISBN 1555582664 – Digital Press (Alain Lissoir – Hewlett Packard) Maggiori info su http://www.LissWare.Net Leveraging WMI Scripting (Volume 2) ISBN 1555582990 – Digital Press
Community Microsoft Community Resources http://www.microsoft.com/communities/default.mspx Non-Microsoft Community Resources http://www.microsoft.com/communities/related/default.mspx Newsgroups http://www.microsoft.com/communities/newsgroups/default.mspx User Groups http://www.microsoft.com/communities/usergroups/default.mspx Chat libera http://www.microsoft.com/communities/chats/default.mspx Webcast http://www.microsoft.com/usa/webcasts/default.asp Most Valuable Professional (MVP) http://mvp.support.microsoft.com/
© 2003-2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.