|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - HDD/SSD S.M.A.R.T. - парсинг RAW-значений атрибутов. |
|
PowerShell - HDD/SSD S.M.A.R.T. - парсинг RAW-значений атрибутов.
|
Новый участник Сообщения: 35 |
Профиль | Отправить PM | Цитировать
Всем привет!
Есть доменная сеть с клиентами не ниже Windows 7. Встала интересная задача: 1. Сформировать список ПК из определённого файла. 2. Собирать по всем ПК/ноутбукам из п.1 S.M.A.R.T. атрибуты подключённых по SATA или M.2 имеющихся HDD/SSD(Бывает часто, что подключены оба). 3. После сборки этих данных - парсить RAW-значения атрибутов на предмет отличия от нуля: - 05 Reallocated Sector Count - 187 (BB) Reported Uncorrected Sector Count (UNC Error) - 197 (С5) Current Pending Sector Count - 198 (С6) Offline Uncorrectable Sector Count (Uncorrectable Sector Count) - 200 (С8) Write Error Rate (MultiZone Error Rate) 4. Если находятся ПК, у которых RAW-значения накопителей выше нуля - отправить по почте список этих ПК. Пункты 1,2,4 реализовал
##### п.1 $COMPUTERS = get-content D:\pc.txt ##### п.2 foreach ($computer in $COMPUTERS) { $smart = gwmi -Namespace root\WMI -ComputerName $computer -Class MSStorageDriver_FailurePredictData if ($smart.VendorSpecific.Length -gt 0) { $smart = @($smart) } for ($n = 0; $n -lt $smart.Length; $n++) { $result = @() for ($i = 2; $i -lt $smart[$n].VendorSpecific.Length; $i += 12) { $result += [pscustomobject] @{ AttrID = $smart[$n].VendorSpecific[$i]; Raws = $smart[$n].VendorSpecific[($i+5)..($i+10)]; ##### п.3 if(RAW-значение аттрибутов 05 или 187 или 197 или 198 или 200 больше нуля) { ##### п.4 $Server = 'mail_server_address.ru' $From = 'my_mail@mail_server_address.ru' $To = 'my_mail@mail_server_address.ru' $encoding = [System.Text.Encoding]::UTF8 $BodyM = "" Send-MailMessage -From $From -To $To -SmtpServer $server -Body "$Theme `n$BodyM" -Subject "SMART Alert - $computer" -Encoding $encoding } } } Пример вывода атрибутов по время работы скрипта:
AttrID Raws ------ ---- 1 {55, 53, 153, 7...} 3 {0, 0, 0, 0...} 4 {65, 25, 0, 0...} 5 {9, 0, 0, 0...} 7 {232, 254, 47, 19...} 9 {36, 132, 0, 0...} 10 {0, 0, 0, 0...} 12 {185, 1, 0, 0...} 183 {0, 0, 0, 0...} 184 {0, 0, 0, 0...} 187 {0, 0, 0, 0...} 188 {12, 0, 0, 0...} 189 {6, 0, 0, 0...} 190 {38, 0, 32, 39...} 194 {38, 0, 0, 0...} 195 {55, 53, 153, 7...} 197 {0, 0, 0, 0...} 198 {0, 0, 0, 0...} 199 {0, 0, 0, 0...} 240 {242, 86, 0, 0...} В нём, к примеру, значение атрибута №5 равно 9, т.е. уже с HDD имеется проблема(приложил картинку). Вопрос только в том, как правильно парсить в п.3 эти значения? |
|
Отправлено: 07:52, 02-07-2018 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата rango13:
|
|
Отправлено: 08:53, 02-07-2018 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 35
|
Профиль | Отправить PM | Цитировать Цитата Iska:
|
|
Отправлено: 10:05, 02-07-2018 | #3 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать $RawIndex = 5,187,197,198,200 $IsSmartBad = $false for ($n = 0; $n -lt $smart.Length; $n++) { for ($i = 2; $i -lt $smart[$n].VendorSpecific.Length; $i += 12) { if($RawIndex -contains $smart[$n].VendorSpecific[$i]) { $smart.VendorSpecific[($i+5)..($i+10)] | Where {$_ -gt 0} | Foreach { $IsSmartBad = $true } } } } if($IsSmartBad) { $Server = 'mail_server_address.ru' $From = 'my_mail@mail_server_address.ru' $To = 'my_mail@mail_server_address.ru' $encoding = [System.Text.Encoding]::UTF8 $BodyM = "" Send-MailMessage -From $From -To $To -SmtpServer $server -Body "$Theme `n$BodyM" -Subject "SMART Alert - $computer" -Encoding $encoding } |
Отправлено: 12:52, 02-07-2018 | #4 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
HDD - HELP HDD RAW в NTFS | пичалька | Накопители (SSD, HDD, USB Flash) | 4 | 18-02-2016 18:14 | |
SSD - Windows не хочет грузится с SSD при подключенном SSD и HDD | Odess | Накопители (SSD, HDD, USB Flash) | 7 | 19-04-2015 21:51 | |
HDD - Кто клонировал HDD 2TB или более прогой "HDD-Raw-Copy-Tool"? | DENIS451 | Накопители (SSD, HDD, USB Flash) | 2 | 03-02-2014 16:17 | |
K50ID + SSD возможно ли поставить вместо hdd ssd intel 520? | OmarMaly | Ноутбуки | 5 | 17-08-2013 20:01 | |
HDD - [решено] Значения атрибутов SMART и возврат HDD продавцу | minos66 | Накопители (SSD, HDD, USB Flash) | 1 | 01-02-2009 18:21 |
|