非活动帐户列表的登录日期为空

时间:2015-05-20 16:08:20

标签: powershell active-directory

我正在尝试运行脚本来捕获未登录90天或更长时间的帐户。我需要脚本来排除在我们的环境中作为服务帐户的某些EmployeeID。我有以下脚本可以工作,但LastLogonDate在输出中是空白的。有没有办法保留我的过滤器,同时能够捕获输出中的LastLogonDate字段?

$Users = Search-ADAccount -AccountInactive -TimeSpan 90.00:00:00 |
         FT SamAccountName

$(Foreach ($user in $Users) { 
    Get-ADUser -Filter {
        -not ( lastlogontimestamp -like "*") -and
        (enabled -eq $true) -and 
        (EmployeeID -ne "Project Mailbox") -and 
        (EmployeeID -ne "Resource") -and 
        (EmployeeID -ne "Contractor")
    } -Properties SamAccountName, LastLogonDate, EmployeeID, physicalDeliveryOfficeName
}) | FT SamAccountName, LastLogonDate, EmployeeID, physicalDeliveryOfficeName

1 个答案:

答案 0 :(得分:0)

LastLogonDate属性表示该帐户从未登录过。您只获得这些帐户,因为您使用过滤条款-not (lastlogontimestamp -like "*")将结果限制为这些帐户,这会转换为“lastLogonTimestamp属性没有值的帐户”。

话虽如此,你的方法比以前更加复杂。 Format-* cmdlet只能用于向用户显示数据。要在处理期间选择数据,请使用Select-Object(如果需要特定属性的值,请使用-Expand参数)。但是,您无需在此处进行过滤,因为Search-ADAccount的输出可以直接输入Get-ADUser

你可能想要这样的东西:

$excludeList = 'Project Mailbox','Resource','Contractor'
$properties  = 'SamAccountName', 'LastLogonDate', 'EmployeeID',
               'physicalDeliveryOfficeName'

Search-ADAccount -AccountInactive -TimeSpan 90.00:00:00 |
  Get-ADUser -Properties $properties |
  ? { $_.Enabled -and $excludeList -notcontains $_.EmployeeID } |
  Format-Table $properties