Ошибка при попытке выполнить поиск с помощью Powershell в направлении LDAP - PullRequest
2 голосов
/ 06 февраля 2012

Выше приведено:

PS C: \ EndurAutomation \ powershell \ bin> C: \ EndurAutomation \ powershell \ bin \ ets_update_constring.ps1 Исключение, вызывающее «FindAll» с аргументом «0»: «:Произошла ошибка операций. "В C: \ EndurAutomation \ powershell \ bin \ ets_update_constring.ps1: 20 char: 30 + $ result = $ ldapSearch.FindAll <<<< () + CategoryInfo: NotSpecified: (:) [], MethodInvocationException+ FullyQualifiedErrorId: DotNetMethodException </p>

$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)

Ответы [ 2 ]

1 голос
/ 06 февраля 2012

Вы уже установили $ldapSearch.Filter = $envFilter, поэтому вам не нужно вызывать FindAll, снова введя фильтр. Попробуйте вместо этого сделать это в качестве последней строки кода, поскольку в него все равно будет встроен фильтр:

$result = $ldapSearch.FindAll()
0 голосов
/ 08 апреля 2013

Я думаю, что это опечатка:

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

Попробуйте

$ldapURI 

вместо

$ldapUR
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...