windows - Get-WinEvent-filterXPath stoppede med at arbejde
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.