2

名前に特定のテキスト文字列を含むすべてのユーザーを、Exchange Server グローバル アドレス一覧に対して検索する必要があります。この操作は、ASP.NET アプリケーションから実行されます。GAL には複数のドメインにまたがるユーザーが含まれるため、(Active Directory ではなく) GAL が必要であることに注意してください。こちらもお客様のご要望です。

私は、Exchange Web サービスと Outlook Web Access の方法を検討してきました。ただし、私の組織ではどちらも構成されていない可能性があるため、インフラストラクチャに構成を依頼する前に、どちらのオプションが正しいかを知る必要があります。

Exchange Web サービス

Exchange Web サービスでResolveNamesメソッドを使用したいと考えていました。そのドキュメントには、次のように記載されています。

最初に Active Directory が検索され、次にユーザーの連絡先フォルダーが検索されます。

このメソッドは、現在のドメインのユーザーのみを返すことを暗示しているようです。これは正しいです?

Outlook Web アクセス

私が見つけたもう 1 つのオプションは、GALFind でした。これは完璧に見えますが、この記事ではサポートされていないと述べています。このTechnet記事では、もはや利用できないことが確認されています。

これらまたは他のオプションについてアドバイスをいただけますか?

4

2 に答える 2

3

フォレスト ルートからクエリを開始することで、複数のドメインにわたってクエリを実行できます。最終的に使用したコードは次のとおりです。

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
    }
}
于 2009-09-02T13:36:34.970 に答える
0

私は Exchange の専門家ではありませんが、コラボレーション データ オブジェクト(CDO)を使用してこれを行うことはできませ

于 2009-08-12T17:08:17.323 に答える