Принудительная репликация одного объекта Active Directory программно - PullRequest
3 голосов
/ 06 апреля 2011

Кто-нибудь знает, как принудительно реплицировать один объект Active Directory программно?

Чтобы быть более понятным, я хочу повторить этот

CN=Sample User,OU=Sample OU,DC=company,DC=com

и весь раздел, как этот

DC=company,DC=com

Я попытался DomainController.SyncReplicaFromAllServers Method, но я думаю, что он используется для разделов.

Ответы [ 4 ]

2 голосов
/ 21 апреля 2011

Прямой ответ - нет, вы не можете сказать серверу ldap, чтобы он копировал только один объект.Репликация всегда работает для раздела / именования контекста.

Active Directory имеет глобальный каталог, который можно использовать.Существует множество атрибутов, помеченных как атрибут PAS (Partial Attribute Set).С каждого контроллера домена атрибут PAS от каждого объекта будет немедленно синхронизирован со всем GC-сервером KCC.Вы можете прочитать больше об этом в документе microsft . Вы можете выполнить поиск ldap на порту GC (3268), чтобы быстро найти атрибуты объекта.

Но если вы можете рассказать более конкретные деталиВаша потребность, которая поможет.

1 голос
/ 03 февраля 2014

Вы можете реплицировать один объект с помощью «repadmin / replsingleobj» (http://technet.microsoft.com/en-us/library/cc742123.aspx)

0 голосов
/ 10 августа 2017

Я пишу этот код для того, чтобы я мог сделать повтор между двумя DC, но он работает только с правами администратора из пула IIS в VS2015. В качестве администратора в IIS вы должны изменить идентификацию пула приложений:

public static SecureString sSPasswordFianl;
public static void Securepass()
{
    string sPassword = "yourpassword";
    SecureString sSPassword = new SecureString();
    foreach (char X in sPassword)
        sSPassword.AppendChar(X);

    sSPasswordFianl = sSPassword;
}

public static string RepTXADp01()
{
    try
    {
        Process Replactions = new Process();
        ProcessStartInfo procInfo = new ProcessStartInfo();
        procInfo.UseShellExecute = false;
        procInfo.FileName = HttpContext.Current.Server.MapPath("~/Rep.bat");
        procInfo.WorkingDirectory = @""; //The working DIR.
        Securepass();
        procInfo.Verb = "runasuser";
        procInfo.Domain = "yourDomian.de";
        procInfo.UserName = "Username";
        procInfo.Password = sSPasswordFianl;
        procInfo.CreateNoWindow = true;
        Process.Start(procInfo);  //Start that process.
         string output;
        return (output="OK");
    }
    catch (Exception ex)
    {
        return (ex.Message.ToString());
    }
}

Reb.bat:

repadmin /replicate server1 Server2 DC=yourdomian ,DC=com
0 голосов
/ 27 апреля 2011

Нет никакого способа сделать это на уровне объекта, лучший обходной путь - когда вы сохраняете свой объект, попробуйте сохранить его на всех контроллерах домена (при необходимости)

, т.е. у вас есть контроллер домена 1, контроллер домена2. Контроллер домена 3 сохраняет все, а не ждет его репликации.

...