Scripting WMI per la gestione dei sistemi Windows Server 2003 Agenda Revisione di WMI 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 per default per default 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 V2.0 WMI Memoria V2.3 File System Impostazioni System V2.0 Computer V2.4 Apps Core Schema Device V2.0 V2.0 Processi V2.3 Configurazione di Boot V2.2 Sistema Operativo V2.1 Event Log Account Utenti .NET Client Applications Architettura di WMI Management Applications 1 Database application Web Browser ODBC ActiveX Controls C/C++ application Windows Forms Web Forms Scripts System.Management .NET Framework WMI COM API COM/DCOM Management Instrumentation CIM Repository CIM Object Manager (CIMOM) 2 .NET Framework COM/DCOM Providers Managed Objects 3 SNMP Provider Win32 Provider Registry Provider WDM Provider SNMP Objects Win32 Objects Registry Objects WDM Driver System.Management .Instrumentation Instrumented Applications Windows Forms Web Forms Modello ad Oggetti Classi Tipi di oggetti gestiti Sotto classi Proprietà Chiave Referenze Qualificatori Istanze Metodi Schema CIM Core schema CIM_ManagedSystemElement CIM_LogicalElement Common schema CIM_LogicalDevice CIM_MediaAccessDevice Extensible schema CIM_DiskDrive WIN32_DiskDrive CIM_CDRomDrive WIN32_CDRomDrive WMI Provider Windows NT 4.0: ± 15 WMI providers Windows 2000: ±29 WMI providers Windows Server 2003: ± 84 WMI Providers Various Windows components DFS Power Management Terminal Server Cluster Server Session NT Event Logs IIS Windows Clock Operating System AD replication Ping Disk Quota SNMP Trust monitoring Registry VSS IP Routing RSOP Event Consumers MSI Windows Applications Exchange Office Security SQL SMS Management and monitoring (events) Network Load Balancing High Performance Data Access MOM Spazio dei nomi \\Server1\Root\Cimv2:Win32_LogicalDisk.DeviceId='C:' Relazione tra WMI e AD Top ds_Top abstract Person non-abstract/structural ds_Person organizationalPerson ds_organizationalPerson user ads_user inetOrgPerson ads_inetOrgPerson ds_user ds_inetOrgPerson WMI Buone Pratiche 1. 2. 3. 4. 5. 6. 7. Capire le tecniche di Scripting!! Capire il modello CIM Quando ci si connette ad un repository CIM remoto: 1. Nessuna credenziale nel codice 2. 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: 1. 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 Connettersi a WMI con un Locator (SWbemLocator) CreateObject( ) LOCATOR SECURITY (SWbemServices) ConnectServer( ) SERVICE SECURITY (SWbemObject) Enumerate Retrieve OBJECT Properties_ Qualifiers_ SECURITY Methods_ Connettersi a WMI con un Locator (SWbemLocator) CreateObject( ) LOCATOR SECURITY (SWbemServices) Set objLocator = CreateObject("wbemscripting.SwbemLocator") SECURITY SERVICE Set objSvc = objLocator.ConnectServer() ConnectServer( ) Set objDisk_C = objSvc.Get("Win32_LogicalDisk.DeviceID=’C:’") freeSpace = objdisk_C.freeSpace (SWbemObject) Wscript.echo "The Free Space on C: is " & freeSpace Enumerate Retrieve OBJECT Properties_ Qualifiers_ SECURITY 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: Opzionali 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: GetObject(“WinMgmts:{impersonationLevel=impersonate}[locale=ms_409]! Impostazioni di Win32_LogicalDisk”) sicurezza: //Instructor/root/cimv2: Opzionali Racchiuse tra parentesi grafe Set objSvc = GetObject("WinMgmts:{impersonationLevel=impersonate}") Impostazioni relative alla lingua: Opzionali Racchiuse tra parentesi quadre 2 Per definire un server/servizio/oggetto Set objLogicalDisk = GetObject("WinMgmts:Win32_LogicalDisk.DeviceId=’C:’ ") Locator vs. Moniker SERVICES Locator ConnectServer Credentials SERVICES WinMgmts: OBJECT System Locator vs. Moniker SERVICES Locator ConnectServer Credentials SERVICES Set objLocator = CreateObject("wbemscripting.SwbemLocator") WinMgmts: Set objSvc = objLocator.ConnectServer() Set objDisk_C = objSvc.Get("Win32_LogicalDisk.DeviceID=’C:’") OBJECT freeSpace = objdisk_C.freeSpace Wscript.echo "The Free Space on C: is " & freeSpace System Locator vs. Moniker Set objDisk_C = _ GetObject("WinMgmts:Win32_LogicalDisk.DeviceID=’C:’") Locator freeSpace = SERVICES objdisk_C.freeSpace Credentials ConnectServer Wscript.echo "The Free Space on C: is " & freeSpace SERVICES WinMgmts: OBJECT System Locator vs. Moniker SERVICES Locator ConnectServer Credentials SERVICES Set objLocator = CreateObject("wbemscripting.SwbemLocator") WinMgmts: Set objSvc = _ objLocator.ConnectServer("Server1",,"sysAdmin","password",,,) OBJECT Set objDisk_C = objSvc.Get("Win32_LogicalDisk.DeviceID=’C:’") freeSpace = objdisk_C.freeSpace Wscript.echo "The Free Space on C: is " & freeSpace System Uso dell’oggetto SWbemServices Applicazioni di gestione Per esempio, Script System System System System System System System 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 1. Verifica della quantità di RAM Win32_computerSystem 2. Installazione di un pacchetto Windows Installer Win32_Product Uso di proprietà e metodi Scenario Installazione di software Set objSvc = GetObject("winmgmts:\\Server1") 1. Verica della quantità di RAM Set obj = objSvc.Get("Win32_computerSystem.name=.Server1.") If obj.TotalPhysicalMemory > 267952128 Then Win32_computerSystem WScript.Echo “Devono esserci almeno 256 MB di RAM” WSCript.Quit Else Set objProduct = objSvc.Get("Win32_Product") VLocationPath = "C:\source\scriptApp.msi" Win32_Product retVal = objProduct.Install(VLocationPath) End If 2. Installazione di un pacchetto Windows Installer 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 Set Metodo EnableStatic objSvc= Metodo GetObject("WinMgmts:") EnableDHCP Metodi Get e InstancesOf 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 Set objSvc = GetObject("WinMgmts:") Metodi Get e InstancesOf Set obj = objSvc.Get _ ("Win32_NetworkAdapterConfiguration.index=0") RetVal = obj.EnableDHCP() Modifica dei valori delle proprietà Uso del metodo Put_ Win32_LogicalDisk.DriveID=‘C’ In memoria Properties Description FileSystem Size FreeSpace VolumeName Methods Reset SetPowerState Get Put_ Modifica dei valori delle proprietà Uso del metodo Put_ Win32_LogicalDisk.DriveID=‘C’ Properties Description Set objSvc = GetObject("WinMgmts:") FileSystem Set obj = objSvc.Get("Win32_LogicalDisk.DeviceId=’C:’") Size obj.VolumeName="System" FreeSpace obj.Put_ VolumeName In memoria Methods Reset SetPowerState 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/enus/wmisdk/wmi/wmi_start_page.asp Management Community Forum http://www.microsoft.com/windows.netserver/community/cent ers/management/default.asp Email: [email protected] 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 (Alain Lissoir – Hewlett Packard) Maggiori info su http://www.LissWare.Net 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.