如何使用VBScript从驱动器盘符中获取硬盘编号
如何使用VBScript从驱动器盘符中获取硬盘号 提前谢谢。WMI怎么样如何使用VBScript从驱动器盘符中获取硬盘编号,vbscript,Vbscript,如何使用VBScript从驱动器盘符中获取硬盘号 提前谢谢。WMI怎么样 strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") Set colItems = objWMIService.ExecQuery( _ "SELECT * FROM Win32_DiskDrive",,48) For Each objItem in colIt
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery( _
"SELECT * FROM Win32_DiskDrive",,48)
For Each objItem in colItems
s = s & "SerialNumber: " & objItem.SerialNumber & vbcrlf
s = s & "Model: " & objItem.Model
Next
MsgBox s
Remou对WMI的看法是正确的,只是需要让它变得更混乱一点。如果有一种更简单/更好的方法可以做到这一点,你一点也不会感到惊讶,但是这个脚本至少应该为你提供一个好的起点来做你需要的事情
Dim query
Dim objWMI
Dim diskDrives
Dim diskDrive
Dim partitions
Dim partition ' will contain the drive & partition numbers
Dim logicalDisks
Dim logicalDisk ' will contain the drive letter
Set objWMI = GetObject("winmgmts:\\.\root\cimv2")
Set diskDrives = objWMI.ExecQuery("SELECT * FROM Win32_DiskDrive") ' First get out the physical drives
For Each diskDrive In diskDrives
query = "ASSOCIATORS OF {Win32_DiskDrive.DeviceID='" + diskDrive.DeviceID + "'} WHERE AssocClass = Win32_DiskDriveToDiskPartition" ' link the physical drives to the partitions
Set partitions = objWMI.ExecQuery(query)
For Each partition In partitions
query = "ASSOCIATORS OF {Win32_DiskPartition.DeviceID='" + partition.DeviceID + "'} WHERE AssocClass = Win32_LogicalDiskToPartition" ' link the partitions to the logical disks
Set logicalDisks = objWMI.ExecQuery (query)
For Each logicalDisk In logicalDisks
Wscript.Echo logicalDisk.DeviceID & " - " & partition.Caption
Next
Next
Next
这将枚举所有驱动器号并给出结果,例如:
C:-Disk#2,Partion#0
这不是确切的答案,但如果某些人在C中需要它,请使用我刚刚创建的函数
private string GetDiskIndex(string driveLetter)
{
driveLetter = driveLetter.TrimEnd('\\');
ManagementScope scope = new ManagementScope(@"\root\cimv2");
var drives = new ManagementObjectSearcher(scope, new ObjectQuery("select * from Win32_DiskDrive")).Get();
foreach(var drive in drives)
{
var partitions = new ManagementObjectSearcher(scope, new ObjectQuery("ASSOCIATORS OF {Win32_DiskDrive.DeviceID='" + drive["DeviceID"] + "'} WHERE AssocClass = Win32_DiskDriveToDiskPartition")).Get();
foreach(var partition in partitions)
{
var logicalDisks = new ManagementObjectSearcher(scope, new ObjectQuery("ASSOCIATORS OF {Win32_DiskPartition.DeviceID='" + partition["DeviceID"] + "'} WHERE AssocClass = Win32_LogicalDiskToPartition")).Get();
foreach (var logicalDisk in logicalDisks)
{
if (logicalDisk["DeviceId"].ToString() == driveLetter) return partition["DiskIndex"].ToString();
}
}
}
return null;
}
你说的“硬盘号”是指序列号还是别的什么?不,我不是指序列号。我指的是由该脚本获取硬盘序列号所确定的编号(名称)。我需要获得BIOS确定的数字。你可以在“磁盘管理”菜单中看到这个数字。哎呀,我以为你是这么说的,重读一遍,我发现不是。WMI返回了很多信息(也可以获取代码创建者。这个问题被标记为“否”,请在相应的主题问题中发布。