Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 解析WMI DNS主机名_C#_Dns_Wmi - Fatal编程技术网

C# 解析WMI DNS主机名

C# 解析WMI DNS主机名,c#,dns,wmi,C#,Dns,Wmi,我正在尝试将从AD检索到的计算机名与使用WMI从该计算机获取的DNS主机名进行比较 我目前有: foreach (SearchResult oneMachine in allMachinesCollected) { pcName = oneMachine.Properties["name"][0].ToString(); ConnectionOptions setupConnection = new Conn

我正在尝试将从AD检索到的计算机名与使用WMI从该计算机获取的DNS主机名进行比较

我目前有:

foreach (SearchResult oneMachine in allMachinesCollected)
            {
                pcName = oneMachine.Properties["name"][0].ToString();
                ConnectionOptions setupConnection = new ConnectionOptions();
                setupConnection.Username = USERNAME;
                setupConnection.Password = PASSWORD;
                setupConnection.Authority = "ntlmdomain:DOMAIN";
                ManagementScope setupScope = new ManagementScope("\\\\" + pcName + "\\root\\cimv2", setupConnection);
                setupScope.Connect();

                ObjectQuery dnsNameQuery = new ObjectQuery("SELECT * FROM Win32_ComputerSystem");
                ManagementObjectSearcher dnsNameSearch = new ManagementObjectSearcher(setupScope, dnsNameQuery);
                ManagementObjectCollection allDNSNames = dnsNameSearch.Get();
                string dnsHostName;
                foreach (ManagementObject oneName in allDNSNames)
                {
                    dnsHostName = oneName.Properties["DNSHostName"].ToString();
                    if (dnsHostName == pcName)
                    {
                        shutdownMethods.ShutdownMachine(pcName, USERNAME, PASSWORD);
                        MessageBox.Show(pcName + " has been sent the reboot command");
                    }
                }
            }
        }

但是我得到了一个ManagementException>>dnsHostName=oneName.Properties[“dnsHostName”].ToString() 根据您连接到此属性的操作系统的不同,此属性将不可用。从中可以看出,它在Windows 2000和XP上不可用。但是,它在Win32_NetworkAdapterConfiguration类上可用,但您将收到多个对象,您必须循环这些对象才能获得名称,因为其中大多数对象都为空

另外,
dnsHostName=oneName.Properties[“dnsHostName”].ToString()不正确。它应该是
dnsHostName=oneName.Properties[“dnsHostName”].Value.ToString()
。同样,如果您决定使用Win32_NetworkAdapterConfiguration,请记住它可以为null