Я искал запрос, чтобы действовать в качестве триггера в планировщике заданий. Я хочу перезапустить свой 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 ответ на вопрос
0
Kilauone
I think I found the answer. Instead of using a “not equal to” (!=) comparison, simply accept all events with EventID=20226 or EventID=20227. Then suppress those events that have EventID=20226 with a data element of '631'.
Here is the query I came up with. Testing it in the event viewer; it seems to meet all the necessary criteria.
<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>