2016-04-16 13 views
0

In Bezug auf Powershell und Event4688, wo es jetzt möglich ist, in einer Windows-Befehlszeile eingegebenen Text zu protokollieren.Powershell - Abfrage Ereignis 4688 für Befehlszeilen-Text

Gibt es eine Möglichkeit, die Powershell zu verwenden Get-WinEvent -FilterHashTable mir zu zeigen, was in ‚Process Command Line“ der Ereignisprotokolle eingetragen wurde? Dies wäre der eigentliche Text jemand in die Befehlszeile eingegeben.

Antwort

2

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" }} 
+0

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

+0

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 .. –

+0

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