检索远程计算机的上次登录用户和登录时间
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
这样的帐户 - 这很容易做到。 [咧嘴一笑]
我有以下代码。除了 "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
这样的帐户 - 这很容易做到。 [咧嘴一笑]