2011-01-20 4 views
0

OUでユーザーを検索する必要があります。次のように私のソリューションは、これまでのところです: -OUでユーザーを検索する

// s = "ou=myou1,ou=myou2,ou=muou3,dc=myad,dc=com" & t = "myad.com" 

PrincipalContext context = new PrincipalContext(ContextType.Domain, t, s); 
UserPrincipal user = UserPrincipal.FindByIdentity(context, "boborwhoever"); 
if (user != null) found him! 

私が午前問題は、私のUserPrincipalユーザーが移入され、私は見つけることがボブのことです

を(明白な擬似コードはご容赦いますが、画像を取得してください) 'もし彼が' myou3 'にいれば、私はsを "ou = myou1、dc = myad、dc = com"に変更でき、まだ' bob 'を見つけることができます。したがって、UserPrincipal.FindByIdentityはサブOUをチェックインするようです。

OUの記載内容を確認するにはどうすればよいですか?それとも私はマイルだとこれは私がこの

using System.DirectoryServices 

DirectoryEntry de = new DirectoryEntry(); 
de.Path = "LDAP://**Your connection string here**"; 
de.AuthenticationType = AuthenticationTypes.Secure; 

DirectorySearcher search = new DirectorySearcher(de); 
search.Filter = "(SAMAccountName=" + account + ")"; 

//What properties do we want to return? 
search.PropertiesToLoad.Add("displayName"); 
search.PropertiesToLoad.Add("mail"); 

search.SearchScope = SearchScope.OneLevel //this makes it only search the specified level 

SearchResult result = search.FindOne(); 

if (result != null) 
{ 
    //Get Him! } 
else 
{ 
    //Not Found 
} 

がでこれを使用していたんだろうかある

おかげ スティーブ

+0

OUとは何ですか?そしてスティーブは誰ですか? – Joe

+0

こんにちはJoe、wikipediaでアクティブディレクトリを入力してそこから取り出してみてください。ありがとう、スティーブ – user474541

答えて

1

:-)より良い方法で全体のことをやるべきそれはうまく機能しました。

+0

ありがとうスチュアート、私は以前に、この例に似たものを書いていました(サーチスコープの設定を除いて)。標準化するためにSystem.DirectoryServices.AccountManagement名前空間を使用する方法を見つけたいと思っていましたが、まだ方法を見つけることができませんでした。ありがとうございます:-) – user474541

関連する問題