Eu tenho procurado por uma consulta para atuar como um gatilho no Agendador de Tarefas. Desejo reiniciar minha VPN se o RASClient terminar (EventID 20226) por qualquer motivo, exceto o código 631 (a porta foi fechada pelo usuário)
Encontrei uma consulta que o Presser forneceu
<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>
e enquanto encontra terminações (20226), apenas encontra aquelas causadas pelo código 829 ou 629. No entanto, existem dúzias ou possíveis códigos de erro, e adicionar cada um vinculado com "ou" torna este modelo difícil.
Eu tentei um comando não igual (! =), mas não consegui fazê-lo funcionar. Eu até encontrei um post onde um Owen recomendou a simplificação da consulta acima usando
<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>
No entanto, esta consulta não retorna nenhum resultado, então acredito que deve haver uma falha lógica em algum lugar.
A segunda consulta está mais próxima do que estou procurando, pois inclui o EventID 20226 e 20227, mas ainda gostaria de excluir o código 631 da consulta.
Por enquanto, o que estou usando é
<QueryList>
<Query Id="0" Path="Application">
<Select Path="Application">*[System[Provider[@Name='RasClient'] and (EventID=20226 or EventID=20227)]]</Select>
</Query>
</QueryList>
É claro que isso ainda reinicia minha VPN mesmo se eu desconectar, mas é uma solução temporária, até encontrar uma consulta melhor. Por enquanto, se eu desconectar manualmente, eu uso Ctrl-C para impedir que o script se reconecte.
Alguém tem alguma sugestão sobre como escrever essa consulta para incluir qualquer EventID20226 que tenha algum código de erro diferente de 631?