Upload
luigia-alberti
View
218
Download
0
Embed Size (px)
Citation preview
| PierGiorgio Malusardi | [email protected] |
Scripting WMI per la gestione dei sistemi Windows Server 2003
| PierGiorgio Malusardi | [email protected] |
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 | [email protected] |
Cos’è WMI ?
per default
per default
per default
per default
WMI = Windows Management Instrumentation
Implementazione Microsoft di WBEMWMI è un’estensione di CIM
| PierGiorgio Malusardi | [email protected] |
Modello dati e Schema CIM
Sistema Operativo
WMI
System
Policy
Device
NetworkSupport
User
Apps
Physical
Core Schema
V2.0
V2.0
V2.0V2.0
V2.1
V2.2
V2.3
V2.3
V2.4
Account Utenti
Processi
Event Log
Impostazioni
Computer
Configurazione di Boot
MemoriaFile System
| PierGiorgio Malusardi | [email protected] |
Architettura di WMI
Databaseapplication
Databaseapplication Web
Browser
WebBrowser C/C++
application
C/C++application
ActiveXControls
ActiveXControlsODBC
ODBC
WMI COM APIWMI COM API
ManagementApplications Scripts
Scripts
1.NET Framework
.NET Framework
System.ManagementSystem.Management
.NET Client Applications.NET Client Applications
System.Management.Instrumentation
System.Management.Instrumentation
Windows FormsWeb Forms
Instrumented ApplicationsInstrumented Applications
Windows FormsWeb Forms
CIMRepository
CIMRepository CIM Object Manager
(CIMOM)
CIM Object Manager(CIMOM)
ManagementInstrumentation
COM/DCOM
2
SNMPProvider
SNMPProvider Win32
Provider
Win32Provider Registry
Provider
RegistryProvider
Win32Objects
Win32ObjectsSNMP
Objects
SNMPObjects Registry
Objects
RegistryObjects
Providers
ManagedObjects
WDMProvider
WDMProvider
WDM Driver
WDM Driver
COM/DCOM
3
| PierGiorgio Malusardi | [email protected] |
Various Windows components
Management and monitoring (events)
Windows Applications
Exchange SQLOffice MOMSMS
Windows NT 4.0: ± 15 WMI providersWindows 2000: ±29 WMI providersWindows Server 2003: ± 84 WMI Providers
NT Event Logs
Disk Quota
Windows Clock
Registry
Power ManagementDFS
AD replication
Trust monitoring
Server Session
Ping
IP RoutingSNMP
Network Load Balancing
High Performance Data AccessSecurity
Terminal Server
Cluster
IIS
RSOPMSI Event Consumers
Operating System
VSS
WMI Provider
| PierGiorgio Malusardi | [email protected] |
Relazione tra WMI e ADTop
Person
organizationalPerson
user
inetOrgPerson
ds_Top
ds_Person
ds_organizationalPerson
ads_user
ads_inetOrgPerson
ds_inetOrgPersonds_user
abstract
non-abstract/structural
| PierGiorgio Malusardi | [email protected] |
WMI Buone Pratiche1. 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 2003
6. Appoggiasi alle capacità di WQL quando possibile
7. Implementare la gestione degli errori
| PierGiorgio Malusardi | [email protected] |
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) ThenFor i = 0 to Ubound(obj.IPAddress,1)
strResult = strResult & " IP: " & obj.Ipaddress(i) & vbcrlf
NextElse
strResult = strResult & obj.IPAddress & vbcrlfEnd IfWscript.Echo strResult
| PierGiorgio Malusardi | [email protected] |
Properties_ Methods_Qualifiers_
Connettersi a WMI con un Locator
SERVICE
OBJECT
(SWbemLocator)
(SWbemServices)
LOCATORCreateObject( )
ConnectServer( )
Enumerate
Retrieve
SECURITY
SECURITY
SECURITY
(SWbemObject)
| PierGiorgio Malusardi | [email protected] |
Properties_ Methods_Qualifiers_
Connettersi a WMI con un Locator
SERVICE
OBJECT
(SWbemLocator)
(SWbemServices)
LOCATORCreateObject( )
ConnectServer( )
Enumerate
Retrieve
SECURITY
SECURITY
SECURITY
(SWbemObject)
Set objLocator = CreateObject("wbemscripting.SwbemLocator")Set objSvc = objLocator.ConnectServer()Set objDisk_C = objSvc.Get("Win32_LogicalDisk.DeviceID=’C:’")freeSpace = objdisk_C.freeSpaceWscript.echo "The Free Space on C: is " & freeSpace
| PierGiorgio Malusardi | [email protected] |
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 | [email protected] |
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 | [email protected] |
System
Locator vs. Moniker
OBJECT
SERVICES
SERVICESWinMgmts:
LocatorConnectServer Credentials
| PierGiorgio Malusardi | [email protected] |
System
Locator vs. Moniker
OBJECT
SERVICES
SERVICESWinMgmts:
LocatorConnectServer Credentials
Set objLocator = CreateObject("wbemscripting.SwbemLocator")Set objSvc = objLocator.ConnectServer()Set objDisk_C = objSvc.Get("Win32_LogicalDisk.DeviceID=’C:’")freeSpace = objdisk_C.freeSpaceWscript.echo "The Free Space on C: is " & freeSpace
| PierGiorgio Malusardi | [email protected] |
System
Locator vs. Moniker
OBJECT
SERVICES
SERVICESWinMgmts:
LocatorConnectServer Credentials
Set objDisk_C = _GetObject("WinMgmts:Win32_LogicalDisk.DeviceID=’C:’")freeSpace = objdisk_C.freeSpaceWscript.echo "The Free Space on C: is " & freeSpace
| PierGiorgio Malusardi | [email protected] |
System
Locator vs. Moniker
OBJECT
SERVICES
SERVICESWinMgmts:
LocatorConnectServer 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.freeSpaceWscript.echo "The Free Space on C: is " & freeSpace
| PierGiorgio Malusardi | [email protected] |
Uso dell’oggetto SWbemServices
Oggetto chiave per acedere alle funzionalità di WMIobjSvc = GetObject(“WinMgmts:”)
Proprietà Instanze
Set obj = objSvc.Get("Win32_process.handle=764")
ClassiSet obj = objSvc.Get("Win32_process")Result = obj.Create("calc.exe", null, null, processID)
Metodi
SystemSystemSystemSystemSystemSystemSystem
Applicazioni di gestionePer esempio, Script
| PierGiorgio Malusardi | [email protected] |
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 | [email protected] |
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 > 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
| PierGiorgio Malusardi | [email protected] |
Uso di proprietà e metodi
Scenario: gestione dei client DHCP Metodo EnableStatic Metodo EnableDHCP
Metodi Get e InstancesOf
| PierGiorgio Malusardi | [email protected] |
Uso di proprietà e metodi
Scenario: gestione dei client DHCP Metodo EnableStatic Metodo EnableDHCP
Metodi Get e InstancesOfSet 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)
| PierGiorgio Malusardi | [email protected] |
Uso di proprietà e metodi
Scenario: gestione dei client DHCP Metodo EnableStatic Metodo EnableDHCP
Metodi Get e InstancesOfSet objSvc = GetObject("WinMgmts:")
Set obj = objSvc.Get _
("Win32_NetworkAdapterConfiguration.index=0")
RetVal = obj.EnableDHCP()
| PierGiorgio Malusardi | [email protected] |
Modifica dei valori delle proprietà
Uso del metodo Put_Win32_LogicalDisk.DriveID=‘C’
Properties DescriptionFileSystem
SizeFreeSpace
VolumeNameMethods
ResetSetPowerState
Get
Put_
In memoria
| PierGiorgio Malusardi | [email protected] |
Modifica dei valori delle proprietà
Uso del metodo Put_Win32_LogicalDisk.DriveID=‘C’
Properties DescriptionFileSystem
SizeFreeSpace
VolumeNameMethods
ResetSetPowerState
Get
Put_
In memoriaSet objSvc = GetObject("WinMgmts:")Set obj = objSvc.Get("Win32_LogicalDisk.DeviceId=’C:’")obj.VolumeName="System"obj.Put_
| PierGiorgio Malusardi | [email protected] |
Microsoft TechNet
Esempi di WMI : TechNet Script Center: http://www.microsoft.com/technet/scriptcenter
Servono maggiori informazioni sui tool di Windows Server Windows Server 2003? hh.exe %SystemRoot%\System32\NTCmds.chm (DS*.*, Event*.* BootCfg.*, Prn*.*, …)
| PierGiorgio Malusardi | [email protected] |
Microsoft MSDN
Microsoft WMI MSDN Library (SDK)http://msdn.microsoft.com/library/en-us/wmisdk/
wmi/wmi_start_page.asp
Management Community Forumhttp://www.microsoft.com/windows.netserver/community/
centers/management/default.asp
Email: [email protected]
| PierGiorgio Malusardi | [email protected] |
Publicazioni 1WSH / ADSI / CDO / WMI Compaq Active Answers
White Papers on Windows 2000 & Exchange 2000http://www.LissWare.net (in basso nella pagina)
Secure Script Execution with WSH 5.6http://www.winscriptingsolutions.com/Articles/Index.cfm?ArticleID=25644
Security Changes in Windows Server 2003 WMIhttp://www.winscriptingsolutions.com/Articles/Index.cfm?ArticleID=40512
Using WMI to Manage AD Replication in Windows Server 2003http://www.winscriptingsolutions.com/Articles/Index.cfm?ArticleID=40881
Using WMI to Monitor Trust Status in Windows Server 2003http://www.winscriptingsolutions.com/Articles/Index.cfm?ArticleID=41196
| PierGiorgio Malusardi | [email protected] |
Pubblicazioni 2
Per ulteriori articoli:http://www.winnetmag.com
http://www.winscriptingsolutions.com
http://www.exchangeadmin.com
http://www.lissware.net
| PierGiorgio Malusardi | [email protected] |
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
Libri su WMI per Windows Server 2003
| PierGiorgio Malusardi | [email protected] |
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/
| PierGiorgio Malusardi | [email protected] |
© 2003-2004 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.