我有以下代码。除了"消息"属性中的"帐户名称"之外,我没有看到任何保存登录用户名称的 Win-Event 属性。如何仅提取"消息"属性的"帐户名称"部分?
Get-WinEvent -Computer $computer -FilterHashtable @{Logname='Security';ID=4672} -MaxEvents 1 | Select-Object -Property Message
编辑:我也尝试了以下内容,但得到了一个空字符串
Get-WinEvent -Computer $computer -FilterHashtable @{Logname='Security';ID=4672} -MaxEvents 3 | Select @{Name = "Username";Expression = {$_.ReplacementStrings[1]}}
这
似乎相当迂回,但它有效。 FilterHashTable
中有一个Data=
选项,但我不知道如何使用它。[脸红]
在任何情况下,这会在 .Message
属性中搜索Account Name
并将结果放入命名的 match 属性 .AccountName
中。
$ComputerName = $env:COMPUTERNAME
$GWE_Params = @{
Computer = $ComputerName
FilterHashtable = @{
Logname = 'Security'
ID = '4672'
}
MaxEvents = 3
}
$EventInfo = @(Get-WinEvent @GWE_Params)
[void]($EventInfo[0].Message -match 'Account Name:s{1,}(?<AccountName>.+)')
$Matches.AccountName
输出。。。
SYSTEM
我想你会想要过滤掉像system
这样的帐户 - 这很容易做到。[咧嘴一笑]