2013-10-17 78 views
0

我正在查找腳本以使用PowerShell生成活動目錄域用戶登錄和註銷會話歷史記錄。下面是我嘗試過的腳本。這些僅顯示上次登錄的會話。Active Directory用戶登錄和註銷會話歷史

腳本:

$searcher = New-Object DirectoryServices.DirectorySearcher([adsi]"") 
$searcher.filter = "(objectclass=user)" 
$users = $searcher.findall() 
Foreach($user in $users) 
{ 
    if($user.properties.item("lastLogon") -ne 0) 
    { 
    $a = [datetime]::FromFileTime([int64]::Parse($user.properties.item("lastLogon"))) 
    "$($user.properties.item(`"name`")) $a" 
    } 
} 

輸出:

PS C:\ Windows \ System32下> C:\用戶\管理員\桌面\工作\ lastlogonworked.ps1
管理員10/17/2013 13:11:31
DEMO 10/17/2013 13:10:54
User0 2013-10-17 07:07:0 7
User1的2013年10月17日6時29分27秒
User2的2013年10月17日8點39分05秒
用戶4 2013年10月17日8時41分36秒
用戶5 2013年10月17日09: 38:07
CPU054 2013年10月17日13點11分53秒

請人幫助我獲得了所有用戶登錄和註銷的歷史。

回答

3

你將無法從AD獲得。您需要在DC上搜索安全事件日誌以查看登錄/註銷事件。

+0

假設DC完全記錄下來,因爲我記得,OFF在傳統上是錯誤級別爲0的事件的默認值。 –

1
$searcher = New-Object DirectoryServices.DirectorySearcher([adsi]"") 
$searcher.filter = "(objectclass=user)" 
$users = $searcher.findall() 
Out-File C:\logonfile.txt 
Foreach($user in $users) 
{ 
    if($user.properties.item("lastLogon") -ne 0) 
    { 
    $a = [datetime]::FromFileTime([int64]::Parse($user.properties.item("lastLogon"))) 
    "$($user.properties.item(`"name`")),$a" >> c:\logonfile.CSV 

    } 
} 
1

我跑過這個線程通過谷歌尋找如何登錄用戶登錄完成,我發現了一個有趣的,也許更簡單的方法。我絕不是公元專家,這已經由我的前任制定。我試圖弄清楚它是如何完成的。

  • 設置組策略以在登錄時運行腳本。在這種情況下,腳本名爲 「Logon.cmd」
  • 創建小批量文件,並將它(對我來說)位置:

    C:\ WINDOWS \ SYSVOL \域\政策{81D ... [ SNIP} ... C7} \用戶\腳本\登錄

  • 該腳本的內容是一行:

    呼應登錄,%COMPUTERNAME%,%USERNAME%,%DATE%,%TIME%> > \ SERVER \ SHARE \%USERNAME%.csv

N這會爲您提供一個充滿文件的共享,每個用戶一個,而不是直接將事件記錄到DC上的Windows安全日誌。這可能是有問題的(或煩人的),或者它可以讓非計算機文化(人力資源和管理?)人們輕鬆訪問人員跟蹤信息。