c#
  • database
  • dns
  • wmi
  • 2016-01-08 138 views 0 likes 
    0

    所以我試圖更新的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,所以如果我在那裏做錯了什麼,請告訴我

    +0

    我不熟悉這個,但只是作爲一個評論...它通常不贊成在代碼中使用SELECT *,你應該指定你想要返回的確切的列。在代碼中,你總是會知道你得到的是什麼,而數據庫會隨着時間的推移發生顯着的變化,並且返回比你需要的更多的東西。 – swinkel

    +0

    @swinkel這是OP正在使用的WMI .. – MethodMan

    +0

    @swinkel謝謝,但是當我測試時,我試圖弄清楚它有哪些列,這就是爲什麼我有*,但現在我會改變它。 – jLynx

    回答

    1

    因此,每個微軟的實現都完全按照他們編程的方式執行:https://support.microsoft.com/en-us/kb/979609。 (我有一種感覺,服務器做了一些奇怪的事,而且你有WMI的權利)。所以你現在可能已經建立了這個,但是如果舊地址等於新地址,你需要跳過更新。鑑於WMI非常昂貴,無論如何這都是一個好主意。

    +0

    我想這是一個我可以使用的工作 – jLynx

    相關問題