Get-EventLog消息获取一条线

时间:2017-03-07 22:21:47

标签: powershell event-log

我想知道是否有办法从Get-EventLog中获取信息。到目前为止,我正在使用这行代码来获取消息:

(Get-EventLog -Logname Security -InstanceId 4625 -Newest 1).Message

这将从实例ID 4625中提取消息,但整条消息。我想抓住:Account Name(第二个),Account Domain(第二个)和Workstation Name

以下是运行命令时的显示:

enter image description here

突出显示的区域是我想要显示的内容。它可以是一次性的,也可以只为每个突出显示的命令发出不同的命令。

2 个答案:

答案 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

安斯加打败了我,建议表达。抱歉混淆。我缺乏知识。