检索远程计算机的上次登录用户和登录时间

Retrieve last logon user and login time of remote computer

我有以下代码。除了 "Message" 属性 中的 "Account Name" 之外,我没有看到任何包含登录用户名称的 属性。如何只提取 "Message" 属性 的 "Account Name" 部分?

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 并将结果放入命名匹配 属性 .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 这样的帐户 - 这很容易做到。 [咧嘴一笑]