Как удалить зону DNS с помощью WMI

Я могу создать новую зону, добавить и удалить записи для этой зоны, и все это относительно легко с помощью WMI и System.Management, но я не могу понять, как удалить зону. Похоже, что это не метод в документации WMI:

http://msdn.microsoft.com/en-us/library/ms682123(VS.85).aspx

Любые мысли о том, как это сделать? Пытаюсь сохранить DNS-сервер в чистоте, когда мы удаляем старых клиентов веб-сайта, но я могу добиться только удаления всех записей в зоне.

РЕДАКТИРОВАТЬ: Это на компьютере с Windows Server 2008 R2. И я бы согласился с ответом «не использовать WMI», если есть альтернативное решение, которое я могу выполнить с удаленной машины и кода на С#.


person Chris Curtis    schedule 30.09.2010    source источник


Ответы (1)


Вы можете удалять зоны так же, как и запись.

internal static bool DeleteZoneFromDns(string ZoneName)
    {
        try
        {
            string Query = "SELECT * FROM MicrosoftDNS_Zone WHERE ContainerName = '" + ZoneName + "'";
            ObjectQuery qry = new ObjectQuery(Query);
            DnsProvider dns = new DnsProvider();
            ManagementObjectSearcher s = new ManagementObjectSearcher(dns.Session, qry);
            ManagementObjectCollection col = s.Get();
            dns.Dispose();

            foreach (ManagementObject obj in col)
            {
                obj.Delete();
            }
            return true;
        }
        catch (Exception)
        {
            return false;
        }
    }
person mcass20    schedule 12.10.2010
comment
Вы рок-звезда! Я не уверен, что такое класс DnsProvider, но мне удалось заменить его объектом ManagementScope, который я сейчас использовал в других моих методах управления DNS. В любом случае... сработало с первой попытки! Бесконечно благодарен - person Chris Curtis; 15.10.2010
comment
Пожалуйста! Извините, что не разъяснил класс DnsProvider, это класс, который я написал, чтобы помочь в управлении DNS. Я знал, что ты поймешь это из того, что я тебе дал. - person mcass20; 15.10.2010