Get-ADUser - 提取从不登录的非活动和帐户

时间:2015-01-13 07:21:26

标签: powershell active-directory

我正在编写一个脚本来提取不活动的帐户:不登录超过1个月或从不登录。我在提取从未登录的帐户时遇到问题。

以下是我的脚本,$ NotLogonCutoff今天是-30天:

$inactUsrdraft += @(Get-ADUser -SearchBase $ou -Filter 'PasswordNeverExpires -eq $False -and LastLogonTimeStamp -le $NotLogonCutoff' -Properties Name,SamAccountName,LastLogonTimeStamp,Description,passwordneverexpires,canonicalName | Select Name,SamAccountName,@{N='LastLogonTimeStamp'; E={[DateTime]::FromFileTime($_.LastLogonTimeStamp)}},Description,passwordneverexpires,canonicalName | Sort Name)

我注意到它没有提取从不登录的用户。但是当我删除“-andLogLogTimeStamp -le $ NotLogonCutoff”进行调查时,从未登录的用户有LastLogonTimeStamp“01/01/1601”,我不知道为什么这个日期不是我的日期。

有人能提供一些助手吗?

1 个答案:

答案 0 :(得分:0)

LastLogonTimestamp属性包含AD属性lastLogonTimestamp的未修改值,该值将日期存储为FileTime值(64位整数)。另一方面,您的$NotLogonCutoff变量可能包含DateTime值。

LastLogonTimestamp转换为DateTime值:

[DateTime]::FromFileTime($_.LastLogonTimestamp)

或使用LastLogonDate属性,该属性已保存转换后的值。

演示:

PS C:\> $user = Get-ADUser -Identity foo -Property *
PS C:\> $user | select LastLogonTimestamp, LastLogonDate | fl

LastLogonTimestamp : 130649197631177528
LastLogonDate      : 05.01.2015 09:22:43

可以使用calculated property

处理空LastLogonDate
PS C:\> $user = Get-ADUser -Identity bar -Property *
PS C:\> $user | select LastLogonTimestamp, LastLogonDate | fl

LastLogonTimestamp :
LastLogonDate      :

PS C:\> $user | select LastLogonTimestamp, @{n='LastLogonDate';e={[DateTime]::FromFileTime([int64]$_.LastLogonTimestamp)}} | fl

LastLogonTimestamp :
LastLogonDate      : 01.01.1601 01:00:00