2016-04-16 1 views
0

Windowsコマンドラインに入力されたテキストをログすることができるpowershellとEvent4688について。Powershell - コマンドラインテキストのクエリイベント4688

-FilterHashTableイベントログの「プロセスのコマンドライン」で入力されたものを私に示すために、-WinEventのは入手PowerShellを使用する方法はありますか?これは、実際のテキストの誰かがコマンドラインに入力されただろう。

答えて

2

Propertiesを使用してイベントメッセージのプロパティにアクセスできますが、サンプルイベントを使用してメッセージとProperties配列を比較して、どのフィールドが正しいフィールドであるかを調べる必要があります。 )、確認する必要があります。

リストのプロパティ(メッセージの値):

(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 

Select-Objectを使用すると、exを抽出する独自のオブジェクトを作成できます。 TimeCreatedおよび(カスタム/計算プロパティを使用して)のCommandLine:

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    

(プロパティ - の順番だったあなたはまた、プロパティにアクセスするためにXMLを使用することができますが、別のEVENTIDSをリストしている場合、これは、より有用であろう配列は異なるだろう)。例:

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

ありがとうございます!どのようにそれをさらに解析するのですか?私は 'null配列にインデックスできません'を取得し続けます。あなたに別の質問を残しました - [質問](http://stackoverflow.com/questions/36758480/powershell-parsing-select-object-even-further) – Dpitt1968

+0

あなたはそれをさらに解析することはどういう意味ですか?どのソリューションが失敗しているのか、そのエラーがコード内のどこにあるのかを記述していますか?私が考えることができる唯一の可能性はexです。 '$ _。Properties [8] .Value'ですが、エラーなしで値なしのコンピュータでこれを実行しました。 –

+0

解決策はすばらしく、完全に質問に答えます。私はちょうどこのことを学びたいと思っています。たとえば、コマンドライン内でそれをさらに解析すると、誰かが 'net shell' 'ftp'などと入力して勉強しようとしました。 – Dpitt1968