• Администрация SafeZone приветствует вас на нашем форуме!
    Если вы больше не желаете видеть рекламу при просмотре тем и сообщений - то достаточно просто зарегистрироваться. Для зарегистрированных пользователей реклама не отображается.

Скрипт получения отчета о проверке диска (CHKDSK)

Turok

Активный пользователь
Сообщения
407
Симпатии
84
#1
Dragokas, Я уже отказался от продолжения писать вики-статьи для Microsoft Community, мне с вами и OSzone.net,CyberForum.ru значительно интересней и полезней. Но тему чекдиска обещал по возможности добить. Поможешь ?!
Загляни в тему http://safezone.cc/threads/pomogite-napisat-statju.23990/page-4#post-183388, посты 78, 83 и 84.
Не по теме:
И на этом будем с Майкрософтом завязывать. В конце концов, я смотрю ребята сами то рогами не шевелят, хотят, что бы кто то за них всё делал. Пусть тогда бабло платят.
 

shestale

Ассоциация VN/VIP
Преподаватель
Сообщения
9,296
Симпатии
4,829
#2
И на этом будем с Майкрософтом завязывать.
Ага, вы им назло, у себя еще и windows удалите.
п.с.
извиняюсь, но не мог я тут не съязвить :Yahoo:
Ну а если серьезно, то какая разница где опыта набираться, главное что-бы знания прирастали, ведь так?))
 

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
5,434
Симпатии
5,292
#3
Итак, вот вариант, который у нас в полезных примерах:
Просмотр последнего отчета о проверке диска (chkdsk)

Нажмите комбинацию клавиш Win + R и введите PowerShell

Скопируйте и вставьте код:

Для Windows 7
PHP:
get-winevent -FilterHashTable @{logname="Application"; id="1001"; starttime="01/01/2011"}| ?{$_.providername –match "wininit"} | fl timecreated, message > "$env:homepath\desktop\chkdsk_history.txt"
и нажмите ENTER.

Для Windows 8
PHP:
Get-EventLog -LogName Application -Source chkdsk | select -Last 5 -ExpandProperty Message > "$env:homepath\desktop\chkdsk_history.txt"
Лог будет сохранен в файл chkdsk_history.txt на рабочем столе.

Спасибо Koza Nozdri и dzu38

Дело в том, что ChkDsk можно запустить для несистемного диска,
тогда для выполнения проверки система не будет перезагружена
и код события / источник сообщения будут другими.

Это пример в Windows 7.
1.png Вот так должно работать на любой системе с настройками по-умолчанию (не проверял):

Код Batch:
Код:
::
wmic path win32_NTLogEvent WHERE "Logfile='Application' AND (SourceName='Chkdsk' OR SourceName='wininit') AND (EventIdentifier=1001 OR EventIdentifier=26214)" get /value > chk.log
::
Вероятно, будут лишние записи в логе.
Нужно иметь перед собой такие логи, чтобы убрать фальсы.Чтобы не быть привязанным к инструментарию WMI (вдруг он поврежден - 1 случай из 100),
можно воспользоваться SQL-подобным запросом через утилиту LogParser. Делает тоже самое - выборка из лога журнала событий.Но и не забывать про вероятность отключенной службы "Журнал событий Windows" и (как Вы говорили) "Сборщик событий Windows".
Это можно также проверять / запускать скриптом.
 
Последнее редактирование:

Turok

Активный пользователь
Сообщения
407
Симпатии
84
#4
wmic path win32_NTLogEvent WHERE "Logfile='Application' AND (SourceName='Chkdsk' OR SourceName='wininit') AND (EventIdentifier=1001 OR EventIdentifier=26214)" get /value > chk.log
Проверил, работает, спасибо. Только, если в таком виде, лог сохраняется в папке System32, а если заменить chk.log на "$env:homepath\desktop\chkdsk_history.txt" - на рабочем столе.
Aleх, а почемк, когда я проверял скрипт,написанный для семёрки, на ХР, встроенной у меня в ВиртуалБокс, выскакивает пустой отчёт ?! Что я делаю не так ? Не мог бы ты ( или кто из твоих знакомых ) проверить работу скрипта на ХР, стоящей на компьютере одной ОС.
Благодарю за напоминание о службах, в статье забыл указать, исправлю.shestale, Не по теме :
Да дело не в этом. Просто общение странное, меня лично оскорбляет. Стоило один раз согласиться на одну статью и пошло-поехало, будто я им чем то обязан. Ну, знаете, как в пословице " Посади свинью за стол - она и ноги на стол ". Жаль. я психанул и удалил всю личную переписку с модераторами их форума, хамство и высокомерие не прикрытое.
 
Последнее редактирование:

dzu

