Powershell - 命令行文本的查询事件 4688
Powershell - Query event 4688 for command line text
关于 powershell 和 Event4688,现在可以记录在 windows 命令行中输入的文本。
有没有办法使用 powershell Get-WinEvent -FilterHashTable 来显示在事件日志的“进程命令行”中输入的内容?这将是某人在命令行中输入的实际文本。
您可以使用 Properties
访问事件消息中的属性,但您需要使用示例事件,以便比较消息和 Properties
数组以找出哪个索引是正确的字段。我认为是第9个(索引8),但你应该验证一下。
列表属性(消息中的值):
(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(使用 custom/calculated 属性):
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 访问属性,但如果您列出不同的 eventid(如果属性数组中的顺序不同),这会更有用。例如:
Get-WinEvent -FilterHashtable @{
LogName = 'Security'
ID = 4688
} | Select-Object TimeCreated, @{name='CommandLine';expression={ (([xml]$_.ToXml()).Event.EventData.Data | Where-Object { $_.Name -eq 'CommandLine' })."#text" }}
关于 powershell 和 Event4688,现在可以记录在 windows 命令行中输入的文本。
有没有办法使用 powershell Get-WinEvent -FilterHashTable 来显示在事件日志的“进程命令行”中输入的内容?这将是某人在命令行中输入的实际文本。
您可以使用 Properties
访问事件消息中的属性,但您需要使用示例事件,以便比较消息和 Properties
数组以找出哪个索引是正确的字段。我认为是第9个(索引8),但你应该验证一下。
列表属性(消息中的值):
(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(使用 custom/calculated 属性):
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 访问属性,但如果您列出不同的 eventid(如果属性数组中的顺序不同),这会更有用。例如:
Get-WinEvent -FilterHashtable @{
LogName = 'Security'
ID = 4688
} | Select-Object TimeCreated, @{name='CommandLine';expression={ (([xml]$_.ToXml()).Event.EventData.Data | Where-Object { $_.Name -eq 'CommandLine' })."#text" }}