我正在尝试运行脚本来捕获未登录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
答案 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