簡體   English   中英

解析WMI DNS主機名

[英]Resolving the WMI DNS Host Name

我試圖在我從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類中可用,但是您將收到多個對象,您將不得不循環獲取該對象,因為它們中的大多數將為null。

另外, dnsHostName = oneName.Properties["DNSHostName"].ToString(); 是不正確的。 它應該是dnsHostName = oneName.Properties["DNSHostName"].Value.ToString() 同樣,如果您決定使用Win32_NetworkAdapterConfiguration,請記住它可以為null。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM