熟悉PowerShell,遇到许多问题(缺乏知识)。
我试图按计数列出自己的Windows安全日志记录的事件,但我也可以使用“友好”描述字段,该字段恰好是“消息”属性的第一行。我想不出一种方法来提取它。
因此,我正在运行以下命令以获取事件的概述:
PS C:\TEST> Get-WinEvent -FilterHashtable @{logname="security"}| Group-Object id -NoElement | sort count
Count Name
----- ----
1 4724
1 4722
1 1102
1 4725
2 4718
2 6408
2 4739
2 1101
2 5038
2 4737
3 4717
4 6407
4 4731
10 4738
16 1100
19 4781
22 4904
22 4905
35 6406
38 5033
38 5024
39 4826
39 4608
39 4902
40 4735
113 4647
156 4616
239 5059
355 4688
551 4733
557 4732
605 4797
965 5061
977 5058
1647 4798
6364 4907
6759 4634
7000 4648
10950 4799
19407 4672
22049 4624
但是我想要的是包括“描述/消息”列,以显示每个事件ID对应的内容。例如,对于事件ID,Message
属性包含以下值(?):
An attempt was made to reset an account's password.
Subject:
Security ID: S-1-5-18
Account Name: [EDITED]
Account Domain: [EDITED]
Logon ID: 0x3E7
Target Account:
Security ID: [EDITED]
Account Name: Administrator
Account Domain: [EDITED]
在整个消息中,我只希望提取以下行:
An attempt was made to reset an account's password.
因此回到我的原始视图,理想情况下,它将显示以下内容:
Count Name Message
----- ---- ----
1 4724 An attempt was made to reset an account's password.
1 4722 A user account was enabled.
1 1102 The audit log was cleared.
(...)
答案 0 :(得分:2)
尝试一下:
$Events = Get-WinEvent -FilterHashtable @{logname="security"} | Group-Object id
$Events | Select-Object Count,Name,@{Name='Message';Expression={ (($_.Group.Message | Select -First 1) -Split "`n")[0] }} | Sort-Object Count -Descending | Format-Table -Wrap
通过删除-NoElement
的{{1}}参数来工作,以便获得返回的Group-Object
结果,然后可以从中检索message属性的第一行。
我们使用Group
将计算出的属性添加到包含消息的结果中。
还使用Select-Object
,因此最终输出的视图不会截断第一行(如果很长)。
示例输出:
Format-Table -Wrap