2011-12-29 6 views
21

Windows olay günlükleri aramak için birlikte-başlatır veya fonksiyonları içerir:,XPath kullanarak, veri tam bir dize eşleşir olayları bulabilirsiniz Windows olay görüntüleyici elle XML Filtre sorgusuyla düzenleyerek

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

Şimdi

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

Olay günlüğü bana hata veriyor: kısmi maç yapmak istiyorum

The specified query is invalid

do Sözdizim yanlış mı?

cevap

4

Eğer iki geçiş sakıncası yoksa, her zaman           -where operatör, -match-like destekler onun       gibi verileri tekrar filtrelemek için powershell komut dosyasını kullanabilirsiniz, ve -contains:

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 

A it (nv.cmd) başlatmak için cmd:

powershell.exe -executionpolicy bypass "& '.\nv.ps1'" 
İlgili konular