所以我試圖更新的Microsoft DNS服務器數據庫中的所有IP地址,這裏是我的代碼修改數據庫中刪除項目
internal bool UpdateIPFromDns(string oldIP, string newIP)
{
try
{
string Query = ("SELECT * FROM MicrosoftDNS_AType WHERE RecordData = '" + oldIP + "'");
ManagementObjectSearcher s = new ManagementObjectSearcher(_scope, new ObjectQuery(Query));
ManagementObjectCollection col = s.Get();
foreach (ManagementObject wmiZone in col)
{
Console.WriteLine("Updating: " + (String)wmiZone.Properties["OwnerName"].Value + " To -> " + newIP);
ManagementBaseObject mgmtParams = null;
mgmtParams = wmiZone.GetMethodParameters("Modify");
mgmtParams["IPAddress"] = newIP;
wmiZone.InvokeMethod("Modify", mgmtParams, null);
}
return true;
}
catch (Exception ex)
{
Console.WriteLine("error: " + ex);
return false;
}
}
因爲有時候它似乎好工作和其他時候它打印出來它是更新的項目(就像它應該),但是當我刷新數據庫本身它實際上已經刪除了所有這些項目,我不知道它爲什麼這樣做。
編輯:
好了,所以我已經摸索出了刪除項目
時,那麼在數據庫中,我們開始與
Example.com->
example.com 1.1.1.1
t1.example.com 1.1.1.1
t2.example.com 2.3.4.5
test.com->
test.com 1.1.1.1
t1.test.com 2.3.4.5
t2.test.com 1.1.1.1
如果我在1.1.1.1和更新運行更新它到2.3.4.5它更新所以現在的數據庫看起來像這樣
Example.com->
example.com 2.3.4.5
t1.example.com 2.3.4.5
t2.example.com 2.3.4.5
test.com->
test.com 2.3.4.5
t1.test.com 2.3.4.5
t2.test.com 2.3.4.5
現在,如果我是t Ø運行它再次更新到2.3.4.5 2.3.4.5然後將其刪除與IP 2.3.4.5
所有項目,但我不知道爲什麼它這樣做
PS我不是很有經驗的WMI,所以如果我在那裏做錯了什麼,請告訴我
我不熟悉這個,但只是作爲一個評論...它通常不贊成在代碼中使用SELECT *,你應該指定你想要返回的確切的列。在代碼中,你總是會知道你得到的是什麼,而數據庫會隨着時間的推移發生顯着的變化,並且返回比你需要的更多的東西。 – swinkel
@swinkel這是OP正在使用的WMI .. – MethodMan
@swinkel謝謝,但是當我測試時,我試圖弄清楚它有哪些列,這就是爲什麼我有*,但現在我會改變它。 – jLynx