| PierGiorgio Malusardi | [email protected] | Scripting WMI per la gestione dei sistemi Windows...

33
PierGiorgio Malusardi | [email protected] | Scripting WMI per la gestione dei sistemi Windows Server 2003

Transcript of | PierGiorgio Malusardi | [email protected] | Scripting WMI per la gestione dei sistemi Windows...

Page 1: | PierGiorgio Malusardi | pimalusa@microsoft.com | Scripting WMI per la gestione dei sistemi Windows Server 2003.

| PierGiorgio Malusardi | [email protected] |

Scripting WMI per la gestione dei sistemi Windows Server 2003

Page 2: | PierGiorgio Malusardi | pimalusa@microsoft.com | 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

Page 3: | PierGiorgio Malusardi | pimalusa@microsoft.com | Scripting WMI per la gestione dei sistemi Windows Server 2003.

| 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

Page 4: | PierGiorgio Malusardi | pimalusa@microsoft.com | Scripting WMI per la gestione dei sistemi Windows Server 2003.

| 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

Page 5: | PierGiorgio Malusardi | pimalusa@microsoft.com | Scripting WMI per la gestione dei sistemi Windows Server 2003.

| 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

Page 6: | PierGiorgio Malusardi | pimalusa@microsoft.com | Scripting WMI per la gestione dei sistemi Windows Server 2003.

| 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

Page 7: | PierGiorgio Malusardi | pimalusa@microsoft.com | Scripting WMI per la gestione dei sistemi Windows Server 2003.

| 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

Page 8: | PierGiorgio Malusardi | pimalusa@microsoft.com | Scripting WMI per la gestione dei sistemi Windows Server 2003.

| 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

Page 9: | PierGiorgio Malusardi | pimalusa@microsoft.com | Scripting WMI per la gestione dei sistemi Windows Server 2003.

| 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

Page 10: | PierGiorgio Malusardi | pimalusa@microsoft.com | Scripting WMI per la gestione dei sistemi Windows Server 2003.

| 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)

Page 11: | PierGiorgio Malusardi | pimalusa@microsoft.com | Scripting WMI per la gestione dei sistemi Windows Server 2003.

| 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

Page 12: | PierGiorgio Malusardi | pimalusa@microsoft.com | Scripting WMI per la gestione dei sistemi Windows Server 2003.

| 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:’")

Page 13: | PierGiorgio Malusardi | pimalusa@microsoft.com | Scripting WMI per la gestione dei sistemi Windows Server 2003.

| 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”)

Page 14: | PierGiorgio Malusardi | pimalusa@microsoft.com | Scripting WMI per la gestione dei sistemi Windows Server 2003.

| PierGiorgio Malusardi | [email protected] |

System

Locator vs. Moniker

OBJECT

SERVICES

SERVICESWinMgmts:

LocatorConnectServer Credentials

Page 15: | PierGiorgio Malusardi | pimalusa@microsoft.com | Scripting WMI per la gestione dei sistemi Windows Server 2003.

| 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

Page 16: | PierGiorgio Malusardi | pimalusa@microsoft.com | Scripting WMI per la gestione dei sistemi Windows Server 2003.

| 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

Page 17: | PierGiorgio Malusardi | pimalusa@microsoft.com | Scripting WMI per la gestione dei sistemi Windows Server 2003.

| 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

Page 18: | PierGiorgio Malusardi | pimalusa@microsoft.com | Scripting WMI per la gestione dei sistemi Windows Server 2003.

| 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

Page 19: | PierGiorgio Malusardi | pimalusa@microsoft.com | Scripting WMI per la gestione dei sistemi Windows Server 2003.

| 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

Page 20: | PierGiorgio Malusardi | pimalusa@microsoft.com | Scripting WMI per la gestione dei sistemi Windows Server 2003.

| 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

Page 21: | PierGiorgio Malusardi | pimalusa@microsoft.com | Scripting WMI per la gestione dei sistemi Windows Server 2003.

| PierGiorgio Malusardi | [email protected] |

Uso di proprietà e metodi

Scenario: gestione dei client DHCP Metodo EnableStatic Metodo EnableDHCP

Metodi Get e InstancesOf

Page 22: | PierGiorgio Malusardi | pimalusa@microsoft.com | Scripting WMI per la gestione dei sistemi Windows Server 2003.

| 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)

Page 23: | PierGiorgio Malusardi | pimalusa@microsoft.com | Scripting WMI per la gestione dei sistemi Windows Server 2003.

| 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()

Page 24: | PierGiorgio Malusardi | pimalusa@microsoft.com | Scripting WMI per la gestione dei sistemi Windows Server 2003.

| 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

Page 25: | PierGiorgio Malusardi | pimalusa@microsoft.com | Scripting WMI per la gestione dei sistemi Windows Server 2003.

| 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_

Page 26: | PierGiorgio Malusardi | pimalusa@microsoft.com | Scripting WMI per la gestione dei sistemi Windows Server 2003.

| PierGiorgio Malusardi | [email protected] |

demo

WMI Scripting

Page 27: | PierGiorgio Malusardi | pimalusa@microsoft.com | Scripting WMI per la gestione dei sistemi Windows Server 2003.

| 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*.*, …)

Page 28: | PierGiorgio Malusardi | pimalusa@microsoft.com | Scripting WMI per la gestione dei sistemi Windows Server 2003.

| 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]

Page 29: | PierGiorgio Malusardi | pimalusa@microsoft.com | Scripting WMI per la gestione dei sistemi Windows Server 2003.

| 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

Page 30: | PierGiorgio Malusardi | pimalusa@microsoft.com | Scripting WMI per la gestione dei sistemi Windows Server 2003.

| 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

Page 31: | PierGiorgio Malusardi | pimalusa@microsoft.com | Scripting WMI per la gestione dei sistemi Windows Server 2003.

| 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

Page 32: | PierGiorgio Malusardi | pimalusa@microsoft.com | Scripting WMI per la gestione dei sistemi 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/

Page 33: | PierGiorgio Malusardi | pimalusa@microsoft.com | Scripting WMI per la gestione dei sistemi Windows Server 2003.

| 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.