Что сделать чтобы проверка chkdsk делалась раз в месяц
Опубликовано: 01.04.2017
Внимание !
Всё это касается лицензионной, активированной, прошедmшей проверку подлинности, уникальной ОС Windows. За работу различного рода сборок, не лицензионной ОС ответственности не несу.
Животрепещуще для Windows Vista и старше,
как 32 так 64 разрядных. Обязательно инспектируйте корректность часового пояса, даты и времени на вашем компьютере и наличие в вашей системе последней версии Microsoft .NET Framework (
Microsoft .NET Framework 4.5 )
Если встроить в Windows XP это
Установочный пакет локализованной версии Windows PowerShell 1.0 для ОС Windows XP или это
Windows Management Framework Core и все обновления на эти составляющие ( если будут ) через Центр обновления - будет животрепещуще и для неё.
Чуток позднее попробую написать универсальную команду, которая будет работать на хоть какой ОС Windows.
Сначала давайте определим, что же это все-таки за утилита. CHKDSK,стандартное приложение в операционных системах DOS и Windows ( ранее её именовали Scandisk, в системах UNIX называется fsck ).
Призвана отыскивать и исправлять ошибки файловой системы, а так же проверять диски на наличие на физическом уровне повреждённых секторов. Отмечая как повреждённые, система больше не пробует читать с этих секторов либо писать на их.
В этом, на мой взор, есть значимый минус в отличии от испытанных временем утилит MHDD и Victoria (
Как выполнить проверку жесткого диска при помощи victoria ),способных не только лишь отметить повреждённые сектора ЖД, да и прочесть, вернуть и перезаписать информацию из их ( и ещё много чего ).Впрочем, Майкрософт и не обещал чуда, эта утилита носит
быстрее диагностический нрав.
По дефлоту, CHKDSK не исправляет ошибки и не инспектирует поверхность диска на наличие повреждённых секторов. Для исправления ошибок нужно задать флаг /F,а для поиска повреждённых секторов задать флаг /R.
Т. е.,говоря проще, пользовательским языком, поставить нужное вам количество галочек в ( правой кнопкой ) Раздел диска - характеристики - сервис - выполнить проверку (
как тут или тут ).
Можно рассматривать СНKDSK как собственного рода индикатор состояния вашей ОС. Пуск CHKDSK во время загрузки операционной системы может свидетельствовать, к примеру, о неисправности оперативки либо её разъёма,ошибок томов ( разделов ) ЖД. Цикличная ( нескончаемая
) работа - в большинстве случаев результат " честной " работы посторониих очистителей - оптимизаторов, смело удаляющих нулевые файлы, пустые папки, пустые характеристики реестра и т.п.( часто являющихся неотъемлемой частью самой ОС !!! ).
CHKDSK можно запустить из командной строчки, либо из командной строчки в режиме восстановления ( когда ОС не может загрузиться ).Можно задать пуск в определённое время через планировщик задач. Это отдельные темы.
Но речь сечас не об этом. Лог работы СНKDSK можно поглядеть выполнив Панель управления -> Администрирование -> Просмотр событий -> Журнальчики Windows -> «Приложение». Как говорят различные умные головы на просторах интернета, источником является Wininit, другие,
что источник - извещения службы Winlogon. Ну ну и пусть спорят. Нам же с вами принципиально только то, что никакого отчёта вы там, ну и вообщем нигде не найдёте. Существует он всего секунды, потом становится невидимкой, даже, если вы сделаете видимыми все сокрытые,
защищённые файлы и папки. Но он ( отчёт, файл. с заглавием bootex.txt ) не исчезает бесследно.
Вот здесь нам и поможет Windows PowerShell :
Запуск -> Стандартные -> Windows PowerShell -> правой кнопкой по Windows PowerShell ( выполнение операций с объектами командная строчка )-> Пуск от имени админа и вводим команду ( для PowerShell применяется термин " командлет " ) get-winevent -FilterHashTable
@{logname="Application"; id="1001"; starttime="01/01/2011"}| ?{$_.providername –match "wininit"} | fl timecreated, message ( здесь небольшой аспект, для Windows PowerShell 1.0 поменять get-winevent на get-eventlog ! Да и команду нужно будет корректировать.
Делать этого я не стану, нет смысла рыться в делах издавна прошлых дней, позднее поймёте почему ).
Где :
1. "get-winevent ( либо get-eventlog )-FilterHashTable" - эта команда получает действия при помощи хэш-таблицы фильтра
2. "@{logname="Application"; id="1001"; starttime="01/01/2011"}|" эта команда фильтрует журнальчик "Приложения" в Просмотре событий, но , в итоге,опубликуется только последний.
а) "logname" - этот кусок показывает на то,где будет проводиться фильтрация (в нашем случае это журнальчик "Приложения" в Просмотре событий)
б) "id" - этот кусок показывает на то, с каким кодом будут фильтроваться действия (в нашем случает с кодом 1001).
в) "starttime" - этот кусок показывает на то,с какого числа будут фильтроваться действия (в нашем случае действия будут фильтроваться с начала 2011 года).
3. "?{$_.providername –match "wininit"} |" - эта команда отыскивает в приобретенных результатах предшествующей команды действия, в какой в имени поставщика находится "wininit"
4. "fl timecreated, message" - эта команда выводит на экран итоговый перечень, где показаны текст событий и даты, надлежащие условиям фильтра
Если прибавить эту команду > "$env:homepath\desktop\chkdsk_history.txt" кода в конец команды fl timecreated, message ( после пробела ),то результаты команды fl timecreated, message будут сохранены в лог с именованием chkdsk_history.txt на десктопе (для удобства).
Для юзеров OC Windows 8.1 командлет смотрится так
Get-EventLog -LogName Application -Source chkdsk | select -Last 5 -ExpandProperty Message > "$env:homepath\desktop\chkdsk_history.txt"
Итак, проверяем на моём ПК ( ОС Windows 7 домашняя базисная Х 86 ):
1. Меню "Запуск" - все программки - стандартные - Windows PowerShell - Windows PowerShell командная строчка ( см. скрин 1 );
2.Вводим команду get-winevent -FilterHashTable @{logname="Application"; id="1001"; starttime="01/01/2011"}| ?{$_.providername –match "wininit"} | fl timecreated, message > "$env:homepath\desktop\chkdsk_history.txt" и...
благополучно получаем отчёт в виде текстового файла на десктопе ( см. скрин 2 )
В мой заглядывать не стоит, пуст, поэтому, как CHKDSK я уж издавна не запускал, а отчёты Просмотра событий я временами просматриваю и удаляю.
Всё вышеперечисленное мы делали для системного раздела С жёсткого диск
Дополним статью.
Дело в том, что ChkDsk можно запустить для несистемного диска,
тогда для выполнения проверки система не будет перезагружена
и код действия / источник сообщения будут другими.
Это пример в Windows 7.
Чтоб не быть привязанным к инструментарию WMI (вдруг он поврежден - 1 случай из 100),
можно пользоваться SQL-подобным запросом через утилиту LogParser. Делает тоже самое - подборка из лога журнальчика событий.
Для Windows XP всё оказалось гораздо сложнее. Во первых, в ней переменные раскрываются через проценты: "%UserProfile%\Desktop\chkdsk_history.txt"
Во вторых, это не будет работать в русской XP. Там десктоп именуется по-русски.
И в третьих, в ХР можно встроить только одну из 2-ух издавна устаревших версий PowerShell, там командлеты прописывались чуть по другому, рыться как - занятие пустое и не благодарное. Уж больно длиннющий скрипт получится.
А по сему, дамы и господа, предлагаю универсальный скрипт для всех версий PowerShell и для всех версий ОС Windows ХР ( не считая серверных, не было способности проверить ):
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 ) на десктоп и запустите его от имени админ.И
ещё, чтоб повсевременно иметь отчёты о состоянии системы в полном объёме, нужно, чтоб здесь стояла галочка, а службы
" Журнальчик событий Windows " и " Собиратель событий Windows " работали, причём в автоматическом режиме.
P.S.Выражаю гигантскую благодарность спецам форума SafeZone за помощь в написании статьи.
Данный вариант статьи не окончателен. В предстоящем будет дополняться. Подлежит дискуссии.