Les tâches WMI pour les disques et les systèmes de fichiers permettent d'obtenir des informations sur l'état du matériel de l'unité de disque et sur les volumes logiques. Pour obtenir d’autres exemples, consultez TechNet ScriptCenter à l’adresse https://www.microsoft.com/technet.
Les exemples de script présentés dans cette rubrique obtiennent les données uniquement à partir de l’ordinateur local. Pour plus d’informations sur l’utilisation du script afin d’obtenir des données provenant d’ordinateurs distants, consultez Connexion à WMI sur un ordinateur distant.
La procédure suivante explique comment exécuter un script.
Pour exécuter un script
- Copiez le code, puis enregistrez-le dans un fichier avec l’extension .vbs, par exemple nomfichier.vbs. Vérifiez que votre éditeur de texte n’ajoute pas d’extension .txt au fichier.
- Ouvrez une fenêtre d’invite de commandes, puis accédez au répertoire où vous avez enregistré le fichier.
- Tapez cscript nomfichier.vbs à l’invite de commandes.
- Si vous ne pouvez pas accéder à un journal des événements, vérifiez si vous exécutez la commande à partir d’une invite de commandes avec élévation de privilèges. Certains journaux des événements, par exemple le journal des événements de sécurité, peuvent être protégés par la fonctionnalité UAC (contrôle de compte d’utilisateur).
Notes
Par défaut, cscript affiche la sortie d’un script dans la fenêtre d’invite de commandes. Dans la mesure où les scripts WMI peuvent produire de grandes quantités de données en sortie, vous pouvez être amené à rediriger la sortie vers un fichier. Tapez cscript nomfichier.vbs > fichiersortie.txtà l’invite de commandes pour rediriger la sortie du scriptnomfichier.vbs vers fichiersortie.txt.
Le tableau suivant liste des exemples de script qui peuvent être utilisés pour obtenir divers types de données à partir de l’ordinateur local.
... découvrir la quantité d’espace disque que chaque utilisateur utilise actuellement sur un ordinateur ? |
Si vous utilisez des quotas de disque, utilisez la classe Win32_DiskQuota et récupérez les valeurs des propriétés User et DiskSpaceUsed .
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colQuotas = objWMIService.ExecQuery ("Select * from Win32_DiskQuota")
For each objQuota in colQuotas
Wscript.Echo "Volume: "& vbTab & objQuota.QuotaVolume
Wscript.Echo "User: "& vbTab & objQuota.User
Wscript.Echo "Disk Space Used: " & vbTab & objQuota.DiskSpaceUsed
Next
|
$strComputer = "."
$colItems = Get-WmiObject -Class Win32_DiskQuota -ComputerName $strComputer
foreach ($objQuota in $colItems)
{
"Volume: " + $objQuota.QuotaVolume
"User: " + $objQuota.User
"Disk Space Used: " + $objQuota.DiskSpaceUsed
}
|
|
...déterminer quand un disque amovible a été ajouté ou retiré d'un ordinateur ? |
Utilisez un script de supervision qui interroge la classe Win32_VolumeChangeEvent .
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colMonitoredEvents = objWMIService. ExecNotificationQuery( "Select * from Win32_VolumeChangeEvent")
Do
Set objLatestEvent = colMonitoredEvents.NextEvent
Wscript.Echo objLatestEvent.DriveName
Wscript.Echo objLatestEvent.EventType
Wscript.Echo objLatestEvent.Time_Created
Loop
|
|
... déterminer si un CD se trouve dans un lecteur de CD-ROM ? |
Utilisez la classe Win32_CDROMDrive et la propriété MediaLoaded .
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery( "Select * from Win32_CDROMDrive")
For Each objItem in colItems
Wscript.Echo "Device ID: " & objItem.DeviceID
Wscript.Echo "Media Loaded: " & objItem.MediaLoaded
Next
|
$strComputer = "."
$colItems = Get-WmiObject -Class Win32_CDROMDrive -ComputerName $strComputer
foreach ($objItem in $colItems)
{
"Device ID: " + $objItem.DeviceID
"MediaLoaded: " + $objItem.MediaLoaded
}
|
|
... déterminer si un disque se trouve dans le lecteur de disquette ? |
Utilisez la classe Win32_LogicalDisk et case activée la propriété FreeSpace. Si la valeur est Null, aucun disque ne se trouve dans le lecteur.
strComputer = "." Set objWMIService = GetObject( "winmgmts:\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery ("Sélectionner* De Win32_LogicalDisk Where DeviceID = 'A:'") For Each objItem in colItems
intFreeSpace = objItem.FreeSpace
If IsNull(intFreeSpace) Then
Wscript.Echo "There is no disk in the floppy drive."
Else
Wscript.Echo "There is a disk in the floppy drive."
End If
Next
|
$strComputer = "." $colItems = Get-WmiObject -Class Win32_LogicalDisk -espace de noms "root\cimv2" -ComputerName $strComputer | ` Where-Object { $_.DeviceID -eq "A:" } foreach ($objItem in $colItems)
{
$intFreeSpace = $objItem.FreeSpace
if ($intFreeSpace -eq $null) { "There is no disk in the floppy drive." }
else { "There is a disk in the floppy drive." }
}
|
|
... faire la distinction entre un disque dur fixe et un disque dur amovible ? |
Utilisez la classe Win32_LogicalDisk et case activée la valeur de la propriété DriveType.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
Set colDisks = objWMIService.ExecQuery _
("Select * from Win32_LogicalDisk")
For Each objDisk in colDisks
Wscript.Echo "DeviceID: "& vbTab _
& objDisk.DeviceID
Select Case objDisk.DriveType
Case 1
Wscript.Echo "No root directory. " & "Drive type could not be " & "determined."
Case 2
Wscript.Echo "DriveType: "& vbTab & "Removable drive."
Case 3
Wscript.Echo "DriveType: "& vbTab & "Local hard disk."
Case 4
Wscript.Echo "DriveType: "& vbTab & "Network disk."
Case 5
Wscript.Echo "DriveType: "& vbTab & "Compact disk."
Case 6
Wscript.Echo "DriveType: "& vbTab & "RAM disk."
Case Else
Wscript.Echo "Drive type could not be" & " determined."
End Select
Next
|
$strComputer = "." $colDisks = Get-WmiObject -Class Win32_LogicalDisk -ComputerName $strComputer foreach ($objDisk in $colDisks)
{
"DeviceID: " + $objDisk.deviceID
switch ($objDisk.DriveType)
{
'1' { "No root directory. Drive type could not be determined." }
'2' { "DriveType: Removable drive." }
'3' { "DriveType: Local hard disk." }
'4' { "DriveType: Network disk." }
'5' { "DriveType: Compact disk." }
'6' { "DriveType: RAM disk." }
default: { "Drive type could not be determined." }
}
}
|
|
... déterminer quel système de fichiers est utilisé sur un lecteur ? |
Utilisez la classe Win32_LogicalDisk et la propriété FileSystem .
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colDisks = objWMIService.ExecQuery ("Select * from Win32_LogicalDisk")
For Each objDisk in colDisks
Wscript.Echo "DeviceID: " & objDisk.DeviceID
Wscript.Echo "File System: " & objDisk.FileSystem
Next
|
|
... déterminer la quantité d’espace libre disponible sur un lecteur ? |
Utilisez la classe Win32_LogicalDisk et case activée la propriété FreeSpace.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colDisks = objWMIService.ExecQuery ("Select * from Win32_LogicalDisk")
For Each objDisk in colDisks
Wscript.Echo "DeviceID: " & objDisk.DeviceID
Wscript.Echo "Free Disk Space: " & objDisk.FreeSpace
Next
|
|
...déterminer la taille d'un disque ? |
Utilisez la classe Win32_LogicalDisk et case activée la propriété FreeSpace.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colDisks = objWMIService.ExecQuery ("Select * from Win32_LogicalDisk")
For Each objDisk in colDisks
Wscript.Echo "DeviceID: " & objDisk.DeviceID
Wscript.Echo "Disk Size: " & objDisk.Size
Next
|
|
... savoir quels lecteurs sont mappés sur un ordinateur ? |
Utilisez la classe Win32_MappedLogicalDisk.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colDisks = objWMIService. ExecQuery("Select * from Win32_MappedLogicalDisk")
For Each objDisk in colDisks
Wscript.Echo "Device ID: " & objDisk.DeviceID
Wscript.Echo "Name: " & objDisk.Name
Wscript.Echo "Free Space: " & objDisk.FreeSpace
Wscript.Echo "Size: " & objDisk.Size
Next
|
|
... défragmenter un disque dur ? |
Utilisez la classe Win32_Volume et la méthode Defrag .
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colVolumes = objWMIService.ExecQuery ("Select * from Win32_Volume Where Name = 'K:\\'")
For Each objVolume in colVolumes
errResult = objVolume.Defrag()
Next
|
|
... détecter quelle lettre de lecteur est associée à une partition de disque logique ? |
- Commencez par la classe Win32_DiskDrive et interrogez les instances de Win32_DiskPartition à l’aide de la propriété DeviceID et de la classe d’association Win32_DiskDriveToDiskPartition . Vous disposez maintenant d’une collection des partitions sur le lecteur physique.
- Recherchez le Win32_LogicalDisk qui représente la partition à l’aide de la propriété Win32_DiskPartition.DeviceID et de Win32_LogicalDiskToPartition classe d’association .
- Obtenez la lettre de lecteur à partir du Win32_LogicalDisk.DeviceID.
ComputerName = "." Set wmiServices = GetObject ( _ "winmgmts:{impersonationLevel=Impersonate}!//" & ComputerName) ' Obtenir l'unité de disque physique Set wmiDiskDrives = wmiServices.ExecQuery ( "SELECT Légende, DeviceID DE Win32_DiskDrive") Pour chaque wmiDiskDrive dans wmiDiskDrives WScript.Echo " Légende du lecteur de disque : " & wmiDiskDrive.Caption & VbNewLine & "DeviceID: " & " (" & wmiDiskDrive.DeviceID & ")"
'Utilisez l’ID d’appareil du lecteur de disque pour 'rechercher la requête de partition associée = " ASSOCIATORS OF {Win32_DiskDrive.DeviceID=' " _ & wmiDiskDrive.DeviceID & "'} WHERE AssocClass = Win32_DiskDriveToDiskPartition"
Définir wmiDiskPartitions = wmiServices.ExecQuery(query)
Pour chaque wmiDiskPartition dans wmiDiskPartitions 'Utilisez l’ID d’appareil de partition pour rechercher le disque logique Set wmiLogicalDisks = wmiServices.ExecQuery _ ("ASSOCIATORS OF {Win32_DiskPartition.DeviceID='" _ & wmiDiskPartition.DeviceID & "'} WHERE AssocClass = Win32_LogicalDiskToPartition")
For Each wmiLogicalDisk In wmiLogicalDisks
WScript.Echo "Drive letter associated" _
& " with disk drive = " _
& wmiDiskDrive.Caption _
& wmiDiskDrive.DeviceID _
& VbNewLine & " Partition = " _
& wmiDiskPartition.DeviceID _
& VbNewLine & " is " _
& wmiLogicalDisk.DeviceID
Next
Next
Next
|
|
-
Tâches WMI pour les scripts et les applications
-
Exemples d’applications WMI C++
-
TechNet ScriptCenter
`