#Скрипт проверки 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