在 Active Directory 中的两个域控制器之间强制复制

想象一下(Imagine)你家只有一扇门。没有窗户,没有天井门,只有一扇门。如果你不能打开那扇门会怎样?房子,以及里面的一切,对你毫无用处。

从某种意义上说,域控制器就像一扇门。一个有保镖的。这是进入你想要的东西的门户。Active Directory (AD) 是门口的保镖。它会检查您的凭据,确定您是否被允许通过门,以及您一旦进入就可以访问哪些资源。 

如果您正在运行任何类型的网络并且只有一个域控制器,那么您就住在一个只有一扇门的房子里。如果该域控制器发生故障,您的整个服务器系统就会崩溃。始终拥有多个域控制器 (DC)。

但是如何确保两个域控制器具有相同的信息?假设您在一个 DC 上进行了与安全相关的更改。您希望确保立即将更改复制到您的其他DC(DCs)。为什么要等待 15 分钟或更长时间才能按计划进行?您需要强制复制Active Directory中的域控制器。 

有3种方法可以解决这个问题;通过图形用户界面 ( GUI )、命令行界面 ( CLI ) 或PowerShell

通过 GUI 强制复制域控制器(Force Replication Of Domain Controller Through GUI)

Windows 服务器大量使用GUI ,这对新手(GUIs)系统管理员(Systems Administrators)很有好处。它更容易学习,有时可以帮助您想象真正发生的事情。 

  1. 登录到您的 DC 之一并打开Active Directory 站点和服务(Active Directory Sites and Services)

  1. 导航到要为其复制域控制器的站点。单击站点名称旁边的箭头将其展开。展开服务器(Servers)。展开您要复制的 DC。单击(Click)NTDS(NTDS Settings)设置。

  1. 在右窗格中,右键单击服务器并选择立即复制(Replicate Now)

  1. 根据有多少DC(DCs),这可能需要不到一秒到几分钟的时间。完成后,您将看到通知“Active Directory 域服务已复制连接。”。单击(Click) 确定(OK)完成。

通过 CLI 命令强制复制域控制器(Force Replication of Domain Controllers Through CLI Command)

如果您熟悉旧的Windows CMD,那么repadmin命令适合您。这是强制 DC 复制的最快的一次性方法。如果您不熟悉,那么这是了解 Windows CMD(learn about Windows CMD)的好时机。 

  1. 登录(Log)到您的DC(DCs)之一并打开命令提示符(Command Prompt)

  1. 输入(Enter)以下命令,然后按Enter键。
repadmin /syncall /AdeP

  1. 一连串的信息将向上滚动屏幕。如果您看到最后一行显示“SyncAll 终止且没有错误。”,然后是它下方的命令提示符,则说明您的DC(DCs)已成功复制。

使用 PowerShell 强制域控制器复制(Force Domain Controller Replication With PowerShell)

如果您没有在日常生活中使用PowerShell ,那么您就错过了。(PowerShell)你真的应该为自己学习 PowerShell(learn PowerShell)。它会让你的生活更轻松,如果你是一名初级系统管理员(Systems Administrator),它将极大地帮助你的职业生涯更上一层楼。

这些步骤可以在普通的PowerShell CLI中完成,但我们已经在PowerShell ISE中完成,以便更好地显示命令及其结果。我们将构建一个脚本,您可以保存它,甚至可以将其转换为您可以从PowerShell命令行调用的 cmdlet。

  1. 登录到您的 DC 之一并打开PowerShellPowerShell ISE

  1. 在编写任何脚本之前,请使用诸如force-DCReplication.ps1之类的描述性名称保存它,以便您可以更轻松地重复使用它。输入以下代码并运行它,看看它将如何获取所有DC(DCs)的名称。
(Get-ADDomainController -Filter *).Name

看看它如何返回DC(DCs)的名称?现在您可以将该结果通过管道传输到下一个 cmdlet。竖线是竖线字符 ( | ),通常位于键盘上Enter键上方。

  1. 在上一条命令的最后,输入以下代码:
| Foreach-Object { repadmin /syncall $_ (Get-ADDomain).DistinguishedName /AdeP }

该命令应如下图所示。运行。它应该返回一条消息,就像上面通过GUI强制域控制器复制(Force Domain Controller Replication)部分中的消息一样。如果它以“ SyncAll终止且没有错误”结尾。然后它起作用了。 

您是否看到它还如何使用repadmin命令?

  1. 让我们添加另一行来帮助您确保复制确实完成了。以下代码将返回您的每个DC(DCs)上次复制的日期和时间。如果您只是好奇上次复制DC的时间,则可以在其他时间单独使用此命令。(DCs)输入(Enter)代码并运行它。
Get-ADReplicationPartnerMetadata -Target "$env:userdnsdomain" -Scope Domain | Select-Object Server, LastReplicationSuccess

结果应类似于下图。您将在底部看到上次进行复制的确切日期和时间。

  1. 为了对这个脚本进行一些润色,让我们让它的输出不那么冗长。在第一行的末尾附近,输入| Out-Null/AdeP和结束括号之间的Out-Null 。这告诉它不要发布该 cmdlet 的结果。最终结果将如下图所示。

保持复制(Keep’em Replicated)

现在您知道了在 AD 中强制复制域控制器的 3 种方法。您还编写了一个可重用的PowerShell脚本,您可以随时从PowerShell命令行调用该脚本。没有任何理由让您的最新 DC 更改坐下来等待下一次计划的复制,无论何时。



About the author

我是一名技术人员,多年来一直在音频和用户帐户领域工作。我有使用 Windows 和 Mac 电脑以及苹果产品的经验。自 2007 年以来,我还一直在教授 Apple 产品的使用。我的主要专业领域是用户帐户和家庭安全。除此之外,我还使用过各种软件程序,包括 Windows 7 Home Premium、8.1 Pro、10 Pro 和 12.9 Mojave。



Related posts