Active-Directory
Get-QADComputer -LdapFilter & NOT 運算符
我在從 LDAP 過濾器中排除 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*)))"
我正在尋找所有未登錄 AD 超過 31 天且尚未在 OU“DisabledPCs”中的 Windows 作業系統系統,我將把它們移到那裡。
當我現在執行它時,我得到了我正在尋找的所有系統,包括那些在“DisabledPCs”OU 中的系統……我嘗試了幾種變體,包括:
(&(!(ou:dn:=DisabledPCs)))
以及將它放在過濾器中的不同位置(並不是我認為它會有所作為,但我顯然不知道……)
提前感謝您的幫助,
-dboftlp
就像來自 stackoverflow 上類似問題的僅供參考
“AD 不支持這種可擴展的匹配”
我所做的基本上是在 powershellcommunity.org 海報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"}
我簡化了作業系統過濾器,幫助我避免使用其他非 Win 作業系統,並通過管道將 OU 排除在我的腳本中不包括我想將系統移動到後面的 OU。我在這裡不包括那部分,因為我將它記錄到帶有 foreach 循環的 Excel 工作簿中,而且它比我原來的 Q?…
如果您有興趣查看整個腳本,請隨時
在 twitter 上聯繫我@dboftlp
或通過 gmail dot com 上的 dboftlp
我發現使用 LDAP 過濾器最簡單的方法是將它們分解為以下格式:(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*) ) )
所以我想也許,如果您將過濾器重新排序為:
(& (! (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*) ) ) )
我沒有對此進行測試,但我認為製作 & 兩部分,NOT,然後將其括起來,應該這樣做。
讓我知道那是否更接近。