Answer the question
In order to leave comments, you need to log in
How to collect information about the status of SMART hard drives on computers in the network (AD)?
In a company where I work relatively recently, hard drives began to "crumble" on computers of a number of models from a very well-known manufacturer. Almost every fifth of the disks (seagate barracuda 7200.12) has a full list of SMART bad blocks. when checking MHDD, the disks were dead or close to it.
In this regard, I'm wondering if there is a way to centrally collect information about the state of the hard ones on these computers (and there are more than a hundred of them, all in the domain) remotely, without connecting to each machine and not running some kind of CrystalDiskInfo on each machine?
Answer the question
In order to leave comments, you need to log in
#Скрипт проверки 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 #Время выполнения
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question