尝试使用 Powershell 对 LDAP 进行搜索时出错

Posted

技术标签:

【中文标题】尝试使用 Powershell 对 LDAP 进行搜索时出错【英文标题】:Error when trying to do a search with Powershell towards LDAP 【发布时间】:2012-02-06 13:59:56 【问题描述】:

以上给出:

PS C:\EndurAutomation\powershell\bin> C:\EndurAutomation\powershell\bin\ets_update_constring.ps1 使用“0”参数调用“FindAll”的异常:“发生操作错误。 " 在 C:\EndurAutomation\powershell\bin\ets_update_constring.ps1:20 char:30 + $result = $ldapSearch.FindAll

$ldapDN = "dc=<masked>,dc=<masked>"
$ldapURI = "ldap://<masked>/$ldapDN"


$env = "sqlplus -S <masked> ``@env.sql > env.list"
Invoke-Expression $env
$envData = (Get-Content "env.list")

$envFilter = "(|"
foreach ($env in $envData) 
    $envFilter += "(cn=$env)"

$envFilter += ")"

$ldapEntry = New-Object System.DirectoryServices.DirectoryEntry($ldapUR, $null, $null,         [System.DirectoryServices.AuthenticationTypes]::Anonymous)
$ldapSearch = New-Object System.DirectoryServices.DirectorySearcher($ldapEntry)
$ldapSearch.PageSize = 1000
$ldapSearch.Filter = $envFilter

$result = $ldapSearch.FindAll($envFilter)

【问题讨论】:

【参考方案1】:

您已经设置了$ldapSearch.Filter = $envFilter,因此您无需通过再次传入过滤器来调用FindAll。尝试将此作为最后一行代码,因为它仍然会内置您的过滤器:

$result = $ldapSearch.FindAll()

【讨论】:

【参考方案2】:

我认为这是一个错字:

$ldapEntry = New-Object System.DirectoryServices.DirectoryEntry(
        **$ldapUR**, $null, $null, 
        [System.DirectoryServices.AuthenticationTypes]::Anonymous
    )

试试

$ldapURI 

而不是

$ldapUR

【讨论】:

以上是关于尝试使用 Powershell 对 LDAP 进行搜索时出错的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PowerShell 通过 WMI 更新“ds_computer”类上的 LDAP 属性

使用 LDAP 对 ADAM 进行身份验证

使用服务帐户对 LDAP 目录进行 Spring-Authentication

LDAP 用户尝试进行身份验证得到错误 50 访问不足 (openldap)

使用 Spring Boot/Spring Security 对 LDAP 进行证书身份验证

尝试进行用户名查找时收到特定的 AD ldap 错误