如何从所有域控制器获取LastLogon或LastLogonTimeStamp(以最新者为准)

时间:2015-06-09 14:04:58

标签: powershell active-directory

到目前为止,我有一个Powershell脚本,它显示了Name,SameAccountName,Description,EmployeeID,EmployeeID EmployeeNumber,EmailAddress,LastLogon,Manager,Title,Organization,以及是否启用了帐户。但是,由于我们使用了许多域控制器,因此我收到的LastLogon不是100%正确的。以下是我的代码:

Get-ADUser -Filter * -Properties Name,SamAccountName,Description,EmployeeID,EmployeeNumber,EmailAddress,LastLogon,Manager,Title,Department,Organization,Enabled -SearchBase "DC=DELETEDFORANONYMITY,DC=com" |
? {$_. EmployeeID -notlike "EXCLUDE" -and $_.Enabled -notlike "FALSE"}| 
Select Name,SamAccountName,Description,EmployeeID,EmployeeNumber,EmailAddress,@{N='LastLogon'; E={[DateTime]::FromFileTime($_.LastLogon)}},Manager,Title,Department,Organization,Enabled |
Export-Csv "C:\scripts\AD_Export.csv"

我的问题是,任何人都可以通过添加我的代码来帮助我,使其包含所有域控制器并输出最近的日期,无论是LastLogon还是LastLogonTimeStamp。我对Powershell很新,所以我仍然试图掌握它,我似乎无法弄清楚如何做这样的事情。

1 个答案:

答案 0 :(得分:1)

您可以使用-server参数get-ADUser来查询特定控制器。一旦您在所有控制器上获得用户对象,请收集lastLogon值并选择最新值。这会使脚本的延迟倍增,因此您可能可能无法获得任何精确度,因为用户将在您收集数据后登录和注销,但它仍然是查询多个数据源的方法。单个AD实体。