Active Directory からすべてのユーザー関連情報を取得する必要があります。
私のコードusername,useremail, Full Name
はユーザーを取得しますが、マネージャーの名前を取得しようとすると、コードは例外をスローします。
以下は私のコードです:
DataTable table = new DataTable();
table = dt;
DirectoryEntry dEntry = new DirectoryEntry("LDAP://" + domain);
DirectorySearcher dSearch = new DirectorySearcher(dEntry);
SearchResultCollection sResultcol;
try
{
dSearch.Filter = "(objectCategory=organizationalUnit)";
sResultcol = dSearch.FindAll();
foreach (SearchResult sResult in sResultcol)
{
DirectoryEntry dUserEntry = new DirectoryEntry();
DirectorySearcher dSearchUsers = new DirectorySearcher(dEntry);
SearchResultCollection sUserResults;
dSearchUsers.Filter = "(objectClass=User)";
dSearchUsers.SearchScope = SearchScope.Subtree;
sUserResults = dSearchUsers.FindAll();
foreach (SearchResult sUserResult in sUserResults)
{
DataRow dr = table.NewRow();
string empCode = sResult.Properties["pager"].ToString();
if (empCode.Length != 0)
{
dr["empcode"] = empCode;
string namee = sUserResult.Properties["samaccountname"][0].ToString();
dr["name"] = namee;
string disname = sResult.Properties["distinguishedName"][0].ToString();
dr["ou"] = disname;
string manager = sUserResult.Properties["manager"].Value.ToString();
dr["manager"] = manager;
dt.Rows.Add(dr);
}
}
dUserEntry.Close();
}
return dt;
}
catch (Exception ex)
{
throw new Exception("Error at retrieveUsers() : " + ex.Message.ToString());
}
私は例外を取得します
インデックスが範囲外でした。負ではなく、コレクションのサイズより小さくなければなりません。パラメータ名:インデックス
マネージャーの名前を取得しようとすると。
Active Directory の構造により、マネージャーの名前は別のタブに表示されます。
Active Directory の [全般] 以外のタブからデータを取得する方法を知っている人はいますか?
私を助けてください。
前もって感謝します。