Активный пользователь
Сообщения
1,014
Симпатии
638
#5
проверить работу скрипта на ХР, стоящей на компьютере одной ОС.
проверял , еще когда ты только эту тему - затеял .., "Условие *** не распознано как командлет"
 

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
5,434
Симпатии
5,292
#6
chk.log на "$env:homepath\desktop\chkdsk_history.txt" - на рабочем столе.
В CMD переменные раскрываются через проценты: "%UserProfile%\Desktop\chkdsk_history.txt"

Но это не будет работать в русскоязычной XP. Там рабочий стол называется по-русски.
Уж больно длинный скрипт получится.
Пользователю всегда лучше давать в виде файла => Запустил, получил лог,
чем рассказывать как запустить ком. строку, как скопировать и выполнить код.

Тогда и определять расположение рабочего стола будет не нужно.
Лог будет сохранен рядом с батником:

Код:
::
wmic path win32_NTLogEvent WHERE "Logfile='Application' AND (SourceName='Chkdsk' OR SourceName='wininit') AND (EventIdentifier=1001 OR EventIdentifier=26214)" get /value > "%~dp0chkdsk_history.txt"
::
Aleх, а почемк, когда я проверял скрипт,написанный для семёрки, на ХР, встроенной у меня в ВиртуалБокс, выскакивает пустой отчёт ?! Что я делаю не так ?
Напиши какой скрипт ты запускал, тогда смогу ответить.
 

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
5,434
Симпатии
5,292
#8
dzu, какая ОС?
 

dzu

Активный пользователь
Сообщения
1,014
Симпатии
638
#9
ХР sp3.на семерке - нормально.
 
Последнее редактирование:

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
5,434
Симпатии
5,292
#10
Посмотрел. Там в журнал записывает WinLogon. И имя свойства другое: EventCode нужно брать, а не EventIdentifier,
хотя MSDN говорит, что брать нужно как раз второе в качестве уникального идентификатора события.

Код:
::
wmic path win32_NTLogEvent WHERE "Logfile='Application' AND (SourceName='Chkdsk' OR SourceName='Wininit' or SourceName='WinLogon') AND (EventCode=1001 OR EventCode=26214)" get /value > "%~dp0chkdsk_history.txt"
::
 
Последнее редактирование:

dzu

Активный пользователь
Сообщения
1,014
Симпатии
638
#11
теперь отработал.
 

Turok

Активный пользователь
Сообщения
407
Симпатии
84
#12
dzu, Т.е. ты запускал командлет
wmic path win32_NTLogEvent WHERE "Logfile='Application' AND (SourceName='Chkdsk' OR SourceName='Wininit' or SourceName='WinLogon') AND (EventCode=1001 OR EventCode=26214)" get /value > "%~dp0chkdsk_history.txt"
через Пауершелл ( какой версии ?!) на ХР SP3 и сработало ?!
 

Turok

Активный пользователь
Сообщения
407
Симпатии
84
#14
Напиши какой скрипт ты запускал, тогда смогу ответить.
этот
get-winevent -FilterHashTable @{logname="Application"; id="1001"; starttime="01/01/2011"}| ?{$_.providername –match "wininit"} | fl timecreated, message > "$env:homepath\desktop\chkdsk_history.txt"
 

dzu

Активный пользователь
Сообщения
1,014
Симпатии
638
#15
Код:
::
wmic path win32_NTLogEvent WHERE "Logfile='Application' AND (SourceName='Chkdsk' OR SourceName='Wininit' or SourceName='WinLogon') AND (EventCode=1001 OR EventCode=26214)" get /value > "%~dp0chkdsk_history.txt"
::
этот.
 

Вложения

  • 253 байт Просмотры: 1

Turok

Активный пользователь
Сообщения
407
Симпатии
84
#16
dzu, Да я не про это, это я уже понял, принял, спасибо, ребята. Интересно, почему не прошёл " семёрошный " скрипт через Пауершелл 2.0 в ХР SP3.
 

dzu

Активный пользователь
Сообщения
1,014
Симпатии
638
#17
ну дык , xp не знает - этих команд( если я , все правильно понял из этого "сумбура").
 

Turok

Активный пользователь
Сообщения
407
Симпатии
84
#18
dzu, Может я чё не понял, но это командлет для Пауершелл и какая ОС не должно играть роли, мы же не cmd задействуем.
Подождём весточки от Dragokas.
 

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
5,434
Симпатии
5,292
#19
Я в последнем сообщении объяснил почему.

А на счет разного вида написания командлетов, так это зависит от версии Powershell.
В новых версиях одни команды заменяются на другие. Появляются новые возможности.

P.S. Как создать батник (пакетный файл .cmd .bat) ?
 
Последнее редактирование: