2011-02-17 119 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