我有一个小脚本来查询LDAP服务器
$domain = "LDAP://server-url:389/dc=dir,dc=cx,dc=com"
$auth = [System.DirectoryServices.AuthenticationTypes]::FastBind
$root = New-Object System.DirectoryServices.DirectoryEntry($domain, $Username, $Password, $auth)
$query = new-Object System.DirectoryServices.DirectorySearcher($root)
$query.Filter = "uid=myuser"
$objClass = $query.FindOne()
if (($objClass -eq $null) -or ($objClass.Count -eq 0))
{
write-Host "UID=myuser does not exist"
}
else
{
$properties = $objClass.Properties
foreach($field in $properties.GetEnumerator())
{
write-Host "$($field.name) => $($field.value)"
}
}
这对某些UID完全没问题。但对于某些人,我在$query.findOne()
上收到例外:异常调用" FindOne"用" 0"参数:" HRESULT的异常:0x8000500C"
任何人都知道这可能来自哪里?我可以使用任何LDAP浏览器(例如Softerra)正常搜索这些UID。我也没有在该用户的字段中看到任何特殊字符等。我也试过findAll()但同样的错误。 如果找不到用户,则会正确进入第一个if子句。