从powershell中的Get-Winevent消息中选择特定的行/数据

时间:2016-03-24 14:30:38

标签: powershell get-winevent

我正在尝试从get-winevent cmdlet的消息输出中提取特定行,并且无法找到执行此操作的方法(我可能搜索不正确但仍在学习更高级的脚本方法)。我正在运行的是:

Get-WinEvent -ComputerName $DC -FilterHashtable @{Logname='Security';Keywords='9007199254740992';Data=$userid} -MaxEvents 1 | Select Message | Format-List

将返回一条与此类似的消息(将某些信息更改为通用信息):

Message : The computer attempted to validate the credentials for an account.
Authentication Package:    MICROSOFT_AUTHENTICATION_PACKAGE_V1_0
Logon Account:    jdoe
Source Workstation:    Generic-Computername
Error Code:    0x0

我正在尝试创建一种简单的方法来查找最后登录的计算机以便更快地进行故障排除,但我无法仅过滤掉源工作站行,我可能没有正确的语法来进行良好的搜索以找到结果我正在寻找,但我一直在寻找大约一个星期,并没有发现任何接近我正在寻找的东西,任何帮助都会很棒!

1 个答案:

答案 0 :(得分:1)

我不确定您要检索哪些信息但我非常确定有更好的方法然后使用Get-WinEvent来获取该信息。但是,如果您只想获得Source Workstation的值,则可以使用正则表达式执行此操作:

$event = Get-WinEvent `
    -ComputerName $DC `
    -FilterHashtable @{Logname='Security';Keywords='9007199254740992';Data=$userid} `
    -MaxEvents 1 `
    | Select -expand Message 

[regex]::Match($event, 'Source Workstation:\s*(.*)\s*').Groups[1].Value