استعلام قائمة العناوين العمومية (GAL) للمستخدمين عبر المجالات
-
12-09-2019 - |
سؤال
أحتاج إلى البحث عن جميع المستخدمين الذين تحتويون على سلسلة نصية معينة في اسمهم مقابل قائمة العناوين العمومية Exchange Server. سيتم تنفيذ هذه العملية من تطبيق ASP.NET. لاحظ أن GAL مطلوب (وليس Active Directory) لأنها تحتوي على مستخدمين عبر المجالات. إنه أيضا ما طلبه العميل.
لقد كنت أبحث في Exchange Services Web وأساليب Outlook Web Access. ومع ذلك، لا يجوز تكوين أي منها في مؤسستي، لذلك، أحتاج إلى معرفة أي خيار هو الصحيح قبل طرح البنية التحتية لتكوينه.
تبادل خدمات الويب
كنت آمل أن أستخدم أسماء العاصمة طريقة في Exchange Web Services. تنص الوثائق الخاصة بها على ما يلي:
يتم تفتيش Active Directory أولا، ثم يتم البحث في مجلد جهات الاتصال الخاص بالمستخدم.
يبدو أن هذه الطريقة ستظهر فقط للمستخدمين فقط من المجال الحالي. هل هذا صحيح؟
Outlook Web Access.
الخيار الآخر الذي وجدته كان galfind. هذا يبدو مثاليا ولكن هذه المقالة صرح أنه غير مدعوم. وبعد تم تأكيد أنه لم يعد متاحا في هذا تقنية شرط.
هل يمكن لأي شخص يرجى تقديم المشورة بشأن هذه أو أي خيارات أخرى؟
المحلول
من الممكن الاستعلام عبر المجالات عن طريق بدء الاستعلام من جذر الغابات. هنا هو الكود الذي انتهى بيه باستخدام:
string filter = "(&(objectCategory=person)(objectClass=user)(name=*" + search + "*))";
var rootEntry = new DirectoryEntry("GC:");
foreach (DirectoryEntry entry in rootEntry.Children)
{
DirectoryEntry forestEntry = entry;
DirectorySearcher searcher = new DirectorySearcher
{
SearchRoot = forestEntry,
Filter = filter,
Sort =
{
Direction = SortDirection.Ascending,
PropertyName = "cn"
}
};
searcher.PropertiesToLoad.AddRange(ADProperties.Values.ToArray());
SearchResultCollection results = searcher.FindAll();
foreach (SearchResult result in results)
{
DirectoryEntry foundEntry = result.GetDirectoryEntry();
// Do something
}
}
نصائح أخرى
أنا لا خبير تبادل ولكن لا يمكنك القيام بذلك باستخدام كائنات بيانات التعاون (CDO) على الرغم من أنها قد لا تكون سويفت جدا.