Physical and Logical Disks - Sample Code
Add a Volume Mount PointAssociate Disk Partitions with Physical Disk Drives
Analyze Volume Defragmentation
Bind to a Specific Disk Drive
Change the Drive Letter of a Volume
Dismount a Volume
Defragment a Volume
Format a Volume
List All Disk Drives
List Available Disk Space
List CD-ROM Properties
List Disk Drive Properties Using FSO
List Disk Partition Properties
List Disk Space by User on the Local Computer
List Drive Types
List Floppy Drive Information
List Logical Disk Drive Properties
List Mapped Network Drives
List Physical Disk Properties
List Volume Mount Points
List Volume Properties
Modify the AutoChk Timeout Value
Mount a Volume
Prevent AutoChk From Running
Run ChkDsk
Rename a Volume
Schedule AutoChk
Verify that All Drives are Ready
Verify ChkDsk Volume Status
You can use any of the VBScript programs below in ActiveXperts Network Monitor. Click here for an explanation about how to include scripts in ActiveXperts Network Monitor.
Add a Volume Mount Point
Adds a new volume mount point for the folder W:\Scripts. Note that in the WQL query, you must use two slashes rather than one, and you must also include two slashes at the end of the folder path. Thus the folder X:\Scripts\WMI would be listed as X:\\Scripts\\WMI\\.
strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery _ ("Select * From Win32_Volume Where Name = 'D:\\'") For Each objItem in colItems objItem.AddMountPoint("W:\\Scripts\\") Next
Associate Disk Partitions with Physical Disk Drives
Returns the DeviceID of all the physical disk drives installed on a computer, and indicates the partitions that have been created on those disks.
strComputer = "." Set wmiServices = GetObject _ ("winmgmts:{impersonationLevel=Impersonate}!//" & strComputer) Set wmiDiskDrives = wmiServices.ExecQuery _ ("SELECT Caption, DeviceID FROM Win32_DiskDrive") For Each wmiDiskDrive In wmiDiskDrives WScript.Echo wmiDiskDrive.Caption & " (" & wmiDiskDrive.DeviceID & ")" strEscapedDeviceID = Replace _ (wmiDiskDrive.DeviceID, "\", "\\", 1, -1, vbTextCompare) Set wmiDiskPartitions = wmiServices.ExecQuery _ ("ASSOCIATORS OF {Win32_DiskDrive.DeviceID=""" & _ strEscapedDeviceID & """} WHERE AssocClass = " & _ "Win32_DiskDriveToDiskPartition") For Each wmiDiskPartition In wmiDiskPartitions WScript.Echo vbTab & wmiDiskPartition.DeviceID Set wmiLogicalDisks = wmiServices.ExecQuery _ ("ASSOCIATORS OF {Win32_DiskPartition.DeviceID=""" & _ wmiDiskPartition.DeviceID & """} WHERE AssocClass = " & _ "Win32_LogicalDiskToPartition") For Each wmiLogicalDisk In wmiLogicalDisks WScript.Echo vbTab & vbTab & wmiLogicalDisk.DeviceID Next Next Next
Analyze Volume Defragmentation
Analyzes the defragmentation status of all the volumes on a computer. This is equivalent to running defrag.exe with the command-line options -a (analyze) and -v (verbose).
strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colVolumes = objWMIService.ExecQuery("Select * from Win32_Volume") For Each objVolume in colVolumes errResult = objVolume.DefragAnalysis(blnRecommended, objReport) If errResult = 0 then Wscript.Echo "Average file size: " & objReport.AverageFileSize Wscript.Echo "Average fragments per file: " & _ objReport.AverageFragmentsPerFile Wscript.Echo "Cluster size: " & objReport.ClusterSize Wscript.Echo "Excess folder fragments: " & _ objReport.ExcessFolderFragments Wscript.Echo "File percent fragmentation: " & _ objReport.FilePercentFragmentation Wscript.Echo "Fragmented folders: " & objReport.FragmentedFolders Wscript.Echo "Free soace: " & objReport.FreeSpace Wscript.Echo "Free space percent: " & objReport.FreeSpacePercent Wscript.Echo "Free space percent fragmentation: " & _ objReport.FreeSpacePercentFragmentation Wscript.Echo "MFT percent in use: " & objReport.MFTPercentInUse Wscript.Echo "MFT record count: " & objReport.MFTRecordCount Wscript.Echo "Page file size: " & objReport.PageFileSize Wscript.Echo "Total excess fragments: " & _ objReport.TotalExcessFragments Wscript.Echo "Total files: " & objReport.TotalFiles Wscript.Echo "Total folders: " & objReport.TotalFolders Wscript.Echo "Total fragmented files: " & _ objReport.TotalFragmentedFiles Wscript.Echo "Total MFT fragments: " & objReport.TotalMFTFragments Wscript.Echo "Total MFT size: " & objReport.TotalMFTSize Wscript.Echo "Total page file fragments: " & _ objReport.TotalPageFileFragments Wscript.Echo "Total percent fragmentation: " & _ objReport.TotalPercentFragmentation Wscript.Echo "Used space: " & objReport.UsedSpace Wscript.Echo "Volume name: " & objReport.VolumeName Wscript.Echo "Volume size: " & objReport.VolumeSize If blnRecommended = True Then Wscript.Echo "This volume should be defragged." Else Wscript.Echo "This volume does not need to be defragged." End If Wscript.Echo End If Next
Bind to a Specific Disk Drive
Demonstration script that uses the FileSystemObject to return available disk space on a specific disk drive. Script must be run on the local computer.
Set objFSO = CreateObject("Scripting.FileSystemObject") Set objDrive = objFSO.GetDrive("C:") Wscript.Echo "Available space: " & objDrive.AvailableSpace
Change the Drive Letter of a Volume
Changes the drive letter of volume D to Q. If you modify this script to change the drive letter of a volume other than D, note that the volume name in the WQL query must include both the colon (:) and two slashes (\\). Thus drive C would look like this: C:\\. When specifying the new drive letter, however, you only have to include the colon (in the sample script, Q:).
strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colVolumes = objWMIService.ExecQuery _ ("Select * from Win32_Volume Where Name = 'D:\\'") For Each objVolume in colVolumes objVolume.DriveLetter = "Q:" objVolume.Put_ Next
Dismount a Volume
Dismounts volume E from the file system. If you modify this script to dismount a different volume (such as X), note that your WQL query must specify the drive letter followed by a colon and then followed by two slashes. Thus volume X would be listed as X:\\. The two parameters: 1) force the volume to be dismounted, even if users are currently connected to it; and, 2) place the volume in a no-automount, offline state. This script can be modified by setting either (or both) of these parameters to False.
strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery _ ("Select * From Win32_Volume Where Name = 'E:\\'") For Each objItem in colItems objItem.Dismount(True, True) Next
Defragment a Volume
Defragments volume D on a computer. If you modify this script to defragment a different volume (such as X), note that your WQL query must specify the drive letter followed by a colon and then followed by two slashes. Thus volume X would be listed as X:\\.
strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colVolumes = objWMIService.ExecQuery _ ("Select * from Win32_Volume Where Name = 'D:\\'") For Each objVolume in colVolumes errResult = objVolume.Defrag() Next
Format a Volume
Formats drive D using the NTFS file system. Drives could also be formatted using the FAT or FAT32 file systems. Note that this method cannot be used to format floppy drives. If you modify this script to format a different volume (such as drive X), also note that your WQL query must specify the drive letter followed by a colon and then followed by two slashes. Thus drive X would be listed as X:\\.
strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colVolumes = objWMIService.ExecQuery _ ("Select * from Win32_Volume Where Name = 'D:\\'") For Each objVolume in colVolumes errResult = objVolume.Format("NTFS") Next
List All Disk Drives
Demonstration script that uses the FileSystemObject to return a list of all the disk drives installed on a computer. Script must be run on the local computer.
Set objFSO = CreateObject("Scripting.FileSystemObject") Set colDrives = objFSO.Drives For Each objDrive in colDrives Wscript.Echo "Drive letter: " & objDrive.DriveLetter Next
List Available Disk Space
Returns the amount of free space for each hard disk installed on a computer.
Const HARD_DISK = 3 strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colDisks = objWMIService.ExecQuery _ ("Select * from Win32_LogicalDisk Where DriveType = " & HARD_DISK & "") For Each objDisk in colDisks Wscript.Echo "DeviceID: "& vbTab & objDisk.DeviceID Wscript.Echo "Free Disk Space: "& vbTab & objDisk.FreeSpace Next
List CD-ROM Properties
Returns information about all the CD-ROM drives installed on a computer.
On Error Resume Next strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery("Select * from Win32_CDROMDrive") For Each objItem in colItems Wscript.Echo "Availability: " & objItem.Availability For Each strCapability in objItem.Capabilities Wscript.Echo "Capability: "& strCapability Next Wscript.Echo "Caption: " & objItem.Caption Wscript.Echo "Description: " & objItem.Description Wscript.Echo "Device ID: " & objItem.DeviceID Wscript.Echo "Drive: " & objItem.Drive Wscript.Echo "Manufacturer: " & objItem.Manufacturer Wscript.Echo "Media Loaded: " & objItem.MediaLoaded Wscript.Echo "Media Type: " & objItem.MediaType Wscript.Echo "Name: " & objItem.Name Wscript.Echo "PNP Device ID: " & objItem.PNPDeviceID Wscript.Echo "SCSI Bus: " & objItem.SCSIBus Wscript.Echo "SCSI Logical Unit: " & objItem.SCSILogicalUnit Wscript.Echo "SCSI Port: " & objItem.SCSIPort Wscript.Echo "SCSI Target ID: " & objItem.SCSITargetId Next
List Disk Drive Properties Using FSO
Demonstration script that uses the FileSystemObject to return the properties of all the disk drives installed on a computer. Script must be run on the local computer.
Set objFSO = CreateObject("Scripting.FileSystemObject") Set colDrives = objFSO.Drives For Each objDrive in colDrives Wscript.Echo "Available space: " & objDrive.AvailableSpace Wscript.Echo "Drive letter: " & objDrive.DriveLetter Wscript.Echo "Drive type: " & objDrive.DriveType Wscript.Echo "File system: " & objDrive.FileSystem Wscript.Echo "Free space: " & objDrive.FreeSpace Wscript.Echo "Is ready: " & objDrive.IsReady Wscript.Echo "Path: " & objDrive.Path Wscript.Echo "Root folder: " & objDrive.RootFolder Wscript.Echo "Serial number: " & objDrive.SerialNumber Wscript.Echo "Share name: " & objDrive.ShareName Wscript.Echo "Total size: " & objDrive.TotalSize Wscript.Echo "Volume name: " & objDrive.VolumeName Next
List Disk Partition Properties
Lists the properties of all the disk partitions on a computer.
strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colDiskPartitions = objWMIService.ExecQuery _ ("Select * from Win32_DiskPartition") For each objPartition in colDiskPartitions Wscript.Echo "Block Size: " & objPartition.BlockSize Wscript.Echo "Bootable: " & objPartition.Bootable Wscript.Echo "Boot Partition: " & objPartition.BootPartition Wscript.Echo "Description: " & objPartition.Description Wscript.Echo "Device ID: " & objPartition.DeviceID Wscript.Echo "Disk Index: " & objPartition.DiskIndex Wscript.Echo "Index: " & objPartition.Index Wscript.Echo "Name: " & objPartition.Name Wscript.Echo "Number Of Blocks: " & _ objPartition.NumberOfBlocks Wscript.Echo "Primary Partition: " & _ objPartition.PrimaryPartition Wscript.Echo "Size: " & objPartition.Size Wscript.Echo "Starting Offset: " & _ objPartition.StartingOffset Wscript.Echo "Type: " & objPartition.Type Next
List Disk Space by User on the Local Computer
Uses disk quotas to return information about disk space usage per-user for drive C on the local computer.
Set colDiskQuotas = CreateObject("Microsoft.DiskQuota.1") colDiskQuotas.Initialize "C:\", True For Each objUser in colDiskQuotas Wscript.Echo "Logon name: " & objUser.LogonName Wscript.Echo "Quota used: " & objUser.QuotaUsed Next
List Drive Types
Identifies the drive type (floppy drive, hard drive, CD-ROM, etc.) for each physical drive installed on a computer.
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 Select Case objDisk.DriveType Case 1 Wscript.Echo "No root directory. Drive type could not be " _ & "determined." Case 2 Wscript.Echo "DriveType: "& "Removable drive." Case 3 Wscript.Echo "DriveType: "& "Local hard disk." Case 4 Wscript.Echo "DriveType: "& "Network disk." Case 5 Wscript.Echo "DriveType: "& "Compact disk." Case 6 Wscript.Echo "DriveType: "& "RAM disk." Case Else Wscript.Echo "Drive type could not be determined." End Select Next
List Floppy Drive Information
Returns information about all the floppy disk drives installed on a computer.
On Error Resume Next strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery("Select * from Win32_FloppyDrive") For Each objItem in colItems Wscript.Echo "Availability: " & objItem.Availability Wscript.Echo "Configuration Manager Error Code: " & _ objItem.ConfigManagerErrorCode Wscript.Echo "Configuration Manager User Configuration: " & _ objItem.ConfigManagerUserConfig Wscript.Echo "Device ID: " & objItem.DeviceID Wscript.Echo "Manufacturer: " & objItem.Manufacturer Wscript.Echo "Name: " & objItem.Name Wscript.Echo "PNP Device ID: " & objItem.PNPDeviceID Wscript.Echo Next
List Logical Disk Drive Properties
Lists the properties for all the logical disk drives on a computer.
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 "Compressed: " & objDisk.Compressed Wscript.Echo "Description: " & objDisk.Description Wscript.Echo "DeviceID: " & objDisk.DeviceID Wscript.Echo "DriveType: " & objDisk.DriveType Wscript.Echo "FileSystem: " & objDisk.FileSystem Wscript.Echo "FreeSpace: " & objDisk.FreeSpace Wscript.Echo "MediaType: " & objDisk.MediaType Wscript.Echo "Name: " & objDisk.Name Wscript.Echo "QuotasDisabled: " & objDisk.QuotasDisabled Wscript.Echo "QuotasIncomplete: " & objDisk.QuotasIncomplete Wscript.Echo "QuotasRebuilding: " & objDisk.QuotasRebuilding Wscript.Echo "Size: " & objDisk.Size Wscript.Echo "SupportsDiskQuotas: " & _ objDisk.SupportsDiskQuotas Wscript.Echo "SupportsFileBasedCompression: " & _ objDisk.SupportsFileBasedCompression Wscript.Echo "SystemName: " & objDisk.SystemName Wscript.Echo "VolumeDirty: " & objDisk.VolumeDirty Wscript.Echo "VolumeName: " & objDisk.VolumeName Wscript.Echo "VolumeSerialNumber: " & _ objDisk.VolumeSerialNumber Next
List Mapped Network Drives
Retrieves information about mapped network drives. The information returned is similar to that available through the Win32_LogicalDisk class, which retrieves information about the logical disks found on a computer.
On Error Resume Next strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery("Select * from Win32_MappedLogicalDisk") For Each objItem in colItems Wscript.Echo "Compressed: " & objItem.Compressed Wscript.Echo "Description: " & objItem.Description Wscript.Echo "Device ID: " & objItem.DeviceID Wscript.Echo "File System: " & objItem.FileSystem Wscript.Echo "Free Space: " & objItem.FreeSpace Wscript.Echo "Maximum Component Length: " & objItem.MaximumComponentLength Wscript.Echo "Name: " & objItem.Name Wscript.Echo "Provider Name: " & objItem.ProviderName Wscript.Echo "Session ID: " & objItem.SessionID Wscript.Echo "Size: " & objItem.Size Wscript.Echo "Supports Disk Quotas: " & objItem.SupportsDiskQuotas Wscript.Echo "Supports File-Based Compression: " & _ objItem.SupportsFileBasedCompression Wscript.Echo "Volume Name: " & objItem.VolumeName Wscript.Echo "Volume Serial Number: " & objItem.VolumeSerialNumber Wscript.Echo Next
List Physical Disk Properties
Retrieves the properties for all the physical disk drives installed on a computer.
strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colDiskDrives = objWMIService.ExecQuery _ ("Select * from Win32_DiskDrive") For each objDiskDrive in colDiskDrives Wscript.Echo "Bytes Per Sector: " & vbTab & _ objDiskDrive.BytesPerSector For i = Lbound(objDiskDrive.Capabilities) to _ Ubound(objDiskDrive.Capabilities) Wscript.Echo "Capabilities: " & vbTab & _ objDiskDrive.Capabilities(i) Next Wscript.Echo "Caption: " & vbTab & objDiskDrive.Caption Wscript.Echo "Device ID: " & vbTab & objDiskDrive.DeviceID Wscript.Echo "Index: " & vbTab & objDiskDrive.Index Wscript.Echo "Interface Type: " & vbTab & objDiskDrive.InterfaceType Wscript.Echo "Manufacturer: " & vbTab & objDiskDrive.Manufacturer Wscript.Echo "Media Loaded: " & vbTab & objDiskDrive.MediaLoaded Wscript.Echo "Media Type: " & vbTab & objDiskDrive.MediaType Wscript.Echo "Model: " & vbTab & objDiskDrive.Model Wscript.Echo "Name: " & vbTab & objDiskDrive.Name Wscript.Echo "Partitions: " & vbTab & objDiskDrive.Partitions Wscript.Echo "PNP DeviceID: " & vbTab & objDiskDrive.PNPDeviceID Wscript.Echo "SCSI Bus: " & vbTab & objDiskDrive.SCSIBus Wscript.Echo "SCSI Logical Unit: " & vbTab & _ objDiskDrive.SCSILogicalUnit Wscript.Echo "SCSI Port: " & vbTab & objDiskDrive.SCSIPort Wscript.Echo "SCSI TargetId: " & vbTab & objDiskDrive.SCSITargetId Wscript.Echo "Sectors Per Track: " & vbTab & _ objDiskDrive.SectorsPerTrack Wscript.Echo "Signature: " & vbTab & objDiskDrive.Signature Wscript.Echo "Size: " & vbTab & objDiskDrive.Size Wscript.Echo "Status: " & vbTab & objDiskDrive.Status Wscript.Echo "Total Cylinders: " & vbTab & _ objDiskDrive.TotalCylinders Wscript.Echo "Total Heads: " & vbTab & objDiskDrive.TotalHeads Wscript.Echo "Total Sectors: " & vbTab & objDiskDrive.TotalSectors Wscript.Echo "Total Tracks: " & vbTab & objDiskDrive.TotalTracks Wscript.Echo "Tracks Per Cylinder: " & vbTab & _ objDiskDrive.TracksPerCylinder Next
List Volume Mount Points
Enumerates all the volume mount points on a computer.
strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery _ ("SELECT * FROM Win32_MountPoint") For Each objItem In colItems WScript.Echo "Directory: " & objItem.Directory WScript.Echo "Volume: " & objItem.Volume WScript.Echo Next
List Volume Properties
Retrieves the properties of all the volumes installed on a computer.
strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery("Select * from Win32_Volume") For Each objItem In colItems WScript.Echo "Automount: " & objItem.Automount WScript.Echo "Block Size: " & objItem.BlockSize WScript.Echo "Capacity: " & objItem.Capacity WScript.Echo "Caption: " & objItem.Caption WScript.Echo "Compressed: " & objItem.Compressed WScript.Echo "Device ID: " & objItem.DeviceID WScript.Echo "Dirty Bit Set: " & objItem.DirtyBitSet WScript.Echo "Drive Letter: " & objItem.DriveLetter WScript.Echo "Drive Type: " & objItem.DriveType WScript.Echo "File System: " & objItem.FileSystem WScript.Echo "Free Space: " & objItem.FreeSpace WScript.Echo "Indexing Enabled: " & objItem.IndexingEnabled WScript.Echo "Label: " & objItem.Label WScript.Echo "Maximum File Name Length: " & objItem.MaximumFileNameLength WScript.Echo "Name: " & objItem.Name WScript.Echo "Quotas Enabled: " & objItem.QuotasEnabled WScript.Echo "Quotas Incomplete: " & objItem.QuotasIncomplete WScript.Echo "Quotas Rebuilding: " & objItem.QuotasRebuilding WScript.Echo "Serial Number: " & objItem.SerialNumber WScript.Echo "Supports Disk Quotas: " & objItem.SupportsDiskQuotas WScript.Echo "Supports File-Based Compression: " & _ objItem.SupportsFileBasedCompression WScript.Echo Next
Modify the AutoChk Timeout Value
Sets the auto-delay time for Autochk.exe to 30 seconds.
strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colAutoChkSettings = objWMIService.ExecQuery _ ("Select * from Win32_AutochkSetting") For Each objAutoChkSetting in colAutoChkSettings objAutoChkSetting.UserInputDelay = 30 objAutoChkSetting.Put_ Next
Mount a Volume
Mounts volume Z to the file system. If you modify this script to mount a different volume (such as X), note that the volume name in your WQL query must include the drive letter followed by a colon and then followed by two slashes. Thus drive X would be listed as X:\\.
strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery _ ("Select * From Win32_Volume Where Name = 'Z:\\'") For Each objItem in colItems objItem.Mount() Next
Prevent AutoChk From Running
Ensures that Autochk.exe will not run against drive C the next time the computer reboots, even if the "dirty bit" has been set on drive C.
strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set objDisk = objWMIService.Get("Win32_LogicalDisk") errReturn = objDisk.ExcludeFromAutoChk(Array("C:"))
Run ChkDsk
Runs ChkDsk.exe against drive D on a computer.
Const FIX_ERRORS = True strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set objDisk = objWMIService.Get("Win32_LogicalDisk.DeviceID='D:'") errReturn = objDisk.ChkDsk(FIX_ERRORS)
Rename a Volume
Changes the volume label for drive C to "Finance Volume."
strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colDrives = objWMIService.ExecQuery _ ("Select * from Win32_LogicalDisk where DeviceID = 'C:'") For Each objDrive in colDrives objDrive.VolumeName = "Finance Volume" objDrive.Put_ Next
Schedule AutoChk
Schedules Autochk.exe to run against drive C the next time the computer reboots.
strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set objDisk = objWMIService.Get("Win32_LogicalDisk") errReturn = objDisk.ScheduleAutoChk(Array("C:"))
Verify that All Drives are Ready
Demonstration script that uses the FileSystemObject to ensure that all drives are ready (i.e., media is inserted) before echoing the drive letter and available disk space. Script must be run on the local computer.
Set objFSO = CreateObject("Scripting.FileSystemObject") Set colDrives = objFSO.Drives For Each objDrive in colDrives If objDrive.IsReady = True Then Wscript.Echo "Drive letter: " & objDrive.DriveLetter Wscript.Echo "Free space: " & objDrive.FreeSpace Else Wscript.Echo "Drive letter: " & objDrive.DriveLetter End If Next
Verify ChkDsk Volume Status
Indicates whether or not any hard drives on a computer have the "dirty bit" set, and should have Chkdsk.exe run.
Const LOCAL_HARD_DISK = 3 strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colDisks = objWMIService.ExecQuery _ ("Select * from Win32_LogicalDisk Where DriveType = LOCAL_HARD_DISK ") For Each objDisk in colDisks Wscript.Echo "Device ID: "& vbTab & objDisk.DeviceID Wscript.Echo "Drive Type: "& vbTab & objDisk.VolumeDirty Next