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

Тема в разделе "Пакетные файлы CMD, BAT", создана пользователем Turok, 29 июл 2014.

  1. Turok
    Оффлайн

    Turok Пользователь

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

    shestale Ассоциация VN/VIP Преподаватель

    Сообщения:
    8.042
    Симпатии:
    4.480
    Ага, вы им назло, у себя еще и windows удалите.
    п.с.
    извиняюсь, но не мог я тут не съязвить :Yahoo:
    Ну а если серьезно, то какая разница где опыта набираться, главное что-бы знания прирастали, ведь так?))
     
    Turok и Sandor нравится это.
  3. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.478
    Симпатии:
    4.306
    Итак, вот вариант, который у нас в полезных примерах:
    Просмотр последнего отчета о проверке диска (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
    --- Объединённое сообщение, 29 июл 2014, Дата первоначального сообщения: 29 июл 2014 ---
    Вот так должно работать на любой системе с настройками по-умолчанию (не проверял):

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

    Turok Пользователь

    Сообщения:
    407
    Симпатии:
    84
    Проверил, работает, спасибо. Только, если в таком виде, лог сохраняется в папке System32, а если заменить chk.log на "$env:homepath\desktop\chkdsk_history.txt" - на рабочем столе.
    Aleх, а почемк, когда я проверял скрипт,написанный для семёрки, на ХР, встроенной у меня в ВиртуалБокс, выскакивает пустой отчёт ?! Что я делаю не так ? Не мог бы ты ( или кто из твоих знакомых ) проверить работу скрипта на ХР, стоящей на компьютере одной ОС.
    Благодарю за напоминание о службах, в статье забыл указать, исправлю.
    --- Объединённое сообщение, 29 июл 2014, Дата первоначального сообщения: 29 июл 2014 ---
    shestale, Не по теме :
    Да дело не в этом. Просто общение странное, меня лично оскорбляет. Стоило один раз согласиться на одну статью и пошло-поехало, будто я им чем то обязан. Ну, знаете, как в пословице " Посади свинью за стол - она и ноги на стол ". Жаль. я психанул и удалил всю личную переписку с модераторами их форума, хамство и высокомерие не прикрытое.
     
    Последнее редактирование: 29 июл 2014
  5. dzu
    Оффлайн

    dzu Активный пользователь

    Сообщения:
    955
    Симпатии:
    542
    проверял , еще когда ты только эту тему - затеял .., "Условие *** не распознано как командлет"
     
  6. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.478
    Симпатии:
    4.306
    В CMD переменные раскрываются через проценты: "%UserProfile%\Desktop\chkdsk_history.txt"

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

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

    Код (Text):
    ::
    wmic path win32_NTLogEvent WHERE "Logfile='Application' AND (SourceName='Chkdsk' OR SourceName='wininit') AND (EventIdentifier=1001 OR EventIdentifier=26214)" get /value > "%~dp0chkdsk_history.txt"
    ::
    Напиши какой скрипт ты запускал, тогда смогу ответить.
     
  7. dzu
    Оффлайн

    dzu Активный пользователь

    Сообщения:
    955
    Симпатии:
    542
    Алекс , отчет пустой .
     
  8. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.478
    Симпатии:
    4.306
    dzu, какая ОС?
     
  9. dzu
    Оффлайн

    dzu Активный пользователь

    Сообщения:
    955
    Симпатии:
    542
    ХР sp3.
    --- Объединённое сообщение, 29 июл 2014 ---
    на семерке - нормально.
     
    Последнее редактирование: 29 июл 2014
  10. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.478
    Симпатии:
    4.306
    Посмотрел. Там в журнал записывает WinLogon. И имя свойства другое: EventCode нужно брать, а не EventIdentifier,
    хотя MSDN говорит, что брать нужно как раз второе в качестве уникального идентификатора события.

    Код (Text):
    ::
    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"
    ::
     
    Последнее редактирование: 29 июл 2014
    Turok и dzu нравится это.
  11. dzu
    Оффлайн

    dzu Активный пользователь

    Сообщения:
    955
    Симпатии:
    542
    теперь отработал.
     
  12. Turok
    Оффлайн

    Turok Пользователь

    Сообщения:
    407
    Симпатии:
    84
    dzu, Т.е. ты запускал командлет
    через Пауершелл ( какой версии ?!) на ХР SP3 и сработало ?!
     
  13. dzu
    Оффлайн

    dzu Активный пользователь

    Сообщения:
    955
    Симпатии:
    542
    Turok, пост №10 , пакуешь в батник и запускаешь. powershell 2.0 , на ХР Pro sp3.
     
    Turok нравится это.
  14. Turok
    Оффлайн

    Turok Пользователь

    Сообщения:
    407
    Симпатии:
    84
    этот
    get-winevent -FilterHashTable @{logname="Application"; id="1001"; starttime="01/01/2011"}| ?{$_.providername –match "wininit"} | fl timecreated, message > "$env:homepath\desktop\chkdsk_history.txt"
     
  15. dzu
    Оффлайн

    dzu Активный пользователь

    Сообщения:
    955
    Симпатии:
    542
    Код (Text):
    ::
    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"
    ::
    этот.
     

    Вложения:

    • .bat.rar
      Размер файла:
      253 байт
      Просмотров:
      1
    Turok нравится это.
  16. Turok
    Оффлайн

    Turok Пользователь

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

    dzu Активный пользователь

    Сообщения:
    955
    Симпатии:
    542
    ну дык , xp не знает - этих команд( если я , все правильно понял из этого "сумбура").
     
    Turok нравится это.
  18. Turok
    Оффлайн

    Turok Пользователь

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

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.478
    Симпатии:
    4.306
    Я в последнем сообщении объяснил почему.

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

    P.S. Как создать батник (пакетный файл .cmd .bat) ?
     
    Последнее редактирование: 29 июл 2014
    dzu, Kиpилл и Turok нравится это.

Поделиться этой страницей