sumar por funciĆ³n funcion encontrar empieza con comodines comodin comienza celda caracteres asterisco xml windows xpath event-log

xml - por - sumar si celda comienza con



El uso de XPath inicia con o contiene funciones para buscar registros de eventos de Windows (2)

El registro de eventos de Windows admite un subconjunto de XPath 1.0. Contiene solo 3 funciones: position , Band , timediff .

Referencia: http://msdn.microsoft.com/en-us/library/windows/desktop/dd996910(v=vs.85).aspx#limitations

Al editar la consulta de filtro XML manualmente en el visor de eventos de Windows, puedo encontrar eventos donde los datos coinciden exactamente con una cadena:

<QueryList> <Query Id="0" Path="Application"> <Select Path="Application">*[EventData[Data and (Data="Session end: imzcjflrrsq1sfdk3okc4jpf")]]</Select> </Query> </QueryList>

Ahora, quiero hacer una coincidencia parcial:

<QueryList> <Query Id="0" Path="Application"> <Select Path="Application">*[EventData[Data and (Data[starts-with(.,"Session")])]]</Select> </Query> </QueryList>

El registro de eventos me da el error:

La consulta especificada no es válida

¿Tengo la sintaxis incorrecta?


Si no le molestan dos pases, siempre puede usar una secuencia de comandos de powershell para volver a filtrar los datos ya que su operador -match , -like -match , -match , y -match :

nv.ps1

$Query = @" <QueryList> <Query Id="0" Path="System"> <Select Path="System"> *[System[(EventID=20001)]] </Select> </Query> </QueryList> "@ $events = Get-WinEvent -FilterXml $Query ForEach ($Event in $Events) { # Convert the event to XML $eventXML = [xml]$Event.ToXml() Add-Member -InputObject $Event -MemberType NoteProperty -Force -Name DriverVersion -Value $eventXML.Event.UserData.InstallDeviceID.DriverVersion Add-Member -InputObject $Event -MemberType NoteProperty -Force -Name DriverDescription -Value $eventXML.Event.UserData.InstallDeviceID.DriverDescription Add-Member -InputObject $Event -MemberType NoteProperty -Force -Name Data -Value $eventXML.Event.EventData.Data } $Events | Select TimeCreated, Id, DriverDescription, DriverVersion, ProviderName, @{Name="MessageData";Expression={$_.Message + $_.Data}} | Where {$_.DriverDescription -match "NVIDIA GeForce GTX*"} | Out-GridView pause

Un cmd para iniciarlo (nv.cmd):

powershell.exe -executionpolicy bypass "& ''./nv.ps1''"