I'm trying to write a script to dynamically schedule Autocheck for all physical hard drives on my servers. I found this snippet, which works, but you have to statically assign the drive letter.
So, I made a few modifications so that it would dynamically find the physical drives on the server, but I don't know how to feed the drive letter into the objDisk.ScheduleAutoChk statement. Here is my code:
What am I doing wrong?
Code:
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objDisk = objWMIService.Get("Win32_LogicalDisk")
errReturn = objDisk.ScheduleAutoChk(Array("D:"))
Wscript.Echo (errReturn)
Code:
strComputer = "."
set objWMI = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
set colDisks = objWMI.ExecQuery _
("Select * from Win32_LogicalDisk WHERE DriveType = '3'")
For Each objDisk in colDisks
errReturn = objDisk.ScheduleAutoChk (Array(objDisk.DeviceID))
if errReturn = 0 then
WScript.Echo "Autochk scheduled on next reboot for drive " & objDisk.DeviceID
else
WScript.Echo "Error running chkdsk on drive " & objDisk & ". Error Code: " & errReturn
end if
Next