通过命令行是否可以知道我的内置 DVD 驱动器连接到哪里(哪个插座、sata、pcie 等)?

通过命令行是否可以知道我的内置 DVD 驱动器连接到哪里(哪个插座、sata、pcie 等)?

使用命令行(powershell、wmic 等),我需要了解主板上有关内置 DVD 驱动器的所有信息,包括所连接的端口/插座。

是否可以?

我只发现了类似这样的内容:

Get-CimInstance -ClassName Win32_diskdrive

或者

wmic cdrom where mediatype!='unknown' get /format:list

但他们没有给我全部的信息(尤其是它所连接的插座)

谢谢!

答案1

我回答了这个问题这里但仅适用于“磁盘驱动器”类型的设备,因此我更新了过滤器以包含 CD ROM 设备,如下所示:

# query for wmi objects
$drivers = Get-CimInstance win32_pnpsignedDriver -filter 'DeviceName="Disk drive" OR DeviceName="CD-ROM Drive"'
$disks = Get-CimInstance Win32_PnPEntity | ? {$_.service -in 'disk','cdrom' -and $_.name -ne 'Xvd'}  # Xvd is an xbox/windows-store-related device

# Iterate through disks
$result = foreach ($disk in $disks) {
  # disk controllers are usually either IDE (IDE/SATA) or SCSI (NVME/M.2/virtual)
  $controller = Get-CimInstance -query "ASSOCIATORS OF {Win32_PnPEntity.DeviceID='$($disk.DeviceID)'}" | 
    Where {$_.CreationClassName -in 'Win32_IDEController','Win32_SCSIController'}

  # the driver class lists drive location
  $driver = $drivers | where DeviceID -eq $disk.PNPDeviceID

  # combine data for result
  $disk | select Name,
    @{l='location';e={$driver.Location}},
    @{l='controllerName';e={$controller.Name}}
}
$result

在我的虚拟机上,这将输出硬盘和 CD-ROM 设备的列表以及它们插入的位置:

Name                                 location                         controllerName   
----                                 --------                         --------------   
NECVMWar VMware SATA CD00            Bus Number 0, Target Id 0, LUN 0 Standard SATA ...
VMware Virtual disk SCSI Disk Device Bus Number 0, Target Id 0, LUN 0 LSI Adapter, S...
VMware Virtual disk SCSI Disk Device Bus Number 0, Target Id 1, LUN 0 LSI Adapter, S...

注意:不要根据位置编号来假设有多少个端口

没有简单的方法可以判断哪些/多少端口未使用 - Windows 不会跟踪它们。获取该信息的最佳方法可能是在线查找主板规格。

相关内容