0

我有以下代码。除了“消息”属性中的“帐户名称”之外,我没有看到任何包含登录用户名称的 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]}}
4

1 回答 1

0

这似乎相当迂回,但它有效。中有一个Data=选项FilterHashTable,但我不知道如何使用它。[脸红]

在任何情况下,这都会搜索.Message属性Account Name并将结果放入命名的匹配属性中.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——这很容易做到。[咧嘴笑]

于 2019-01-04T19:27:27.577 回答