0

우리는 Active Directory를 조작 한 Powershell에서 스크립트를 사용했습니다. 나는 지금 C#에서 그것을 프로그래밍했다. 제 동료들은 PS에서 도메인 컨트롤러를 지정해야한다고 말합니다. 그렇지 않으면 DC A로 읽고 DC B에서 문제를 일으킬 수 있기 때문에 발생할 수 있습니다.DirectoryEntry 및 도메인 컨트롤러

DirectorySearcher를 사용하여 항목을 찾고 조작하는 경우 실제로 도메인 컨트롤러를 지정해야합니까? 또는 정의에 따라 동일한 도메인 컨트롤러가 개체 (DirectorySearcher)를 찾고이를 저장하기위한 사용자 (CommitChanges)입니까?

검색 부분 (DirectorySearcher의 DirectoryEntry 개체)에서만 지정할 수 있기 때문에 그렇게 생각하지 않지만 AD (CommitChanges)에 다시 쓴 경우는 그렇지 않습니다. 그래서 나는 같은 DC가 읽기에 사용 된 것과 같은 쓰기에 사용된다고 가정합니다.

아래에는 특정 항목을 검색하고 속성을 변경하는 예제가 있습니다.

string filter = "(proxyaddresses=SMTP:[email protected])"; 
string searchOU = "ou=Users,dc=abc,dc=com"; 

DirectoryEntry entry = new DirectoryEntry("LDAP://" + searchOU); 
DirectorySearcher search = new DirectorySearcher(entry); 
search.Filter = filter; 
SearchResult result = search.FindOne(); 
search.Dispose(); 
entry.Close(); 

DirectoryEntry toContact = result.GetDirectoryEntry();  
toContact.Properties["showInAddressBook"].Value = addressbook; 
toContact.CommitChanges(); 
toContect.Close(); 

답변

0

은 내가 System.DirectoryServices.AccountManagement 네임 스페이스에있는 개체를 사용하는 것이 좋습니다 수 있는가? .NET에 더 최근에 추가 된 기능으로 AD 작업을 훨씬 정상적으로 처리합니다. 최근에 DirectorySearcher의 오래된 방식으로 인해 많은 어려움이 생겼습니다. 프레임 워크에 부담을주지 마라! here과 같이 웹에서 유용한 기사가 많이 있습니다. 이 링크는 질문에 대답 할 수 있지만, 여기에 해답의 본질적인 부분을 포함하는 것이 좋습니다

var adContext = new PrincipalContext(ContextType.Domain); 
var queryTemplateUser = new UserPrincipal(adContext); 
queryTemplateUser.SamAccountName = "HenryCrunn"; 
var ldapSearcher = new PrincipalSearcher(queryTemplateUser); 
var searchResults = ldapSearcher.FindAll(); 
+0

을하고 링크를 제공합니다

액티브 디렉토리를 검색하는 PrincipalContext을 사용하는 방법의 예로서

이 시도 참조를 위해. 링크 된 페이지가 변경되면 링크 전용 답변이 유효하지 않게 될 수 있습니다. - [리뷰에서] (리뷰/저품절 포스트/13612911) – techspider

+0

네, 물론 맞습니다. 사과, 몇 가지 유용한 코드로 답변을 업데이트하겠습니다. – DrMistry

+0

@DrMistry : Microsoft의 한 남자가 더 유연하기 때문에 DirectorySearcher를 사용하라고했습니다. 문제는 링크가 도메인 컨트롤러에 대한 질문에 대답하지 않는다는 것입니다. 'searchResults'의 객체가 어떤 DC를 사용하여 객체를 찾았는지 "기억"하고 발견 된 객체를 업데이트 할 때 동일한 객체를 사용합니까? BTW : FindAll()을 사용하면 메모리 누수가있는 것으로 발견 된 객체를 처분해야합니다. – Diver