consulta XML do log de eventos não está funcionando

0

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?

    
por Kilauone 13.09.2015 / 23:50

1 resposta

0

Acho que encontrei a resposta. Em vez de usar uma comparação "não igual a" (! =), Simplesmente aceite todos os eventos com EventID = 20226 ou EventID = 20227. Em seguida, suprima os eventos que possuem EventID = 20226 com um elemento de dados '631'.

Isso funciona bem, pois há cerca de 150 códigos de erro associados ao rasClient ( link )

Aqui está a consulta que eu criei. Testando no visualizador de eventos; parece satisfazer todos os critérios necessários.

<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>
    
por 14.09.2015 / 17:02