Get-QADComputer -LdapFilter&NOT运算符

我遇到的问题不包括我的LDAPfilter中的OU

$DaysAgo = (Get-Date).AddDays(-31) $ft = $DaysAgo.ToFileTime() Get-QADComputer -SizeLimit 0 -IncludeAllProperties -SearchRoot 'DC=My,DC=Domain,DC=Local' -LdapFilter "(&(objectcategory=computer)(lastLogonTimeStamp<=$ft) (!(ou:dn:=DisabledPCs))(|(operatingsystem=Windows 2000 Professional) (operatingSystem=Windows XP*)(operatingSystem=Windows 7*) (operatingSystem=Windows Vista*)(operatingsystem=Windows 2000 Server) (operatingsystem=Windows Server*)))" 

我正在查询所有尚未login到AD的超过31天的Windows操作系统系统,这些系统还不在OU“DisabledPCs”中,这是我要移动到的位置。

当我现在运行它,我得到我正在寻找的所有系统,包括那些在“DisabledPCs”OU …我已经尝试了几个变化,包括:

 (&(!(ou:dn:=DisabledPCs))) 

除了把它放在filter的不同位置(不是我认为它会有所作为,但我显然不知道…)

提前感谢您的帮助,

-dboftlp

我发现最简单的LDAPfilter是以下面的格式分解它们:(Apache DS似乎自动这样做,这真的很有帮助)。

 (& (objectcategory=computer) (lastLogonTimeStamp<=$ft) (! (ou:dn:=DisabledPCs) ) (| (operatingsystem=Windows 2000 Professional) (operatingSystem=Windows XP*)(operatingSystem=Windows 7*) (operatingSystem=Windows Vista*) (operatingsystem=Windows 2000 Server) (operatingsystem=Windows Server*) ) ) 

所以我想可能吧,如果你把这个filter更改为:

 (& (! (ou:dn:=DisabledPCs) ) ( (objectcategory=computer) (lastLogonTimeStamp<=$ft) (| (operatingsystem=Windows 2000 Professional) (operatingSystem=Windows XP*)(operatingSystem=Windows 7*) (operatingSystem=Windows Vista*) (operatingsystem=Windows 2000 Server) (operatingsystem=Windows Server*) ) ) ) 

我没有testing,但是我认为把这两个部分,不是,然后把所有其他部分都包括在内,应该这样做。

让我知道这是否更接近。

就像从一个类似的问题上的计算结果一样

“AD不支持这种可扩展的匹配”
资源

我基本上做的是用powershellcommunity.org poster cameronove的一些帮助来完全简化脚本来得到以下内容:

 $DaysAgo = (Get-Date).AddDays(-31) $ft = $DaysAgo.ToFileTime() $StComps = Get-QADComputer -SizeLimit 0 -IncludeAllProperties ` -SearchRoot 'DC=MY,DC=DOMAIN,DC=LOCAL' ` -LdapFilter "(&(&(lastLogonTimeStamp<=$ft)(operatingsystem=*Windows*)))" ` | Where { $_.dn -notmatch "DisabledPCs"} 

我简化了操作系统filter,它可以帮助我避免其他非Win操作系统,并且通过pipe理OU排除来不包括OU,我希望在后面的脚本中移动系统。 我在这里不包括那部分,因为我用foreach循环logging到一个Excel工作簿,它比我原来的Q更加涉及…

如果你有兴趣看到整个脚本,随时打我
@ twitteroftlp在Twitter上
或者通过gmail dot com的dboftlp