我正在尝试编写一个PowerShell脚本,该脚本将查找AD中六个月未登录的所有用户,并且不将任何用户包括在“终止用户” OU或“终止用户\供应商”和其他OU中。我似乎无法将其排除在外。搜索的六个月部分工作正常。

这是我当前的代码:

Search-ADAccount -accountinactive -datetime (get-date).AddMonths(-6) -usersonly | ft Name,LastLogonDate | ? {$_.DistinguishedName -notlike "*ou=Terminated Users,*" -and $_.DistinguishedName -notlike "*ou=vendors and others,*"} | Out-File stale_users.txt

我从OU名称的末尾删除了*,尝试了-或,并且仅尝试了每个OU。它仍然不会跳过搜索那些OU。

最佳答案

交换排除代码和“ft”或“Format-Table”的顺序。您正在将数据格式化为没有DistinguishedName字段的位置,然后尝试与该丢失的字段进行匹配。

Search-ADAccount -accountinactive -datetime (get-date).AddMonths(-6) -usersonly | `
  ? {$_.DistinguishedName -notlike "*ou=Terminated Users,*" -and $_.DistinguishedName -notlike "*ou=vendors and others,*"} |`
  ft Name,LastLogonDate |`
  Out-File stale_users.txt

09-04 23:13