| PierGiorgio Malusardi | | Scripting WMI per la gestione dei sistemi Windows Server 2003
| PierGiorgio Malusardi | | 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
| PierGiorgio Malusardi | | Cosè WMI ? per default WMI = Windows Management Instrumentation Implementazione Microsoft di WBEM WMI è unestensione di CIM
| PierGiorgio Malusardi | | Modello dati e Schema CIM Sistema Operativo WMI System Policy Device Network Support User Apps Physical Core Schema V2.0 V2.1 V2.2 V2.3 V2.4 Account Utenti Processi Event Log Impostazioni Computer Configurazione di Boot Memoria File System
| PierGiorgio Malusardi | | Architettura di WMI Database application Database application Web Browser Web Browser C/C++ application C/C++ application ActiveX Controls ActiveX Controls ODBC WMI COM API Management Applications Scripts 1.NET Framework System.Management.NET Client Applications System.Management.Instrumentation System.Management.Instrumentation Windows FormsWeb Forms Instrumented Applications Windows FormsWeb Forms CIM Repository CIM Repository CIM Object Manager (CIMOM) CIM Object Manager (CIMOM) Management Instrumentation COM/DCOM 2 SNMP Provider SNMP Provider Win32 Provider Win32 Provider Registry Provider Registry Provider Win32 Objects Win32 Objects SNMP Objects SNMP Objects Registry Objects Registry Objects Providers Managed Objects WDM Provider WDM Provider WDM Driver WDM Driver COM/DCOM 3
| PierGiorgio Malusardi | | Various Windows components Management and monitoring (events) Windows Applications ExchangeSQLOfficeMOMSMS Windows NT 4.0: ± 15 WMI providers Windows 2000: ±29 WMI providers Windows Server 2003: ± 84 WMI Providers 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 AccessSecurity Terminal Server Cluster IIS RSOP MSI Event Consumers Operating System VSS WMI Provider
| PierGiorgio Malusardi | | Relazione tra WMI e AD Top Person organizationalPerson user inetOrgPerson ds_Top ds_Person ds_organizationalPerson ads_user ads_inetOrgPerson ds_inetOrgPerson ds_user abstract non-abstract/structural
| PierGiorgio Malusardi | | WMI Buone Pratiche 1.Capire le tecniche di Scripting!! 2.Capire il modello CIM 3.Quando ci si connette ad un repository CIM remoto: 1.Nessuna credenziale nel codice 2.Usare il contesto di sicurezza corrente o chiedere credenziali 4.Usare WMI CIM Studio per il scoprire quali sono i provider e funzionalità utili 5.Evitare le tecniche asincrone: 1.Se si decide di usarle: implementare il meccanismo di lockdown di Windows Server Appoggiasi alle capacità di WQL quando possibile 7.Implementare la gestione degli errori
| PierGiorgio Malusardi | | Uso delle API SWbem Il modello ad oggetti dello scripting SWbemObject, SWbemLocator, SWbemService Le Collection Proprietà ( objVolume.DefragAnalysis ) e Metodi ( objVolume.Caption ) Array di Propietà 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
| PierGiorgio Malusardi | | Properties_Methods_Qualifiers_ Connettersi a WMI con un Locator SERVICE OBJECT (SWbemLocator) (SWbemServices) LOCATOR CreateObject( ) ConnectServer( ) Enumerate Retrieve SECURITY (SWbemObject)
| PierGiorgio Malusardi | | Properties_Methods_Qualifiers_ Connettersi a WMI con un Locator SERVICE OBJECT (SWbemLocator) (SWbemServices) LOCATOR CreateObject( ) ConnectServer( ) Enumerate Retrieve SECURITY (SWbemObject) 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
| PierGiorgio Malusardi | | 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:")
| PierGiorgio Malusardi | | 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:") GetObject(WinMgmts:{impersonationLevel=impersonate}[locale=ms_409]! //Instructor/root/cimv2: Win32_LogicalDisk)
| PierGiorgio Malusardi | | System Locator vs. Moniker OBJECT SERVICES WinMgmts: Locator ConnectServer Credentials
| PierGiorgio Malusardi | | System Locator vs. Moniker OBJECT SERVICES WinMgmts: 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
| PierGiorgio Malusardi | | System Locator vs. Moniker OBJECT SERVICES WinMgmts: Locator ConnectServer Credentials Set objDisk_C = _ GetObject("WinMgmts:Win32_LogicalDisk.DeviceID=C:") freeSpace = objdisk_C.freeSpace Wscript.echo "The Free Space on C: is " & freeSpace
| PierGiorgio Malusardi | | System Locator vs. Moniker OBJECT SERVICES WinMgmts: 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
| PierGiorgio Malusardi | | Uso delloggetto SWbemServices Oggetto chiave per acedere alle funzionalità di WMI objSvc = GetObject(WinMgmts:) Proprietà Instanze Set obj = objSvc.Get("Win32_process.handle=764") Classi Set obj = objSvc.Get("Win32_process") Result = obj.Create("calc.exe", null, null, processID) Metodi System Applicazioni di gestione Per esempio, Script
| PierGiorgio Malusardi | | Uso di proprietà e metodi Scenario Installazione di software 1.Verica della quantità di RAM Win32_computerSystem 2.Installazione di un pacchetto Windows Installer Win32_Product
| PierGiorgio Malusardi | | Uso di proprietà e metodi Scenario Installazione di software 1.Verica della quantità di RAM Win32_computerSystem 2.Installazione di un pacchetto Windows Installer Win32_Product Set objSvc = GetObject("winmgmts:\\Server1") Set obj = objSvc.Get("Win32_computerSystem.name=.Server1.") If obj.TotalPhysicalMemory > 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
| PierGiorgio Malusardi | | Uso di proprietà e metodi Scenario: gestione dei client DHCP Metodo EnableStatic Metodo EnableDHCP Metodi Get e InstancesOf
| PierGiorgio Malusardi | | 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(" ") subnet = Array(" ") RetVal = obj.EnableStatic(ipaddr,subnet)
| PierGiorgio Malusardi | | 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()
| PierGiorgio Malusardi | | Modifica dei valori delle proprietà Uso del metodo Put_ Win32_LogicalDisk.DriveID=C Properties Description FileSystem Size FreeSpace VolumeName Methods Reset SetPowerState Get Put_ In memoria
| PierGiorgio Malusardi | | Modifica dei valori delle proprietà Uso del metodo Put_ Win32_LogicalDisk.DriveID=C Properties Description FileSystem Size FreeSpace VolumeName Methods Reset SetPowerState Get Put_ In memoria Set objSvc = GetObject("WinMgmts:") Set obj = objSvc.Get("Win32_LogicalDisk.DeviceId=C:") obj.VolumeName="System" obj.Put_
| PierGiorgio Malusardi | | demo WMI Scripting
| PierGiorgio Malusardi | | Microsoft TechNet Esempi di WMI : TechNet Script Center: Servono maggiori informazioni sui tool di Windows Server Windows Server 2003? hh.exe %SystemRoot%\System32\NTCmds.chm (DS*.*, Event*.* BootCfg.*, Prn*.*, …)
| PierGiorgio Malusardi | | Microsoft MSDN Microsoft WMI MSDN Library (SDK) us/wmisdk/wmi/wmi_start_page.asp Management Community Forum ers/management/default.asp
| PierGiorgio Malusardi | | Publicazioni 1 WSH / ADSI / CDO / WMI Compaq Active Answers White Papers on Windows 2000 & Exchange (in basso nella pagina) Secure Script Execution with WSH Security Changes in Windows Server 2003 WMI Using WMI to Manage AD Replication in Windows Server Using WMI to Monitor Trust Status in Windows Server
| PierGiorgio Malusardi | | Pubblicazioni 2 Per ulteriori articoli:
| PierGiorgio Malusardi | | Understanding WMI Scripting (Volume 1) ISBN – Digital Press (Alain Lissoir – Hewlett Packard) Maggiori info su Leveraging WMI Scripting (Volume 2) ISBN – Digital Press (Alain Lissoir – Hewlett Packard) Maggiori info su Libri su WMI per Windows Server 2003
| PierGiorgio Malusardi | | Community Microsoft Community Resources Non-Microsoft Community Resources Newsgroups User Groups Chat libera Webcast Most Valuable Professional (MVP)
| PierGiorgio Malusardi | | © Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.