2011-02-17 78 views
1

我想在PowerShell中写一些东西,并且对于PowerShell来说是全新的,我需要帮助。我想要做的是从安全日志中获取信息。具体来说,是过去两周内用户的最后一次登录。我目前使用的代码是根据最近的100个事件获取事件ID 4624的登录名。这也不仅仅是用户,还包括计算机。我如何在两周内将结果限制在用户身上?这甚至有可能吗?Powershell安全日志Get-EventLog

$eventList = @() 
Get-EventLog "Security" -After $Date ` 
    | Where -FilterScript {$_.EventID -eq 4624 -and $_.ReplacementStrings[4].Length -gt 10} ` 
    | foreach-Object { 
     $row = "" | Select UserName, LoginTime 
     $row.UserName = $_.ReplacementStrings[5] 
     $row.LoginTime = $_.TimeGenerated 
     $eventList += $row 
     } 
$eventList 

编辑:用代码

$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 

回答

1

使用-before-after参数按日期过滤日志。使用get-help get-eventlog -full查看所有参数。

+0

感谢您阅读-after部分,稍作工作,我已经运行了,检查完成脚本的代码。 – 2011-02-18 06:31:50

0

该用户的最后一次登录是存储在Active Directory解决。似乎比从事件日志中咀嚼更容易。

+1

这并不能满足我的脚本的需求。我需要最后14天的登录事件,而不是每个用户的最后一次登录。 – 2011-02-18 06:30:09

0

使用PowerShell搜索的广告

导入模块ActiveDirectory的

获取-QADComputer -ComputerRole网域控制器| foreach {Get-QADUser -Service $ _。Name -SamAccountName username).LastLogon.Value }措施最新

+1

这并不能满足我的脚本的需求。我需要为用户提供最近14天的登录事件,而不是每个用户的最后一次登录。 – 2011-02-18 06:31:01