Articoli
Windows Management Instrumentation: amministrare l'OS Windows (Seconda parte)
04
Nov
2005
Utilizzando l’ambiente WMI (Windows Management Instrumentation) vedremo come visualizzare le informazioni dei dischi fissi presenti su uno o più computer.
Elenco dei dischi fissi
Lo script seguente elenca le proprietà di tutti i dischi logici presenti su uno o più computer utilizzando la classe Win32_LogicalDisk .
strComputer = "." Wscript.Echo "=== Logical disk enumeration ===" & date() & " " & time() Wscript.Echo " " Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colDisks = objWMIService.ExecQuery _ ("SELECT * FROM Win32_LogicalDisk") For each objDisk in colDisks Wscript.Echo "=" Wscript.Echo "Device ID ........... " & objDisk.DeviceID Wscript.Echo "Drive Type .......... " & objDisk.DriveType Wscript.Echo "MediaType ........... " & objDisk.MediaType Wscript.Echo "Description ......... " & objDisk.Description Wscript.Echo "Size ................ " & objDisk.Size/(1024*1024) & " Mb" Wscript.Echo "FreeSpace ........... " & objDisk.FreeSpace/(1024*1024) & " Mb" Wscript.Echo "FileSystem .......... " & objDisk.FileSystem Wscript.Echo "VolumeName .......... " & objDisk.VolumeName Wscript.Echo "VolumeSerialNumber .. " & _ objDisk.VolumeSerialNumber NextSe un’istruzione supera la lunghezza di una riga,per andare a capo si usa il carattere "_" (underline).
Per ogni disco logico lo script visualizza le informazioni fondamentali.
Eseguendo lo script si ottiene un output simile al seguente:
Si nota che Drive Type assume il valore 3 per i dischi fissi e 5 per i cdrom. Se desideriamo visualizzare solamente i dischi fissi è necessario modificare la riga da
Set colDisks = objWMIService.ExecQuery _ ("SELECT * FROM Win32_LogicalDisk")a
Set colDisks = objWMIService.ExecQuery _ ("SELECT * FROM Win32_LogicalDisk WHERE DriveType = 3")All’istruzione SELECT è stata aggiunta una parte di codice(where DriveType = 3) che serve per selezionare solamente le unità disco.
Se vogliamo restringere ancora di più il campo della selezione è sufficiente utilizzare gli operatori booleani (AND oppure OR) come segue:
L’istruzione SELECT estrae i dati riguardanti i dischi fissi che hanno un valore del campo MediaType più grande di 10.
Monitor del page file
Il codice seguente controlla l’utilizzo del page file utilizzando la classe Win32_PageFileUsage .
strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colPageFiles = objWMIService.ExecQuery _ ("SELECT * FROM Win32_PageFileUsage") For each objPageFile in colPageFiles Wscript.Echo "Allocated Base Size: " & objPageFile.AllocatedBaseSize Wscript.Echo "CurrentUsage: " & objPageFile.CurrentUsage Wscript.Echo "Description: " & objPageFile.Description Wscript.Echo "InstallDate: " & objPageFile.InstallDate Wscript.Echo "Name: " & objPageFile.Name Wscript.Echo "PeakUsage: " & objPageFile.PeakUsage NextEseguendo lo script si ottiene un risultato simile al seguente:
Allocated Base Size: 1024 CurrentUsage: 90 Description: D:\pagefile.sys InstallDate: 20030412153952.832131+120 Name: D:\pagefile.sys PeakUsage: 90Questo script può servire per tenere sotto controllo i page file di una rete di computer.
Per configurare invece le proprietà dei page file di un computer possiamo utilizzare il seguente script:
Come si nota dallo script la classe da utilizzare è Win32_PageFileSetting ed il metodo Put_ modifica la configurazione dei pagefile di uno o più computer.


