2010-05-28 3 views
0

Я пытаюсь провести сравнение между именем машины, которую я получил из AD, и DNS Host Name. Я хочу получить WMI с машины.Устранение имени хоста DNS WMI

я в настоящее время:

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();. < < здесь заявка не найден. Любые идеи?

ответ

1

В зависимости от операционной системы, вы используете этот объект, будет недоступен. Вы можете видеть из documentation, что он недоступен в Windows 2000 и XP. Тем не менее, он доступен в классе Win32_NetworkAdapterConfiguration, но вы получите более одного объекта, который вам придется перебирать, чтобы получить имя, так как большинство из них будет равно нулю.

Также не указан dnsHostName = oneName.Properties["DNSHostName"].ToString();. Это должно быть dnsHostName = oneName.Properties["DNSHostName"].Value.ToString(). Опять же, если вы решите использовать Win32_NetworkAdapterConfiguration, имейте в виду, что он может быть нулевым.

Смежные вопросы