首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >筛选最新的安全事件记录

筛选最新的安全事件记录
EN

Stack Overflow用户
提问于 2013-07-30 16:24:30
回答 1查看 768关注 0票数 3

我发现了一些关于如何显示过去14天用户登录的非常好的代码:Powershell Security Log Get-EventLog

代码语言:javascript
复制
$Date = [DateTime]::Now.AddDays(-14)
$Date.tostring("MM-dd-yyyy"), $env:Computername
$eventList = @()
Get-EventLog "Security" -After $Date `
    | Where -FilterScript {$_.EventID -eq 4624 -and $_.ReplacementStrings[4].Length -gt 10 -and $_.ReplacementStrings[5] -notlike "*$"} `
    | foreach-Object {
        $row = "" | Select UserName, LoginTime
        $row.UserName = $_.ReplacementStrings[5]
        $row.LoginTime = $_.TimeGenerated
        $eventList += $row
      }
$eventList

但我的问题是,如何修改这段代码,以便它选择两个最新的记录?

我尝试了以下几点:

代码语言:javascript
复制
Get-EventLog "Security" -After $Date `
| Where -FilterScript {$_.EventID -eq 4624 -and $_.ReplacementStrings[4].Length -gt 10 -and $_.ReplacementStrings[5] -notlike "*$"} `
| {-Newest 2} 

我得到了错误:Missing expression after unary operator '-'.

获得最后两个登录的干净方法是什么,即当前登录和在当前用户之前登录的最后一个人?

编辑:问题解决了,这是完整的代码

代码语言:javascript
复制
$Date = [DateTime]::Now.AddDays(-14)
$Date.tostring("MM-dd-yyyy"), $env:Computername
$eventList = @()
Get-EventLog "Security" -After $Date `
    | Where -FilterScript {$_.EventID -eq 4624 -and $_.ReplacementStrings[4].Length -gt 10 -and $_.ReplacementStrings[5] -notlike "*$"} `
    | Select-Object -First 2 `
    | foreach-Object {
        $row = "" | Select UserName, LoginTime
        $row.UserName = $_.ReplacementStrings[5]
        $row.LoginTime = $_.TimeGenerated
        $eventList += $row
        }
$eventList
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-30 16:30:26

而不是:

代码语言:javascript
复制
| {-Newest 2} 

试试这个:

代码语言:javascript
复制
| Select-Object -first 2
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17952405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档