SmartIndicator: индикатор здоровья дисков при входе в Windows

SMART-индикатор дисков при запуске Windows 1.1.0

Переводчик Google

Guest

Разработчик
Сообщения
430
Решения
1
Реакции
631
SMART-индикатор дисков при запуске Windows

Небольшой скрипт на PowerShell, который при входе в Windows проверяет
состояние жёстких дисков и показывает окно с цветным индикатором:

● зелёный — все диски в порядке (окно закрывается само через 15 секунд)
● оранжевый — есть предупреждения
● красный — диск может скоро выйти из строя (окно остаётся, пока не нажмёте OK)

Что проверяется:
  • общий статус диска от Windows и SMART-прогноз отказа;
  • температура;
  • переназначенные, нестабильные и неисправимые секторы;
  • время наработки в часах.

Требования:
  • Windows 7 и новее (PowerShell 2.0+), сторонние программы не нужны;
  • запуск от имени администратора (иначе Windows не отдаёт данные SMART).

Установка:
1. Положите файл SmartIndicator.ps1 в C:\Tools\
2. Запустите cmd от имени администратора.
3. Проверка вручную:
powershell -ExecutionPolicy Bypass -File C:\Tools\SmartIndicator.ps1
4. Включение автозапуска (проверка при каждом входе в систему):
powershell -ExecutionPolicy Bypass -File C:\Tools\SmartIndicator.ps1 -Install
5. Отключение автозапуска:
powershell -ExecutionPolicy Bypass -File C:\Tools\SmartIndicator.ps1 -Uninstall

Ограничения:
- диски за RAID-контроллером и некоторые USB-корпуса не отдают SMART через WMI,
для них скрипт напишет «нет данных SMART»;
- скрипт только показывает состояние, диск он не чинит и не заменяет
полноценные программы вроде CrystalDiskInfo;
- при красном индикаторе сразу сделайте резервную копию данных.

Скрипт открытый, весь код можно посмотреть и изменить в любом текстовом редакторе.
SmartIndicator.ps1
 
SMART-индикатор дисков: что нового в последней версии

ИЗМЕНЕНИЯ
- Заставка при запуске: сразу появляется окошко «Проверяю состояние дисков…»,
чтобы не казалось, что скрипт завис, пока идёт опрос дисков.
- Лог-файл SmartIndicator.log (лежит рядом со скриптом, при невозможности записи
- в %TEMP%). В него пишется дата, общий итог, строка по каждому диску,
ошибки WMI и сведения о том, как долго было открыто окно и почему оно закрылось.
Размер лога ограничен: больше 512 КБ - старый уходит в .old.
- Время показа окна настраивается: в начале файла переменная $AutoCloseSeconds
(по умолчанию 60 секунд; 0 - окно закрывается только кнопкой OK).
Если есть предупреждения или проблемы, окно не закрывается само.
- Отсутствие данных SMART или пустой список дисков теперь даёт предупреждение
(оранжевый), а не ложный зелёный «всё в порядке». Причина (например,
«отказано в доступе») показывается в окне и пишется в лог.
  • Более гибкое сопоставление диска с его SMART-записью.
  • Длинные строки в окне переносятся, окно растёт по высоте.
  • Окну больше не мешает клавиша Enter (кнопка OK нажимается только мышью).
  • Скрипт сам работает в режиме STA, нужном для окон Windows Forms
