(Imagine)あなたの家へのドアが1つしかないことを想像してみてください。窓もパティオドアもありません。ドアは1つだけです。そのドアを開けられない場合はどうなりますか?家とその中のすべてはあなたには役に立たない。
ドメインコントローラーは、ある意味でドアのようなものです。警備員がいる人。それはあなたが望むものの中に入るためのゲートウェイです。Active Directory(AD)は、ドアの警備員です。それはあなたの資格情報をチェックし、あなたがドアを通り抜けることを許可されているかどうか、そしてあなたが中に入るとどのリソースにアクセスできるかを決定します。
あらゆる種類のネットワークを実行していて、ドメインコントローラーが1つしかない場合は、ドアが1つある家に住んでいます。そのドメインコントローラーに何かが起こった場合、サーバーのシステム全体が崩壊します。常に複数のドメインコントローラー(DC)を使用してください。
しかし、両方のドメインコントローラーが同じ情報を持っていることをどのように確認しますか?1つのDCでセキュリティ関連の変更を行ったとします。変更が他のDC(DCs)にすぐに複製されることを確認する必要があります。スケジュールどおりに発生するまで15分以上待つのはなぜですか?ActiveDirectoryでドメインコントローラーのレプリケーションを強制する必要があります。
これにアプローチする方法は3つあります。グラフィカルユーザーインターフェイス(GUI)、コマンドラインインターフェイス(CLI)、またはPowerShellを使用します。
GUIを介したドメインコントローラーの強制レプリケーション(Force Replication Of Domain Controller Through GUI)
WindowsサーバーはGUIを頻繁に使用します。これは、初心者の(GUIs)システム管理者(Systems Administrators)に適しています。習得が容易で、実際に何が起こっているのかを視覚化するのに役立つ場合があります。
- DCの1つにログインし、ActiveDirectoryサイトとサービス(Active Directory Sites and Services)を開きます。
- ドメインコントローラーを複製するサイトに移動します。サイト名の横にある矢印をクリックして展開します。サーバー(Servers)を展開します。複製するDCを展開します。NTDS設定を(NTDS Settings)クリック(Click)します。
- 右側のペインで、サーバーを右クリックし、[今すぐ複製(Replicate Now)]を選択します。
- DC(DCs)の数にもよりますが、これには1秒未満から数分かかる場合があります。完了すると、「ActiveDirectoryドメインサービスが接続を複製しました」という通知が表示されます。[ (Click) OK]をクリックして終了します。
CLIコマンドを使用してドメインコントローラーのレプリケーションを強制する(Force Replication of Domain Controllers Through CLI Command)
古き良きWindowsCMD(Windows CMD)に精通している場合は、repadminコマンドが最適です。これは、DC複製を強制するための最も迅速な1回限りの方法です。慣れていない場合は、WindowsCMDについて学ぶ(learn about Windows CMD)良い機会です。
- (Log)DC(DCs)の1つにログインし、コマンドプロンプト(Command Prompt)を開きます。
- (Enter)次のコマンドを入力し、Enterキー(Enter )を押します。
repadmin /syncall /AdeP
- 一連の情報が画面を上にスクロールします。最後の行に「SyncAllはエラーなしで終了しました。」と表示され、その下にあるコマンドプロンプトが表示された場合、DC(DCs)は正常に複製されています。
PowerShellを使用してドメインコントローラーのレプリケーションを強制する(Force Domain Controller Replication With PowerShell)
日常生活でPowerShell(PowerShell)を使用していない場合は、見逃していることになります。PowerShellを学ぶ(learn PowerShell)のは本当にあなた自身のおかげです。それはあなたの人生を楽にします、そしてあなたがジュニアシステム管理者(Systems Administrator)であるならば、それはあなたのキャリアを次のステップに導くのを大いに助けます。
これらの手順は通常のPowerShellCLI(PowerShell CLI)で実行できますが、コマンドとその結果をわかりやすく表示するために、PowerShellISEで実行しました。(PowerShell ISE)保存したり、 PowerShell(PowerShell)コマンドラインから呼び出すことができるコマンドレットに変換したりできるスクリプトを作成します。
- DCの1つにログインし、PowerShellまたはPowerShellISEを開きます。
- スクリプトを作成する前に、これをforce-DCReplication.ps1の(force-DCReplication.ps1)ようなわかりやすい名前で保存して、再利用しやすくします。次のコードを入力して実行し、すべてのDC(DCs)の名前を取得する方法を確認します。
(Get-ADDomainController -Filter *).Name
DC(DCs)の名前を返す方法をご覧ください。これで、その結果を次のコマンドレットにパイプできます。パイプは縦線文字(|Enterキーのすぐ上にあります。
- 前のコマンドの最後に、次のコードを入力します。
| Foreach-Object { repadmin /syncall $_ (Get-ADDomain).DistinguishedName /AdeP }
コマンドは、次の画像のようになります。それを実行します。上記の「 GUI(GUI)を介したドメインコントローラレプリケーション(Force Domain Controller Replication)の強制」セクションにあるようなメッセージが返されるはずです。で終わる場合、「SyncAllはエラーなしで終了しました。」それからそれは働いた。
repadminコマンドもどのように使用されているかわかりましたか?
- レプリケーションが実際に完了したことを確認するのに役立つ別の行を追加しましょう。次のコードは、各DC(DCs)が最後に複製された日時を返します。DC(DCs)が最後に複製されたのがいつか知りたい場合は、このコマンドを別のときに単独で使用できます。コードを入力して実行します。(Enter)
Get-ADReplicationPartnerMetadata -Target "$env:userdnsdomain" -Scope Domain | Select-Object Server, LastReplicationSuccess
結果は下の画像のようになります。レプリケーションが最後に行われた正確な日時が下部に表示されます。
- このスクリプトを少し洗練させるために、出力の冗長性を少し減らしましょう。最初の行の終わり近くに、| Out-Null/AdePと終了ブラケットの間のOut-Null 。これは、そのコマンドレットの結果を出力しないように指示します。最終結果は次の画像のようになります。
複製しておく(Keep’em Replicated)
これで、ADでドメインコントローラーのレプリケーションを強制する3つの方法がわかりました。また、 PowerShell(PowerShell)コマンドラインからいつでも呼び出すことができる再利用可能なPowerShellスクリプトをまとめました。最新のDC変更が、次のスケジュールされたレプリケーションを待つという言い訳はありません。
Force Replication Between Two Domain Controllers in Active Directory
Imagine having onlу one dоor to your homе. No windows, no patio door, just one door. What haрpens if уou can’t open that door? The house, and everythіng in it, is υseless to you.
A domain controller is like a door, in a sense. One with a bouncer at it. It’s the gateway to get inside to the things you want. Active Directory (AD) is the bouncer at the door. It checks your credentials, determines if you are allowed to go through the door, and what resources you can access once inside.
If you’re running a network of any kind and only have one domain controller, you’re living in a house with one door. If something happens to that domain controller, your whole system of servers falls apart. Always have more than one domain controller (DC).
But how do you make sure that both domain controllers have the same information? Let’s say you made a security-related change on one DC. You want to make sure that change is replicated on your other DCs immediately. Why wait 15 minutes or more for it to happen by schedule? You need to force replication of the domain controllers in Active Directory.
There are 3 ways to approach this; through the graphical user interface (GUI), through the command-line interface (CLI), or via PowerShell.
Force Replication Of Domain Controller Through GUI
Windows servers make use of GUIs a lot, which is good for novice Systems Administrators. It’s easier to learn and sometimes helps you visualize what’s really happening.
- Log in to one of your DCs and open Active Directory Sites and Services.
- Navigate to the site for which you’d like to replicate the domain controllers. Expand it by clicking the arrowhead next to the site name. Expand the Servers. Expand the DC which you’d like to replicate. Click on NTDS Settings.
- In the right pane, right-click on the server and select Replicate Now.
- Depending on how many DCs there are, this could take less than a second to a few minutes. When it is complete, you’ll see the notification, “Active Directory Domain Services has replicated the connections.”. Click OK to finish.
Force Replication of Domain Controllers Through CLI Command
If you’re familiar with the good old Windows CMD, then the repadmin command is for you. This is the quickest one-off way to force DC duplication. If you’re not familiar then this is a good time to learn about Windows CMD.
- Log in to one of your DCs and open the Command Prompt.
- Enter the following command, and then press the Enter key.
repadmin /syncall /AdeP
- A litany of information will scroll up the screen. If you see that the last line reads, “SyncAll terminated with no errors.”, and then the command prompt underneath it, your DCs are successfully replicated.
Force Domain Controller Replication With PowerShell
If you’re not using PowerShell in your daily life, you’re missing out. You really owe it to yourself to learn PowerShell. It will make your life easier, and if you’re a Junior Systems Administrator it will massively help take your career to the next step.
These steps can be done in the ordinary PowerShell CLI, but we’ve done it in the PowerShell ISE to better show the commands and their results. We’re going to build a script that you can save or even turn into a cmdlet that you can call from the PowerShell command line.
- Log in to one of your DCs and open PowerShell or PowerShell ISE.
- Before writing any script, save this with a descriptive name like force-DCReplication.ps1 so you can reuse it easier. Enter the following code and run it to see how it will get the names of all your DCs.
(Get-ADDomainController -Filter *).Name
See how it returns the names of the DCs? Now you can pipe that result into the next cmdlet. A pipe is the vertical line character ( | ), that’s usually found on the keyboard just above the Enter key.
- At the end of the previous command, enter the following code:
| Foreach-Object { repadmin /syncall $_ (Get-ADDomain).DistinguishedName /AdeP }
The command should look like it does in the image below. Run it. It should return a message just like the one back in the Force Domain Controller Replication Through GUI section above. If it ends with, “SyncAll terminated with no errors.” then it worked.
Did you see how it also uses the repadmin command?
- Let’s add another line to help you make sure that the replication really did complete. The following code will return the date and time of when each of your DCs was last replicated. This command could be used on its own at another time if you’re just curious when your DCs last replicated. Enter the code and run it.
Get-ADReplicationPartnerMetadata -Target "$env:userdnsdomain" -Scope Domain | Select-Object Server, LastReplicationSuccess
The result should resemble the image below. You’ll see at the bottom the exact date and time the replication last took place.
- To put some polish on this script, let’s make its output a little less verbose. Near the end of the first line, enter | Out-Null between the /AdeP and the end bracket. That tells it to not put out the results of that cmdlet. The end result will look like the following image.
Keep’em Replicated
Now you know 3 ways to force replication of domain controllers in AD. You’ve also put together a reusable PowerShell script that you can call from the PowerShell command-line whenever you want. There’s no excuse for your latest DC changes to sit and wait for the next scheduled replication, whenever that may be.