WMI Script
WMI (Windows Management Instrumentation) è il primo vero strumento di gestione dei sistemi operativi Windows.
Consiste in una serie di oggetti che permettono la gestione, il controllo e la manutenzione semplificata delle componenti del sistema operativo.
WMI permette agli amministratori del sistema di monitorare, modificare le configurazioni dei server e dei desktop. L’amministratore del sistema operativo utilizza le WMI Scripting Library (Librerie degli oggetti WMI) per interagire con le componenti del sistema operativo(Dischi fissi, processi…) creando una serie di script in grado di monitorare e gestire il sistema operativo Windows.
Struttura di uno script WMI
Uno script WMI deve eseguire nell’ordine le seguenti operazioni:
- Connessione ai servizi WMI
- Rendere disponibili allo script gli oggetti o serie di oggetti che servono al nostro scopo
- Estrarre le informazioni dagli oggetti ora richiamati
Per semplificare le cose immaginiamo di volere realizzare uno “script” che visualizza le informazioni del sistema operativo presente sulla nostra “macchina”.
Segue una tabella di esempio degli oggetti necessari.
Descrizione campo |
Nome dell’oggetto (classi e proprietà) |
OS Name |
Win32_OperatingSystem.Name |
OS Version |
Win32_OperatingSystem.Version |
Service Pack |
Win32_OperatingSystem.ServicePackMajorVersion Win32_OperatingSystem.ServicePackMinorVersion |
OS Manufacturer |
Win32_OperatingSystem.Manufacturer |
System Name |
Win32_ComputerSystem.Name |
System Manufacturer |
Win32_ComputerSystem.Manufacturer |
System Model |
Win32_ComputerSystem.Model |
System Type |
Win32_Processor.Architecture |
Processor |
Win32_Processor.Description |
BIOS Version |
Win32_BIOS.Version |
Windows Directory |
Win32_OperatingSystem.WindowsDirectory |
Locale |
Win32_OperatingSystem.Locale |
Time Zone |
Win32_ComputerSystem.TimeZone |
Total Physical Memory |
Win32_ComputerSystem.PhysicalMemory |
Available Physical Memory |
Win32_OperatingSystem.FreePhysicalMemory |
Total Virtual Memory |
Win32_OperatingSystem.TotalVirtualMemory |
Available Virtual Memory |
Win32_OperatingSystem.AvailableVirtualMemory |
Page File Space |
Win32_OperatingSystem.SizeStoredInPagingFiles |
Eseguire lo script
Uno script si esegue dalla dos command line con il seguente comando:
cscript <nome_script>
<nome_script> è il nome dello script creato.
Quando si esegue lo script sulla propria macchina si dice che è stato eseguito in locale.
Quando si esegue uno script su altre macchine diverse dalla nostra si dice che l’esecuzione è avvenuta in remoto. L’utente che esegue lo script in remoto deve avere le opportune autorizzazioni. Per esempio per eseguire uno script su più macchine con sistema operativo windows appartenenti allo stesso dominio, l’utente deve avere i permessi di amministratore di dominio.
Il primo script WMI
On Error Resume Next strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colItems=objWMIService.ExecQuery("Select * from Win32_OperatingSystem",,48) For Each objItem in colItems Wscript.Echo "FreePhysicalMemory: " & objItem.FreePhysicalMemory/1024 & " MB" Wscript.Echo "FreeVirtualMemory: " & objItem.FreeVirtualMemory/1024 & " MB" Wscript.Echo "InstallDate: " & objItem.InstallDate Wscript.Echo "LastBootUpTime: " & objItem.LastBootUpTime Wscript.Echo "LocalDateTime: " & objItem.LocalDateTime Wscript.Echo "Locale: " & objItem.Locale Wscript.Echo "Manufacturer: " & objItem.Manufacturer Wscript.Echo "ServicePackMajorVersion: " & objItem.ServicePackMajorVersion Wscript.Echo "ServicePackMinorVersion: " & objItem.ServicePackMinorVersion Wscript.Echo "TotalVirtualMemorySize: " & objItem.TotalVirtualMemorySize/1024 & " MB" Wscript.Echo "TotalVisibleMemorySize: " & objItem.TotalVisibleMemorySize/1024 & " MB" Wscript.Echo "Version: " & objItem.Version Wscript.Echo "WindowsDirectory: " & objItem.WindowsDirectory Next
- Istruzione strComputer = “.”
Crea una variabile per specificare il nome del computer. La specifica “.”evita di digitare il nome del nostro computer che viene automaticamente inserito nella variabile strComputer.
- Istruzione Set objWMIService = GetObject(“winmgmts:\\” & strComputer & “\root\cimv2”)
GetObject serve per connettersi all’ambiente WMI.
“\root\cimv2” prende il nome di namespaces. Il namespace “\root\cimv2” include la maggior parte delle classi che rappresentano le risorse associate comunemente con un computer ed un sistema operativo.
- Istruzione Set colItems=objWMIService.ExecQuery(“Select * from Win32_OperatingSystem”,,48)
ExecQuery è un metodo utilizzato per estrarre le informazioni dalla classe Win32_OperatingSystem.
Ora abbiamo a disposizione una collezione di informazioni che riguardano la classe Win32_OperatingSystem.
- Istruzione For Each objItem in colItems
Per ogni elemento della collezione visualizziamo il valore della sua proprietà con le istruzioni:
- Wscript.Echo “Manufacturer: “ & objItem.Manufacturer oppure
- Wscript.Echo “TotalVirtualMemorySize: “objItem.TotalVirtualMemorySize/1024 & ” MB”
e così via per tutte le altre istruzioni.
Wscript.Echo è l’istruzione che serve per visualizzare sullo schermo qualsiasi cosa. “Manufacturer: ” è una costante.
- objItem.Manufacturer è la proprietà della classe Win32_OperatingSystem come si nota dalla tabella in corrispondenza della descrizione “System Manufacturer”.
Segue un esempio per l’utilizzo della classe Win32_ComputerSystem.
On Error Resume Next strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colItems=objWMIService.ExecQuery("Select * from Win32_ComputerSystem",,48) For Each objItem in colItems Wscript.Echo "AdminPasswordStatus: " & objItem.AdminPasswordStatus Wscript.Echo "AutomaticResetBootOption: " & objItem.AutomaticResetBootOption Wscript.Echo "AutomaticResetCapability: " & objItem.AutomaticResetCapability Wscript.Echo "BootOptionOnLimit: " & objItem.BootOptionOnLimit Wscript.Echo "BootOptionOnWatchDog: " & objItem.BootOptionOnWatchDog Wscript.Echo "BootROMSupported: " & objItem.BootROMSupported Wscript.Echo "BootupState: " & objItem.BootupState Next
La documentazione della WMI (Windows Managament Instrumentation) si trova sul sito della Microsoft, selezionando “WMI scripting Primer ” nella parte sinistra dello schermo.
Sempre online sono elencate tutte le classi con i relativi metodi e le proprietà, Microsoft inoltre fornisce uno strumento per la visualizzazione degli oggetti e delle classi rivolto agli sviluppatori.
Per richiamare lo strumento in questione eseguire dalla command line Dos il programma wbemtest.exe (Windows Management Instrumentation Tester).