我想知道是否有办法从Get-EventLog
中获取信息。到目前为止,我正在使用这行代码来获取消息:
(Get-EventLog -Logname Security -InstanceId 4625 -Newest 1).Message
这将从实例ID 4625中提取消息,但整条消息。我想抓住:Account Name
(第二个),Account Domain
(第二个)和Workstation Name
。
以下是运行命令时的显示:
突出显示的区域是我想要显示的内容。它可以是一次性的,也可以只为每个突出显示的命令发出不同的命令。
答案 0 :(得分:1)
使用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]
引用表达式中的两个捕获组((.*)
)。
可以使用类似的表达式提取工作站名称。
答案 1 :(得分:-1)
编辑:输出为字符串,因此以下操作无效:
| select-object
是否有效?我没有使用过此cmdlet,无法测试我的答案。
所以你的全线可能是:
(Get-EventLog -Logname Security -InstanceId 4625 -Newest 1).message | select-object AccountName,DomainName
编辑CONT
安斯加打败了我,建议表达。抱歉混淆。我缺乏知识。