windows - Get-WinEvent-filterXPath stoppede med at arbejde

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at gøre nogle begivenheder, der spørger ved hjælp af Get-WinEvent og XPath. Jeg testede det med succes, inden jeg forlod arbejdet i går, men i dag, uanset hvad jeg prøver, fortæller det mig, at der ikke er matchende hændelser.


Jeg har stadig PowerShell-vinduet åbent fra i går med den succesfulde forespørgsel, og selv gentagelse af samme kommandoer via shellhistorik vender ikke noget tilbage.


Jeg kan ikke få nogen XPath-forespørgsler til at fungere. Et simpelt eksempel, der returnerer tusindvis af arrangementsposter:


$EventFilter = @{ 
          Logname      = 'Microsoft-Windows-TaskScheduler/Operational'
          ProviderName = "Microsoft-Windows-TaskScheduler"
          Id           = 129
       }
Get-WinEvent -FilterHashtable $EventFilter -verbose


Men følgende påstande No events were found that match the specified selection criteria.:


[xml]$XPath = @"
  <QueryList>
    <Query Id="0" Path="microsoft-windows-taskscheduler/operational">
      <Select Path="microsoft-windows-taskscheduler/operational">*
        [System/Provider[@Name='microsoft-windows-taskscheduler'] and
        (System/EventID=129)]
      </Select>
    </Query>
  </QueryList>
"@
Get-WinEvent -logname 'Microsoft-Windows-TaskScheduler/Operational' -FilterXPath $XPath


BEMÆRK: Jeg bruger IKKE ugyldige forespørgsler. Xml ovenfor er simpelthen omformateret fra forespørgslen (konstrueret og) vist fra -verbose -knappen på den første. Til sidst skal jeg bruge XPath, fordi -FilterHashtable er for begrænset, men jeg kan ikke få de enkle XPath-forespørgsler til at fungere.


Jeg begynder at trække mit hår ud på dette. Hvad kan muligvis forhindre det i at fungere i dag, da det fungerede før?


Tak.

Bedste reference


Der er to forskellige (men lignende) parametre, du kan bruge. Den -FilterXPath, du bruger, kræver kun det filter, der skal leveres. Så dit eksempel skal være:


$XPath = "*[System/Provider[@Name='microsoft-windows-taskscheduler'] and (System/EventID=129)]"

Get-WinEvent -logname 'Microsoft-Windows-TaskScheduler/Operational' -FilterXPath $XPath


Alternativet er at bruge -FilterXml, som tager den fulde forespørgsels XML du oprindeligt havde (men ingen -LogName parameter):


$XPath = @"
  <QueryList>
    <Query Id="0" Path="microsoft-windows-taskscheduler/operational">
      <Select Path="microsoft-windows-taskscheduler/operational">*
        [System/Provider[@Name='microsoft-windows-taskscheduler'] and
        (System/EventID=129)]
      </Select>
    </Query>
  </QueryList>
"@

Get-WinEvent -FilterXml $XPath

Andre referencer 1


Bruger du ISE? Har du forsøgt at lukke det ud, åbne og genoprette dit script?


Jeg har haft lignende underlige problemer med ISE, hvor det syntes at det ikke ville slippe af med variabler osv. Og lukke det ud fungerede.