我想知道是否有一种方法可以从Get-EventLog中获取消息中的信息。到目前为止,我使用下面这行代码来获取消息:
(Get-EventLog -Logname Security -InstanceId 4625 -Newest 1).Message这将从实例ID为4625的实例中拉出消息,但拉取整个消息。我想抓取:Account Name (第二个),Account Domain (第二个)和Workstation Name。
以下是该命令运行时的显示:

高亮显示的区域是我想要显示的内容。它可以一次完成,也可以只为每个高亮显示的对象发出不同的命令。
发布于 2017-03-08 06:53:18
使用regular expressions从消息中提取信息。提取账号和域名示例:
$msg = (Get-EventLog ...).Message
$re = 'Logon Failed:[\s\S]+?Account Name:\s+(.*)\s+Account Domain:\s+(.*)'
if ($msg -match $re) {
$account = $matches[1]
$domain = $matches[2]
}$matches[1]和$matches[2]是指表达式中的两个捕获组((.*))。
可以使用类似的表达式提取工作站名称。
发布于 2017-03-08 06:43:52
EDIT: output为字符串,因此以下代码将不起作用:
| select-object能工作吗?我尚未使用此cmdlet,因此无法测试我的答案。
因此,您的完整行可以是:
(Get-EventLog -Logname Security -InstanceId 4625 -Newest 1).message | select-object AccountName,DomainName
编辑CONT
Ansgar先我一步提出了一些建议。对于造成的混乱我深表歉意。我对此缺乏了解。
https://stackoverflow.com/questions/42659468
复制相似问题