Sie können auf die Eigenschaften in einer Ereignismeldung zugreifen, indem Sie Properties
verwenden, aber Sie müssen ein Beispielereignis verwenden, damit Sie die Nachricht vergleichen können, und das Properties
-array, um herauszufinden, welcher Index das richtige Feld ist), aber Sie sollten überprüfen
Liste Eigenschaften (Werte in message):.
(Get-WinEvent -FilterHashtable @{
LogName = 'Security'
ID = 4688
} -MaxEvents 1).Properties
Value
-----
S-1-5-18
-
-
999
920
C:\Windows\System32\lsass.exe
%%1936
784
#I believe this is CommandLine
S-1-0-0
-
-
0
C:\Windows\System32\wininit.exe
S-1-16-16384
Mit Select-Object
können Sie Ihr eigenes Objekt erstellen, um ex zu extrahieren. die Timecreated und die Commandline (mit custom/berechneten Eigenschaften):
Get-WinEvent -FilterHashtable @{
LogName = 'Security'
ID = 4688
} | Select-Object TimeCreated,@{name='NewProcessName';expression={ $_.Properties[5].Value }}, @{name='CommandLine';expression={ $_.Properties[8].Value }}
#I didn't have any values in my events
TimeCreated NewProcessName CommandLine
----------- -------------- -----------
09.04.2016 00:56:04 C:\Windows\System32\lsass.exe
09.04.2016 00:56:04 C:\Windows\System32\services.exe
09.04.2016 00:56:04 C:\Windows\System32\winlogon.exe
09.04.2016 00:56:04 C:\Windows\System32\wininit.exe
09.04.2016 00:56:04 C:\Windows\System32\csrss.exe
Sie auch XML für den Zugriff auf die Eigenschaften nutzen könnten, aber dies wäre nützlicher, wenn Sie verschiedene eventIDs Auflistung wurden (waren die Reihenfolge, in der Eigenschaften- Array wäre anders). Bsp .:
Get-WinEvent -FilterHashtable @{
LogName = 'Security'
ID = 4688
} | Select-Object TimeCreated, @{name='CommandLine';expression={ (([xml]$_.ToXml()).Event.EventData.Data | Where-Object { $_.Name -eq 'CommandLine' })."#text" }}
danke für Ihre Hilfe !! Wie analysiere ich es noch weiter? Ich bekomme immer ein 'kann nicht in ein Null-Array indexieren'. Haben Sie noch eine Frage - [Frage] (http://stackoverflow.com/questions/36758480/powershell-parsing-select-object-even-further) – Dpitt1968
Was meinst du mit parse es weiter? Welche Lösung schlägt fehl und erwähnt der Fehler wo im Code? Die einzige Möglichkeit, die mir einfällt, ist ex. '$ _. Eigenschaften [8] .Wert', aber ich habe das auf einem Computer ohne Wert ohne Fehler ausgeführt .. –
Lösung ist super und beantwortet die Frage vollständig. Ich versuche nur, dieses Zeug zu lernen. Parsen Sie es weiter zum Beispiel innerhalb der Kommandozeile hat jemand 'net shell' 'ftp' etc. eingegeben. Einfach zu lernen. – Dpitt1968