[英]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.