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

В компании, где я относительно недавно работаю начали "сыпаться" жесткие диски на компах ряда моделей одного очень известного производителя. Чуть ли не на каждом пятом из дисков (seagate barracuda 7200.12) переполнен лист бэд-блоков S.M.A.R.T. Уже заменили с десяток дисков, т.к. при проверке MHDD диски были мертвыми или близки к этому.
В связи с этим интересует, есть ли способ централизованно собрать информацию о состоянии жестких на этих компах (а таких больше сотни, все в домене) удаленно, не подключаясь к каждой машине и не запуская какой нибудь CrystalDiskInfo на каждой машине?
  • Вопрос задан
  • 4184 просмотра
Решения вопроса 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.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы