Войти

Показать полную графическую версию : Узнать RPM жесткого диска?


HFShak
27-02-2017, 15:10
Добрый день.
Точно не уверен, но может эта информация где-то в этом классе?

$Disk = Get-WmiObject -Class MSStorageDriver_ATAPISmartData -Namespace 'Root\Wmi'
$Disk.VendorSpecific

Кто-нибудь знает как узнать скорость вращения ж\д используя ps\cmd?

greg zakharov
27-02-2017, 20:41
Что из себя представляет класс MSStorageDriver_ATAPISmartData? Запускаем обозрезатель WMI и видим:
MSStorageDriver_ATAPISmartData
----------------------------------------------------------------------------------------------------
Данные ATAPI SMART

...

VendorSpecific(Type: UInt8, Local: True, Array: True)
Данные предсказания ошибок, от производителя

...
То есть, в VendorSpecific хранятся данные S.M.A.R.T. как то, например, температура HDD, которая по идее должна вычисляться примерно так:
@echo off
setlocal
set "wmi=wmic /namespace:\\root\wmi path"
set "wmi=%wmi% MSStorageDriver_ATAPISmartData"
set "wmi=%wmi% get VendorSpecific /value"
for /f "tokens=2 delims=}{" %%i in ('%wmi%') do (
set "smart=%%i"
)
rem 151 байт для WinXP, 127 - Win7
call:getbyte 127 %smart%
endlocal
exit /b

:getbyte
for /l %%i in (1, 1, %1) do shift
echo:HDD temperature: %2C
exit /b
Что же касается скорости вращения, если Вы конечно не подразумеваете под ней раскрутку шпинделя, то здесь Вы ее не найдете. Для этого Вам придется прибегруть либо к счетчикам производительности, вычисляя соотношение обмена данных с диском из значения, получаемого через:
typeperf "\Физический диск(_Total)\Скорость обмена с диском (байт/сек)"
либо обратиться к WinAPI, конкретно - DeviceIoControl (или комбинации NTAPI'шных функций, как NtQuerySystemInformation, NtDeviceIoControlFile и т.д.).




© OSzone.net 2001-2012