0
一個微不足道的問題,但希望對那些知道的人來說真的很明顯。ADSI/System.DirectoryServices.DirectorySearcher結果解析
搜索構造函數:
$Search = New-Object System.DirectoryServices.DirectorySearcher
(([adsi]"LDAP://ou=Domain Users,dc=example,dc=pri"),'(objectCategory=person)',
('name','employeeID'))
我要排除的結果,其中僱員的屬性不存在。
這工作:
$users = $Search.FindAll()
ForEach ($u in $users) {
If ($u.properties.employeeid) {
Write-Host $($u.properties.name)
}
}
下不工作 - 無輸出。但是,當省略IF語句時,會輸出結果。
ForEach ($user in $($Search.FindAll())) {
If ($user.properties.employeeID) {
Write-Host $($user.properties.name)
}
}
這是第二個例子中的語法問題,還是我只是需要臨時存儲結果在對象上運行條件語句之前? (爲了避免討論關於爲什麼不使用ActiveDirectory模塊和Get-ADUser的問題,它適用於不能在他們的工作站上安裝模塊的用戶,也不能被授權通過它所在的主機上的PSSession調用它安裝)
更新:發現做where
條款的輕微更好的方式:
$searcher.FindAll() | where { ($_.properties['employeeid'][0]) }
感謝您的解決方法,並且將它作爲過濾器更好。 – Trix