0

WMI 呼び出しを使用してドライブ インターフェイスの種類とドライブ文字を取得しようとしていますが、ドライブ文字は常に、マシンで最後に割り当てられたドライブとして返されます。

誰でも助けることができますか?

'On Error Resume Next
 Option Explicit

 Dim strComputer, objWMIService, colIDiskDrive, objDiskDrive, colLogicalDisk, objLogicalDisk, strDriveLetter, strPNPDeviceID, strDiskLetter, strInterfaceType

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colIDiskDrive = objWMIService.ExecQuery("Select * from Win32_DiskDrive",,48)

For Each objDiskDrive in colIDiskDrive
strPNPDeviceID = objDiskDrive.PNPDeviceID
strInterfaceType = objDiskDrive.InterfaceType
Set colLogicalDisk = objWMIService.ExecQuery("Select * from Win32_LogicalDisk") 

For Each objLogicalDisk in colLogicalDisk
        strDiskLetter = objLogicalDisk.Name
Next

Wscript.Echo strInterfaceType & " " & strDiskLetter
Next
4

1 に答える 1

0

うまくいけば、Echo を 2 番目/ネストされた For/Next ループ内に移動します。

Option Explicit

Dim strComputer, objWMIService, colIDiskDrive, objDiskDrive, colLogicalDisk, objLogicalDisk, strDriveLetter, strPNPDeviceID, strDiskLetter, strInterfaceType

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colIDiskDrive = objWMIService.ExecQuery("Select * from Win32_DiskDrive",,48)

For Each objDiskDrive in colIDiskDrive
    strPNPDeviceID = objDiskDrive.PNPDeviceID
    strInterfaceType = objDiskDrive.InterfaceType
    Set colLogicalDisk = objWMIService.ExecQuery("Select * from Win32_LogicalDisk") 

    For Each objLogicalDisk in colLogicalDisk
        strDiskLetter = objLogicalDisk.Name
        Wscript.Echo strInterfaceType & " " & strDiskLetter
    Next
Next
于 2013-01-23T17:00:20.567 に答える