Добавить в корзинуПозвонить
Найти в Дзене
Мысли вслух

Работа над ошибками в Windows или способ забыть о многих проблемах (администраторам и не только)

В интернете много статей по использованию различных программ по устранению проблем с ОС Windows. Эти программы решают, в той или иной степени, определенные проблемы, но не все, с которыми приходится сталкиваться. Нередко проблемы весьма специфичные, связанные с использованием каких-то специфических программ.
Есть куда более интересный способ решения проблем, правда он требует определенных знаний
Оглавление

В интернете много статей по использованию различных программ по устранению проблем с ОС Windows. Эти программы решают, в той или иной степени, определенные проблемы, но не все, с которыми приходится сталкиваться. Нередко проблемы весьма специфичные, связанные с использованием каких-то специфических программ.

Есть куда более интересный способ решения проблем, правда он требует определенных знаний и желания попрограммировать. Этот способ, при должном подходе, позволит забыть об очень многих проблемах.

Любые события, происходящие в операционной системе, Windows записывает в журналы (Приложение, Безопасность, Система, ...). Все события имеют, как минимум, 2 параметра - тип (сведения, ошибка) и код события.

На любое из этих событий можно создать задачу, которая будет вызываться автоматически, при возникновении данного события и производить необходимые, заданные в скрипте, действия.

Привязка задачи к событию
Привязка задачи к событию

Как это применять?

Допустим простую ситуацию: кто-то постоянно пытается авторизоваться в вашей сети из вне, перебирая варианты связок учетная запись/пароль. В то же время, вы не можете закрыть сервер для доступа из вне - есть удаленные сотрудники.

В журналах система регистрирует события с кодом 4625 (Учетной записи не удалось выполнить вход).

Можно сделать примерно такой скрипт (это лишь набросок) на Powershell (*.ps1):

$Query = @"
<QueryList>
<Query Id="0" Path="Security">
<Select Path="Security">
*[EventData[Data[@[System[(EventID='4625')]]
</Select>
</Query>
</QueryList>
"@

$events = Get-WinEvent -FilterXML $Query
$ipaddr = @{ label="IP"; Expression={$_.properties[9].value} }

New-NetFirewallRule -DisplayName "Block IP $ipaddr" –RemoteAddress $ipaddr -Direction Inbound -Action Block

Возьмем другой примерный вариант. На сервере печати регистрируется событие с кодом 372 (сбой при печати документа). Один из возможных вариантов действий в этом случае - очистка очереди печати и перезапуск службы печати (spooler).

Stop-Service spooler

$win=(Get-ChildItem env:windir).value

$spool="\System32\spool\PRINTERS\"

$pth=$win + $spool + "*.*"

Remove-Item $pth

Start-Service spooler

Помимо обработки системных журналов, можно создавать собственные журналы, куда записывать необходимые события для удобства мониторинга.

Такими средствами можно автоматизировать полное или частичное решение множества различных проблем. Вкупе с иными встроенными инструментами, можно сделать так, что о проблемах практически и не будете вспоминать.

Надеюсь, что моя небольшая статья кому-то окажется полезной.

Если у Вас есть интересные варианты использования, описанного в статье механизма, поделитесь ими в комментариях.

Это всего лишь мои мысли вслух .

Если Вам понравилась моя статья, не забудьте оценить её лайком и поделиться с друзьями в социальных сетях!

Если по содержимому данной статьи у Вас есть собственное мнение, поделитесь им в комментариях.

Возможно, Вам будут интересны другие статьи: