尝试使用 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 目录进行 Spring-Authentication
LDAP 用户尝试进行身份验证得到错误 50 访问不足 (openldap)