Powershell 获取事件日志消息获取一行
我想知道是否有一种方法可以从Powershell 获取事件日志消息获取一行,powershell,event-log,Powershell,Event Log,我想知道是否有一种方法可以从Get EventLog的消息中获取信息。到目前为止,我正在使用这行代码来获取以下信息: (Get-EventLog -Logname Security -InstanceId 4625 -Newest 1).Message 这将从实例ID 4625中提取消息,但会提取整个消息。我想抓取:帐户名(第二个)、帐户域(第二个)和工作站名 以下是运行命令时的显示: 突出显示的区域是我想要显示的内容。它可以一次执行所有操作,也可以只为每个高亮显示的对象发出不同的命令 编辑
Get EventLog
的消息中获取信息。到目前为止,我正在使用这行代码来获取以下信息:
(Get-EventLog -Logname Security -InstanceId 4625 -Newest 1).Message
这将从实例ID 4625中提取消息,但会提取整个消息。我想抓取:帐户名
(第二个)、帐户域
(第二个)和工作站名
以下是运行命令时的显示:
突出显示的区域是我想要显示的内容。它可以一次执行所有操作,也可以只为每个高亮显示的对象发出不同的命令 编辑:输出是一个字符串,因此以下内容不起作用:
|选择对象
有效吗?我没有使用此cmdlet,无法测试我的答案
因此,您的完整行可以是:
(获取事件日志-日志名安全性-InstanceId 4625-最新1)。消息|选择对象帐户名、域名
编辑内容
安斯加比我先提出了建议。对混乱表示歉意。我缺乏相关知识。用于从邮件中提取信息。提取帐户和域名的示例:
$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]
指表达式中的两个捕获组((.*)
)
可以使用类似的表达式提取工作站名称。Eventlog消息是字符串,因此这不可能工作。抱歉,我将修改上述内容。这甚至不起作用