如何确定服务器上是否已安装"Active Directory域服务"角色

MrL*_*ter 5 c# roles servermanager

我试图弄清楚Active Directory域服务是否安装了Windows服务器.

我知道它们出现在服务器管理器中,但是如果角色安装在使用C#代码的服务器上,我可以通过编程方式获取

小智 3

如果您知道要测试的服务器的名称并且可以使用域管理员权限远程运行该程序,则可以使用 WMI:

internal static bool IsDomainController(string ServerName)
{
    StringBuilder Results = new StringBuilder();

    try
    {
        ManagementObjectSearcher searcher =
            new ManagementObjectSearcher("\\\\" + ServerName + "\\root\\CIMV2",
            "SELECT * FROM Win32_ServerFeature WHERE ID = 10");

        foreach (ManagementObject queryObj in searcher.Get())
        {
            Results.AppendLine(queryObj.GetPropertyValue("ID").ToString());
        }
    }
    catch (ManagementException)
    {
        //handle exception
    }

    if (Results.Length > 0)
        return true;
    else
        return false;
}
Run Code Online (Sandbox Code Playgroud)

如果您在服务器本地运行该程序,WMI 路径将更改为:

        ManagementObjectSearcher searcher =
            new ManagementObjectSearcher("root\\CIMV2",
            "SELECT * FROM Win32_ServerFeature WHERE ID = 10");
Run Code Online (Sandbox Code Playgroud)

有关角色及其 ID 号的完整列表,请参阅有关 Win32_ServerFeature 的 MSDN 参考。