5

Active Directory ドメイン サービスが Windows サーバーにインストールされているかどうかを確認しようとしています。

それらがサーバー マネージャーに表示されることはわかっていますが、C# コードを使用して役割がサーバーにインストールされているかどうかをプログラムで取得できますか?

4

2 に答える 2

2

サーバーがドメイン コントローラーであるかどうかを確認するには、ドメイン内のドメイン コントローラーを列挙し、現在使用しているサーバーのホスト名を調べて、それらのいずれかに一致するかどうかを確認します。ドメイン コントローラのリストを取得するには:

        var domainControllers = new List<string>();
        var domain = Domain.GetCurrentDomain();
        foreach (var dc in domain.DomainControllers)
        {
            domainControllers.Add(dc.Name);
        }
        string whoami = Dns.GetHostname();

必要なエラー処理を必ず追加してください (これをワークグループ コンピューターで実行すると、エラーが発生します)。

編集: DCPROMO を検出する別の方法 (DCPROMO なしでドメイン サービスをインストールすることが可能であり、それは悪いことであるため):

1) DCPROMO が処理を行ったときに作成されるデバッグ ログを解析 (およびその存在を確認) します。c:\windows\debug\dcpromo.log にあるはずです

2) この DSQUERY コマンドは高速で、DCPROMO が実行されたすべてのサーバーを表示します。

 dsquery * "cn=Sites,cn=Configuration,dc=MyDomain,dc=com" -Filter "(cn=NTDS Settings)" -attr distinguishedName whenCreated

Processを使用して起動した場合、問題はコマンドライン出力から取得されます。これを行う方法に取り組んでおり、クエリで AD フィルタリングをしばらく行っていないため、テストしたら更新します。

于 2014-08-29T21:19:33.353 に答える