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



我正在编写一个脚本来提取非活动帐户:超过 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)

我注意到它不会提取从不登录的用户。但是当我删除"-和 LastLogonTimeStamp -le $NotLogonCutoff"进行调查时,从未登录的用户具有 LastLogonTimeStamp"01/01/1601",我不确定为什么这个日期不是 LE 而不是我的日期。

有人能够提供一些助手吗?

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

可以使用计算属性处理空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

最新更新