в PowerShell 2.0.
- Автозапуск сразу создаётся с ключом -STA; -Install отказывается работать,
если в пути к скрипту есть спецсимволы (& ^ % ! "). Тогда положите файл,
например, в C:\Tools.
- Любая ошибка скрипта записывается в лог.

КАК ОБНОВИТЬСЯ
1. Замените SmartIndicator.ps1 новой версией (сохраняйте в UTF-8 с BOM,
иначе русский текст превратится в «кракозябры»).
2. Чтобы в автозапуск попал ключ -STA, один раз выполните в cmd от администратора:
powershell -ExecutionPolicy Bypass -File C:\Tools\SmartIndicator.ps1 -Install
Старая задача заменится сама.

ВАЖНО
- Скрипт тестировался на Windows 7 (PowerShell 2.0). Проверять работу окна
лучше из cmd от администратора, а не из PowerShell ISE.
- Диски за RAID-контроллером и часть USB-корпусов не отдают SMART через WMI,
для них будет предупреждение «нет данных SMART».
- Скрипт только показывает состояние. При красном индикаторе сразу делайте
резервную копию данных.
 
на win 11. по m.2 не получил результат
1792674849521.webp


я такой батник нарисовал для запуска
Bash:
@echo off
:: Устанавливаем кодовую страницу 866 для корректного отображения кириллицы
chcp 65001 > nul

:: Запускаем скрипт PowerShell
powershell -ExecutionPolicy Bypass -File ".\SmartIndicator.ps1"

и рассмотри возможность скрипт положить на гитхаб
 
Последнее редактирование:
@Guest спасибо, хорошая идея!
Можно бы в ресурсы, только часть с получением SMART переписать чем-то более надежным, WMI не сахар.
 
Последнее редактирование:
Обновил. Результата по M.2 не было потому, что мой скрипт читал только классический ATA-SMART через WMI, а NVMe-диски его не отдают. Я добавил второй источник данных: Get-PhysicalDisk и Get-StorageReliabilityCounter, они есть в Windows 8, 10 и 11. Если классического SMART у диска нет, скрипт берёт из них статус здоровья, температуру, износ SSD, неисправимые ошибки и часы работы. На Windows 7 этот блок пропускается, там всё работает как раньше.

Сделал оболочку с окном настроек. Файлов теперь три, положите их все в одну папку, например C:\Tools:

SmartIndicator.ps1 (обновлён) читает настройки из файла SmartIndicator.ini. Если файла нет, работают значения по умолчанию, как раньше.
SmartIndicatorSettings.ps1 — само окно настроек.
SmartIndicatorSettings.bat — запускает окно настроек и сам запрашивает права администратора. Запускайте оболочку именно им.

Что можно настроить в окне

вести лог или нет, и папку для лога (кнопка «Обзор…», пусто — рядом со скриптом);
максимальный размер лога;
когда показывать окно: всегда, только при проблемах или никогда (только лог);
через сколько секунд окно закрывается само (0 — не закрывать);
пороги температуры: предупреждение и критично;
задержку запуска после входа в Windows.

Кнопки в окне

«Сохранить»;
«Проверить сейчас» (сохраняет настройки и запускает проверку);
«Открыть лог»;
«Включить автозапуск» и «Убрать автозапуск» (вверху показано, включён он сейчас или нет).

Автозапуск нужно один раз включить заново кнопкой, чтобы в него попала новая задержка из настроек.

Файл SmartIndicator.ini создаётся при первом нажатии «Сохранить» и лежит рядом со скриптом. Его можно править и вручную в Блокноте, строки вида ShowWindow=problems. Сохраняйте его в UTF-8 с BOM.
tools ini.zip
 
Последнее редактирование:
  • Like
Реакции: E100
Изменения в SmartIndicator.ps1


  • Основным источником данных стал Storage: Get-PhysicalDisk + Get-StorageReliabilityCounter (Windows 8/10/11). Раньше это был запасной вариант, а первым шёл нестабильный MSStorageDriver_FailurePredict*.
  • Добавлен второй уровень: прямое чтение Storage WMI (root\Microsoft\Windows\Storage, классы MSFT_PhysicalDisk и MSFT_StorageReliabilityCounter). Он включается, если командлетов нет или они ничего не вернули.
  • Старый WMI (root\wmi) теперь читается только для тех дисков, по которым Storage не дал данных. Если он не нужен, он вообще не запрашивается, и его ошибки не попадают в отчёт.
  • Данные из командлетов и из сырого WMI приводятся к единому виду (функции Convert-Health и New-StorEntry), и проверка дисков работает одинаково с обоими источниками.
  • В лог добавлено поле «источник» для каждого диска: Storage или WMI (устар.).
  • Побочный эффект: при данных из Storage в отчёте нет строк про переназначенные, нестабильные и неисправимые сектора (SMART 5, 197, 198). Они остались только в запасном пути через старый WMI.
  • Остальное не менялось: настройки в ini, установка и удаление автозапуска, окно-индикатор, лог, пороги температуры.
 
  • Like
Реакции: E100
Спасибо, отработало нормально, только для NVME не нашло кол-во отработанных часов.

1792762667680.webp


Пожелания, если можно, сделать пару отдельных скриптов bat и закинуть все вместе в архив:
- запускалка powershell (смысл что можно запускать дабл-кликом)
- установщик в автозапуск

Ну и неплохо бы авто-элевацию, ибо ПКМ по ps1 -> "Выполнить с помощью PowerShell" - так естественно не работает.
 
Проверил свои диски - один с предупреждением о неисправимой ошибки . Проверил на CrystalDiskInfo - всё вроде нормально
 
Архив SmartIndicator.zip готов.

В архиве четыре файла:

SmartIndicator.ps1 — ваш актуальный скрипт.
Запуск.bat — запускает проверку двойным кликом. Консольное окно не остаётся, видно только окно индикатора.
Установить в автозапуск.bat — вызывает -Install и показывает результат.
Удалить из автозапуска.bat — вызывает -Uninstall. Его вы не просили, я добавил его для пары к установщику.

Автоповышение прав. Каждый bat проверяет, есть ли права администратора. Если нет, он перезапускает себя через запрос UAC и закрывает исходное окно. Если отказаться в UAC, ничего не запустится. Рабочая папка принудительно ставится в папку скрипта, так что запуск из-под администратора пути не ломает. Также bat проверяет, что SmartIndicator.ps1 лежит рядом.

Распаковывайте архив целиком в постоянную папку, например C:\Tools\SmartIndicator. Задача автозапуска ссылается на путь к .ps1, поэтому после установки папку переносить нельзя. Если всё же перенесёте, запустите установщик заново.

В шапке .ps1 упомянут SmartIndicatorSettings.bat (окно настроек). Его в архив я не включал, потому что у меня его нет. Если он у вас есть, положите его рядом с остальными файлами. Если нужно, могу сделать такое окно настроек для SmartIndicator.ini.

Русские имена файлов и текст в bat сохранены в UTF-8 с переключением кодовой страницы. На современной Windows это работает, а на очень старых системах в консоли могут быть «кракозябры», хотя сами команды выполнятся.
 

SmartIndicator: индикатор здоровья дисков при входе в Windows​


Небольшой скрипт на PowerShell. При входе в Windows он проверяет все диски (HDD, SATA SSD, NVMe/M.2) и показывает окно со статусом:


  • 🟢 зелёный: всё в порядке, окно закроется само через заданное время;
  • 🟠 оранжевый: есть предупреждения (температура, износ, ошибки);
  • 🔴 красный: диск может скоро выйти из строя. Окно остаётся, пока вы его не закроете.

Сторонние утилиты не нужны. Работает на Windows 7 и новее (PowerShell 2.0+), для NVMe/M.2 нужна Windows 8/10/11.


Что проверяется​


  • Общий статус здоровья диска по версии Windows (Healthy / Warning / Unhealthy, «Pred Fail»).
  • Температура с настраиваемыми порогами предупреждения и критического уровня.
  • Износ SSD в процентах.
  • Неисправимые ошибки чтения и записи.
  • Наработка в часах.
  • Для дисков, читаемых через старый WMI: переназначенные, нестабильные и неисправимые сектора (SMART 5, 197, 198).

Откуда берутся данные​


Источники перебираются по порядку, пока один из них не вернёт данные:


  1. Get-PhysicalDisk + Get-StorageReliabilityCounter (Windows 8/10/11).
  2. Прямое чтение Storage WMI (root\Microsoft\Windows\Storage), если командлетов нет.
  3. Старый WMI (MSStorageDriver_FailurePredict*). Он на многих системах нестабилен, поэтому подключается только для дисков, по которым первые два источника ничего не дали.

В логе для каждого диска указан источник данных.


Состав архива​


ФайлНазначение
SmartIndicator.ps1сам скрипт
Запуск.batразовый запуск двойным кликом
Установить в автозапуск.batсоздаёт задачу в планировщике
Удалить из автозапуска.batудаляет задачу
SmartIndicatorSettings.bat / .ps1окно настроек

Все bat-файлы сами запрашивают права администратора через UAC. Запускать «Выполнить с помощью PowerShell» не нужно.


Установка​


  1. Распакуйте архив в постоянную папку без символов & ^ % ! в пути, например C:\Tools\SmartIndicator. После установки папку переносить нельзя: задача ссылается на путь к скрипту. Если всё же перенесли, запустите установщик заново.
  2. Запустите Установить в автозапуск.bat и подтвердите запрос UAC.
  3. Готово: при входе в Windows с задержкой (по умолчанию 20 секунд) скрипт запустится сам.

Убрать автозапуск можно через Удалить из автозапуска.bat или кнопкой в окне настроек.


Настройки​


Лежат в SmartIndicator.ini рядом со скриптом. Файл можно править вручную или через SmartIndicatorSettings.bat. Если файла нет, берутся значения по умолчанию.


ПараметрПо умолчаниюОписание
LogEnabled1вести лог (0 - выключить)
LogFolderпустопапка лога; пусто - рядом со скриптом
LogMaxKB512при превышении лог переносится в .log.old
ShowWindowalwaysalways / problems (только при проблемах) / never (только лог)
AutoCloseSeconds60через сколько секунд закрывать «зелёное» окно; 0 - не закрывать
TempWarn55порог предупреждения, °C
TempCrit65критический порог, °C
StartupDelaySeconds20задержка запуска после входа в систему

Окно настроек умеет сохранять параметры, запускать проверку сразу, открывать лог и включать или убирать автозапуск.


Лог​


Каждая проверка дописывается в SmartIndicator.log: итог, строка по каждому диску с источником данных и замечаниями, ошибки чтения. Если лог нельзя писать рядом со скриптом, он создаётся во временной папке. Для дисков с проблемами, прочитанных через старый WMI, дополнительно пишется сырой SMART-блок (512 байт в hex), чтобы его можно было разобрать вручную.


Ограничения​


  • Нужны права администратора, иначе часть дисков не отдаст данные. Bat-файлы запрашивают их сами.
  • Если данные получены через Storage (основной путь), в отчёте нет переназначенных, нестабильных и неисправимых секторов: эти счётчики Windows там не отдаёт.
  • USB-накопители и внешние боксы часто не отдают SMART. Тогда диск получит статус «нет данных SMART», это не неисправность.
  • Установка автозапуска не сработает, если запуск скриптов запрещён групповой политикой. Флаг -ExecutionPolicy Bypass её не обходит. Скрипт сообщит об этом при установке.
  • Это индикатор «посмотрел при загрузке», а не полноценный мониторинг. Для детального анализа лучше CrystalDiskInfo или smartctl.

Если что-то определяется неправильно​


Приложите кусок SmartIndicator.log (без серийных номеров) и модель диска. Особенно интересны диски, на которых температура, износ или статус показываются неверно или не показываются вовсе.
 

Вложения

  • SmartIndicator.zip
    SmartIndicator.zip
    12.6 KB · Просмотры: 3
  • настройка.webp
    настройка.webp
    23.2 KB · Просмотры: 7
  • диск.webp
    диск.webp
    18.6 KB · Просмотры: 8
Guest добавил(а) новый ресурс:

SmartIndicator: индикатор здоровья дисков при входе в Windows - SmartIndicator: индикатор здоровья дисков при входе в Windows

SmartIndicator 1.1.0 - индикатор здоровья дисков при входе в Windows

Скрипт на PowerShell: при входе в систему проверяет все диски (HDD, SATA SSD, NVMe/M.2) и показывает окно. Зелёное - всё в порядке (закроется само), оранжевое - есть предупреждения, красное - диск может скоро выйти из строя. Сторонние утилиты не нужны.

Что проверяет: статус здоровья по версии Windows, температуру, износ SSD...

Узнать больше об этом ресурсе...
 
Ничего если без спроса распространяю данный скрипт?

Просто Микаэль против, чтобы у него на форуме ставили прямые ссылки на другие, поэтому я через цитаты скинул туда информацию...
 
Случайно, можно там как-то исправить?
Куда перекинуть? Я думаю в раздел жестких дисков, там логичнее будет.
И мне кажется первый пост темы можно будет отредактировать даже просто поместить форматирование, как крайний пост. Мне этого сделать?
 
Закрепил нормально оформленный крайний пост темы, в первый.
 
  • Like
Реакции: akok
прикрепил ресурс к этой теме обсуждения
 

Похожие темы

Назад
Сверху Снизу