我想知道是否有任何win32类可以检测硬盘是eide还是sata。提前谢谢。
发布于 2011-03-19 21:53:30
没有直接的方法可以找到它。但是,您可以使用Win32的标题属性
_
DiskDrive并对其进行解析,以查看您是否有ATA盘或SCSI盘。在我的系统上,SATA磁盘有一个标题
..。
执行此操作的方法是:
Get-WMIObject -Class Win32_DiskDrive | Select Caption, Index
您可以解析
属性以查找它是否包含ATA或SCSI。
发布于 2011-03-19 23:10:26
中提到的
其他答案
驱动器的标题(即型号名称)可能包含此信息,您可以导航WMI对象关联,直到您到达具有更明确的名称/标题/其他属性的设备。
保持
使用视图打开|在开发时通过连接打开设备将使事情变得更容易。
导航WMI对象图的关键是
“联营公司”
查询。
因此(使用大量的别名和其他快捷方式来简化这一点:我会在我计划重用的东西中避免这种情况):
gwmi win32_DiskDrive |
%{gwmi -query "ASSOCIATORS OF {$($_.__RELPATH)} where resultclass = Win32_PnpEntity"}
将会得到
每个磁盘驱动器的。
在第一个(出于探索目的)磁盘驱动器上对另一个级别重复此操作,以找出存在哪种关联:
gwmi win32_DiskDrive |
%{gwmi -query "ASSOCIATORS OF {$($_.__RELPATH)} where resultclass = Win32_PnpEntity" |
%{gwmi -query "ASSOCIATORS OF {$($_.__RELPATH)}"}} | fl __CLASS,__RELPATH
显示了WMI类的混合:
__CLASS : Win32_SystemDriver
__RELPATH : Win32_SystemDriver.Name="disk"
__CLASS : Win32_ComputerSystem
__RELPATH : Win32_ComputerSystem.Name="hostname"
__CLASS : Win32_IDEController
__RELPATH : Win32_IDEController.DeviceID="PCIIDE\\IDECHANNEL\\4&5ECF4F&0&2"
__CLASS : CIM_DataFile
__RELPATH : CIM_DataFile.Name="c:\\windows\\system32\\drivers\\disk.sys"
__CLASS : Win32_DiskDrive
__RELPATH : Win32_DiskDrive.DeviceID="\\\\.\\PHYSICALDRIVE0"
最后一个就是回到磁盘驱动器,每个设备都与一个计算机系统相关联。但那就是
对象看起来很有趣。
它有一个
属性的值,但这里的所有实例都是37 ("IDE"),并且两个控制器通道都有实例
和
控制器:
PS[64bit] C:\bin\PowerShell> gwmi win32_idecontroller | ft -auto -wrap caption,description
caption description
------- -----------
ATA Channel 1 IDE Channel
ATA Channel 0 IDE Channel
ATA Channel 1 IDE Channel
Standard AHCI 1.0 Serial ATA Controller Standard AHCI 1.0 Serial ATA Controller
Standard AHCI 1.0 Serial ATA Controller Standard AHCI 1.0 Serial ATA Controller
Standard Dual Channel PCI IDE Controller Standard Dual Channel PCI IDE Controller
ATA Channel 0 IDE Channel
ATA Channel 1 IDE Channel
ATA Channel 2 IDE Channel
ATA Channel 3 IDE Channel
ATA Channel 4 IDE Channel
ATA Channel 5 IDE Channel
ATA Channel 0 IDE Channel
所以这不会像到达一个
..。
返回并扩展
关联于
对于我的磁盘:
gwmi win32_DiskDrive |
%{gwmi -query "ASSOCIATORS OF {$($_.__RELPATH)} where resultclass = Win32_PnpEntity" |
%{gwmi -query "ASSOCIATORS OF {$($_.__RELPATH)} where resultclass = Win32_IDEController"}} |
fl Caption,Description
caption : ATA Channel 2
description : IDE Channel
这就是SATA通道,该通道会与控制器关联吗?和简化:
不需要内部管道:
gwmi win32_DiskDrive |
%{gwmi -query "ASSOCIATORS OF {$($_.__RELPATH)} where resultclass = Win32_PnpEntity"} |
%{gwmi -query "ASSOCIATORS OF {$($_.__RELPATH)} where resultclass = Win32_IDEController"} |
%{gwmi -query "ASSOCIATORS OF {$($_.__RELPATH)} where resultclass = Win32_IDEController"} |
fl __CLASS,__RELPATH.Caption,Description
这一步什么也没有找到,只是稍微探索一下(捕获
从一个查询粘贴到另一个查询以控制流水线)表示以下关联:
DiskDrive --> PnpDevice --> IDEContoller --> PnpDevice --> IDEController
应该会得到结果。避免循环(因为IDEController有两个关联的PnpDevice对象)留作练习。
一旦到达真正的控制器,将需要解析标题。
坏消息
重复查询另一个系统上的控制器,得到以下三个实例
尽管有
四个
控制器(1个IDE和3个SATA),这可能与其中一个作为RAID运行的非平凡映射有关?
当然,SATA本质上具有与IDE相同的逻辑(编程)接口,以使新的硬件与软件协同工作( PCI和PCI-Express也是如此),这意味着操作系统实际上不需要知道。
发布于 2021-02-28 04:10:42
我知道,这个任务有点老了,但是使用另一个WMI对象怎么样:
Get-WmiObject -Class MSFT_PhysicalDisk -Namespace root\Microsoft\Windows\Storage | Select FriendlyName, MediaType, BusType
BusType 2代表ATAPI,3代表ATA,11代表SATA。更多的是USB、SCSI或SSD。据维基百科
https://en.wikipedia.org/wiki/Parallel
_
ATA
ATA和ATAPI都是硬盘的并行接口(IDE / EIDE)。
据我所知,这个对象从Windows7开始就可以使用了,并提供了许多有趣的价值。
https://stackoverflow.com/questions/5362199
复制相似问题