2017-05-12 3 views
0

Active Directory에서 다른 사용자의 유효성을 검사하기 위해 사용자 목록을 가져 오는 중 두 번째 사용자에 대해 Get-ADUser과 관련된 문제가 있습니다. 첫 번째 사용자 (사용자 모음)는 간단하며 잘 작동합니다. 좀 더 복잡한 접근 방법을 시도하고있다거나 작동하지 않습니다 때문에 적어도 내가 더 복잡로 지각하고있어 두 번째 사용자와로컬 변수를 사용하여 LDAP 필터링 사용

$users += Get-ADUser -SearchBase "OU=Level2,OU=Level1,DC=domain,DC=org" -Filter "SamAccountName -like '*lvl'" -ResultSetSize 5000 -Properties $properties | Select $properties; 

(단일 인스턴스이 시간) : 나는 첫 번째 사용자과 같이 검색 할 수 있습니다. 다음과 같은 접근 방식은 다음과 같습니다

$compareUser = Get-ADUser -SearchBase "OU=Level1,DC=domain,DC=org" -LDAPFilter {"(&(Surname=*$lastName*)(GivenName=*$firstName*))"} -ResultSetSize 1 -Properties $properties | Select $properties; 

내가 필터링하는 데,이 경우 $firstname$lastName에, 변수를 사용하는 문제가 있습니다.

$firstName$lastName은 첫 번째 사용자로부터 파생되었으며 해당 이름과 성으로 AD의 다른 사용자를 확인하는 데 사용됩니다. 여기에 문제를 제기하기위한 더 많은 배경을 제공하기 위해이 모든 것이 이루어지는 기능이 있습니다.

Function ComparingUserAccounts([System.Array]$users, $exceptions = @()){ 
    $notes = ""; 
    $invalidUsers = @(); 

    Foreach($user in $users){ 
     $firstName = $user.GivenName; 
     $lastName = $user.Surname; 
     $compareUser = Get-ADUser -SearchBase "OU=Level1,DC=domain,DC=org" -LDAPFilter {"(&(Surname=*$lastName*)(GivenName=*$firstName*))"} -ResultSetSize 1 -Properties $properties | Select $properties; 
     if(($nonAdminUser.SamAccountName -eq "") -or ($nonAdminUser.SamAccountName -eq $null)){ 
      if(($nonAdminUser.Surname -ne $user.Surname) -and ($nonAdminUser.GivenName -ne $user.GivenName)){ 
       if(-Not ($exceptions.Contains($user.SamAccountName))){ 
        $invalidUsers += $user.SamAccountName; 
       } 
      } 
     } 
    } 
    if($invalidUsers.Count -gt 0){ 
     $notes += $invalidUsers.Count + " users found without that name." 
    } 

    return $notes 
} 

는 이제 필터는 LDAP에서 변수를 사용하는 방법에 대한 온라인보고 때 그것은 내 평가는 항상 "모든 사용자를 반환으로 작동하지 않았다 그러나 변수 주위에 * 퍼팅해야했다 잘못된". 사용자가 내 유효성 검사를 통과하지 못하면 사용자 이름이 $invalidUsers 컬렉션에 추가됩니다. 내가 말하는 모든 사용자가 "틀렸어"라고 말하면 대부분의 사용자가 거기에 있지 않아야한다는 사실을 알게되면 모두 해당 컬렉션에 추가됩니다.

이 검색 필터는 한마디로

을 인식 할 수

내 질문에,

이다 언급 할 가치가있을 수도 또 다른 것은 내가 필터 주위 { }을 포함하지 않는 경우 내가 얻을 것이 오

LDAP 필터에서 변수를 사용하여 AD 사용자를 얻으려면 어떻게해야합니까?

답변

1

LDAP 속성은 Active Directory 속성과 다른 이름입니다. 당신의 LDAP 필터로이를 사용해보십시오 :

"(&(sn=*$lastName*)(GivenName=*$firstName*))" 

당신은 또한 당신의 필터 주위에서 {}을 제거해야합니다.

https://www.manageengine.com/products/ad-manager/help/csv-import-management/active-directory-ldap-attributes.html

+0

그럼 당신은 아마 바로 그래서 LDAP 속성을 변경하고하지만 내 검증은 여전히 ​​모든 것이 잘못 말하는 ... – BlueBarren