Как собрать информацию о состоянии S.M.A.R.T. жестких дисков на компах в сети (AD)?

В компании, где я относительно недавно работаю начали "сыпаться" жесткие диски на компах ряда моделей одного очень известного производителя. Чуть ли не на каждом пятом из дисков (seagate barracuda 7200.12) переполнен лист бэд-блоков S.M.A.R.T. Уже заменили с десяток дисков, т.к. при проверке MHDD диски были мертвыми или близки к этому.
В связи с этим интересует, есть ли способ централизованно собрать информацию о состоянии жестких на этих компах (а таких больше сотни, все в домене) удаленно, не подключаясь к каждой машине и не запуская какой нибудь CrystalDiskInfo на каждой машине?
  • Вопрос задан
  • 4020 просмотров
Решения вопроса 2
#Скрипт проверки SMART и наличия папок C:\FOUND*
#Если компьютер не активен, то результатов по нему не будет

#Если результат работы PredictFailure == True, значит, диск в опасности, если PredictFailure == False - все хорошо у диска
#Результат отсортирован по Reason и имени компьютера
#SearchBase надо указать свою. Примерное время выполнения 10-120 мин для проверки 10-100 (примерно) компьютеров
#Если присутствует факт исправления ошибок (chkdisk /r) на диске, рекомендуется провести дополнительную диагностику

Clear-Host
$watch = [System.Diagnostics.Stopwatch ]::StartNew()
$watch.Start() #Запуск таймера
Write-Host "Время запуска"
(get-date) .ToString()
$Computers = get-adcomputer -SearchBase "ou=xxx, dc=xx, dc=ru" -Filter *  |select -exp name
(Get-WmiObject  -Computername $Computers -namespace root\wmi -class MSStorageDriver_FailurePredictStatus -ErrorAction Silentlycontinue | Select PSComputerName, InstanceName, PredictFailure, Reason | sort PredictFailure, PSComputerName | Format-Table -Autosize)

Write-Host "Если результат работы PredictFailure == True, значит, диск в опасности, если PredictFailure == False - все хорошо у диска"

foreach ($Server in $Computers)
{
      if (test-path -path "\\$server\C`$\FOUND*" )
 
           {
           Write-Host " $Server - присутствует факт исправления ошибок на диске" -ForegroundColor Red
            }
      else
           {
           Write-Host " $Server - исправлений ошибок на диске не замечено" -ForegroundColor Green
            }
}
Write-Host "Если присутствует факт исправления ошибок на диске, рекомендуется провести дополнительную диагностику"
Write-Host "Время окончания"
(get-date) .ToString()
$watch.Stop() #Остановка таймера
Write-Host "Время выполнения"
Write-Host $watch .Elapsed #Время выполнения


Развитием скрипта может быть отправка результатов проверки по e-mail
Ответ написан
Jump
@Jump Куратор тега Системное администрирование
Системный администратор со стажем.
Примерно так.
Get-WmiObject -Namespace root\wmi -List MSStorageDriver_Failure*

Тут рабочий пример.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@LiguidCool
Я знаю только геморный способ:
Запустить что-то через консоль, что делает отчёт.
Распарсить отчёт и залить в БД.
Вывести статистику.
Какую прогу использовал точно не помню, попробуй Aspia или Speecy. Скрипты на AutoIT.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы