私は、私たちのユーザーに関するプロパティをすべて前もって指定せずにLDAPクエリを達成しようとしています。これをテーブルに表示したいので、以下のコードを使用します。これは、search.PropertiesToLoad.Add( "cn")のコメントを外すと機能します。同じ方法で追加する他のプロパティは表示されますが、すべてのプロパティを完全に検索すると表示されません。Active Directoryテーブル内のすべてのプロパティを表示
DirectoryEntry myLdapConnection = createDirectoryEntry();
DirectorySearcher search = new DirectorySearcher(myLdapConnection);
search.CacheResults = true;
//search.PropertiesToLoad.Add("cn");
SearchResultCollection allResults = search.FindAll();
DataTable resultsTable = new DataTable("Results");
//add columns for each property in results
foreach (string colName in allResults.PropertiesLoaded)
resultsTable.Columns.Add(colName, colName.GetType());
//loop to add records to DataTable
foreach (SearchResult result in allResults)
{
int tmp = result.Properties.Count;
DataRow row = resultsTable.NewRow();
foreach (string columnName in search.PropertiesToLoad)
{
if (columnName.Equals("lastlogon"))
{
if (result.Properties.Contains(columnName))
row[columnName] = ConvertDate(result.Properties[columnName].ToString());
else
row[columnName] = "";
}
else
{
if (result.Properties.Contains(columnName))
row[columnName] = result.Properties[columnName][0].ToString();
else
row[columnName] = "";
}
}
resultsTable.Rows.Add(row);
}
gridResults.DataSource = resultsTable;
問題は何PropertiesToLoadが指定されていなかったが、それは私が欲しいものを達成するために彼らの方法でないとき、私はループにすべてのプロパティをこのことを期待
foreach (string colName in allResults.PropertiesLoaded)
resultsTable.Columns.Add(colName, colName.GetType());
であると思われます。
私は、まだコードの中にいくつかのキャッチと他のビットを試す必要があることを知っています、それは大まかな草案です。
ありがとう!!!!!!!!! – Sak