我正在编写一个脚本来提取不活动的帐户:不登录超过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”,我不知道为什么这个日期不是我的日期。
有人能提供一些助手吗?
答案 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