Я искал запрос, чтобы действовать в качестве триггера в планировщике заданий. Я хочу перезапустить VPN, если он заканчивается RASClient (EventID 20226) по любой причине, кроме кода 631 (порт был закрыт пользователем)

Я нашел запрос, который предоставил Presser

<QueryList>
  <Query Id="0" Path="Application">
    <Select Path="Application">*[System[Provider[@Name='RasClient'] and (EventID=20226)]] and *[EventData[Data[4]='829' or '629']]</Select>
  </Query>
</QueryList>

и пока он находит окончания (20226), он находит только те, что вызваны кодом 829 или 629. Однако существуют десятки или возможные коды ошибок, и добавление каждого из них, связанного с "или", делает эту модель громоздкой.

Я попробовал неравную команду (!=) но не смог заставить его работать. Я даже нашел пост, где Оуэн рекомендовал упростить вышеуказанный запрос, используя

<QueryList>
  <Query Id="0" Path="Application">
    <Select Path="Application">*[System[Provider[@Name='RasClient'] and (EventID=20226 or EventID=20227)]] and *[EventData[Data[4]!='631']]</Select>
  </Query>
</QueryList>

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

Второй запрос ближе к тому, что я ищу, так как он включает в себя EventID 20226 и 20227, но я все же хотел бы исключить код 631 из запроса.

Сейчас я использую

<QueryList>
      <Query Id="0" Path="Application">
        <Select Path="Application">*[System[Provider[@Name='RasClient'] and (EventID=20226 or EventID=20227)]]</Select>
      </Query>
</QueryList>

Конечно, это все еще перезапускает мой VPN, даже если я отключаюсь, но это временный обходной путь, пока я не найду лучший запрос. На данный момент, если я отключаюсь вручную, я использую Ctrl-C, чтобы прервать сценарий от повторного подключения.

Кто-нибудь есть какие-либо предложения о том, как написать этот запрос, чтобы включить любой EventID20226, который имеет любой код ошибки, кроме 631?

1 ответ1

0

Я думаю, что нашел ответ. Вместо использования «не равно» (!=) Для сравнения просто примите все события с EventID = 20226 или EventID = 20227. Затем подавьте те события, которые имеют EventID = 20226 с элементом данных «631».

Это хорошо работает, поскольку с rasClient связано около 150 кодов ошибок (https://support.microsoft.com/en-us/kb/163111).

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

<QueryList>
  <Query Id="0" Path="Application">
    <Select Path="Application">*[System[Provider[@Name='RasClient'] and (EventID=20226 or EventID=20227)]] </Select>
    <Suppress Path="Application">*[System[Provider[@Name='RasClient'] and (Level=4 or Level=0) and (EventID=20226)]]and *[EventData[Data[4]='631']]
</Suppress>
  </Query>
</QueryList>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .