# Checking Active Directory Domain Controller Health and Replication

[https://woshub.com/check-active-directory-health-and-replication/](https://woshub.com/check-active-directory-health-and-replication/)

## How to Check AD Domain Controller Health Using Dcdiag?

**Dcdiag** is a basic built-in tool to check Active Directory domain controller health. It must always be run on an <span style="text-decoration: underline;">**Admin Command Prompt**</span> To quickly check the state of an AD domain controller, use the command below:

`dcdiag /s:DC01`

The command runs different tests against the specified domain controller and returns a state for each test (**Passed**/**Failed**).

Typical tests:

- **Connectivity** – checks if the DC is registered in DNS, establishes test LDAP and RPC connections;
- **Advertising** – checks roles and services published on the DC;
- **FRSEvent** – checks if there are any errors of file replication service (SYSVOL replication errors);
- **FSMOCheck** – checks if the DC can connect to KDC, PDC, and Global Catalog server;
- **MachineAccount** — checks if the DC account is registered in AD correctly and if the [domain trust relationship](https://woshub.com/repair-trust-relationship-workstation-with-ad-domain/) is correct;
- **NetLogons** – checks the logon privileges to allow replication to proceed;
- **Replications** – checks the state of replication between domain controllers and if there are any errors;
- **KnowsOfRoleHolders** – checks the availability of the domain controllers with [FSMO roles](https://woshub.com/transfer-seize-fsmo-roles-in-active-directory/);
- **Services** – checks if services on the domain controllers are running;
- **Systemlog** – checks if there are any errors in the DC logs;
- Etc.

![Testing AD domain controllers health using dcdiag.exe](https://woshub.com/wp-content/uploads/2021/09/testing-ad-domain-controllers-health-using-dcdiag-.png.webp)

<div id="bkmrk--1">  
</div><div class="info_box" id="bkmrk-you-can-find-a-full-">You can find a full description of all available dcdiag tests [here](https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/cc731968(v=ws.11)).</div>Besides default tests, you can run additional domain controller checks:

- **Topology** – checks if KCC has generated full topology for all DCs
- **CheckSecurityError**
- **CutoffServers** – finds a DC that is not replicated since its partner is unavailable
- **DNS** – 6 DNS checks are available (`/DnsBasic`, `/DnsForwarders`, `/DnsDelegation`, `/DnsDymanicUpdate`, `/DnsRecordRegistration`, `/DnsResolveExtName`)
- **OutboundSecureChannels**
- **VerifyReplicas** – checks if the application partitions are replicated correctly
- **VerifyEnterpriseReferences**

For example, to check if DNS is working correctly on all domain controllers, use the following command:

`dcdiag.exe /s:DC01 /test:dns /e /v`

![dcdiag dns tests](https://woshub.com/wp-content/uploads/2021/09/dcdiag-dns-tests.png.webp)

It will result in a summary table showing test results on how DNS resolves names on all DCs (if it is OK, you will see **Pass** in every cell). If you see **Fail**, you need to run this test against the specified DC:

`dcdiag.exe /s:DC01 /test:dns /DnsForwarders /v`

To get more information from domain controller test results and save it to a text file, use this command:

<div id="bkmrk--3">  
</div>`dcdiag /s:DC01 /v >> c:\ps\dc01_dcdiag_test.log`

![dcdiag log file](https://woshub.com/wp-content/uploads/2021/09/dcdiag-log-file.png.webp)

<div class="info_box" id="bkmrk-the-following-powers">The following PowerShell command displays only a summary information on the performed dcdiag tests:</div>`Dcdiag /s:DC01 | select-string -pattern '\. (.*) \b(passed|failed)\b test (.*)'`

![Dcdiag summary report powershell script](https://woshub.com/wp-content/uploads/2021/09/dcdiag-summary-report-powershell-script.png.webp)

To get the state of all domain controllers, use:

`dcdiag.exe /s:woshub.com /a`

<div id="bkmrk--6">  
</div>If you want to display only the errors you have found, use the **/q** option:

`dcdiag.exe /s:dc01 /q`

![dcdiag failed test ](https://woshub.com/wp-content/uploads/2021/09/dcdiag-failed-test.png.webp)

In my example, the tool has detected some replication errors:

```
There are warning or error events within the last 24 hours after the SYSVOL has been shared. Failing SYSVOL replication problems may cause Group Policy problems.
......................... DC01 failed test DFSREvent
```

To make dcdiag automatically fix the Service Principal Names errors for the DC account, use the **/fix** option:

`dcdiag.exe /s:dc01 /fix`

## Checking Active Directory Replication Errors Between DCs

The built-in **repadmin** tool is used to check replication in the Active Directory domain.

<div adsbygoogle="" async="" data-ad-client="ca-pub-4401267224177329" data-ad-slot="2154127897" data-full-width-responsive="true" data-wpmeteor-after="REORDER" false="" id="bkmrk--8" src="https:></script>%20%20<ins%20class=" type="javascript/blocked">  
</div>Here is the basic command to check AD replication:

`repadmin /replsum`

![repadmin /replsummary - checking active directory replication](https://woshub.com/wp-content/uploads/2021/09/repadmin-replsummary-checking-active-directory.png.webp)

The tool has returned the current replication status between all DCs. Ideally, the **largest delta** value should be less than 1 hour (depends on the AD topology and intersite replication frequency settings), and the number of errors = 0. In my example, you can see that one of the latest replication took 14 days, but now it is OK.

To check replication for all DCs in the domain:

`repadmin /replsum *`

To test intersite replication:

`repadmin /showism`

To view the replication topology and errors (if any), run this command:

`repadmin /showrepl`

The command will check the DCs and return the time and date of the last successful replication for each directory partition (`last attempt xxxx was successful`).

![Repadmin /showrepl - replication status. show when the domain controller last attempted to perform inbound replication of Active Directory](https://woshub.com/wp-content/uploads/2021/09/repadmin-showrepl-replication-status-show-whe.png.webp)

<div class="info_box" id="bkmrk-to-display-additiona">To display additional replication info, use this command:</div>`repadmin /showrepl *`

To run password replication from a writable domain controller to a [read-only domain controller (RODC)](https://woshub.com/deploying-read-domain-controller-windows-server-2016/), the **/rodcpwdrepl** option is used.

The **/replicate** option starts the replication of the specified directory partition to a specific DC immediately.

To synchronize a specified DC with all its replication partners, use the command below:

`repadmin /syncall <nameDC>`

To view the replication queue:

`repadmin /queue`

Ideally, the replication queue should be empty.

![Monitoring AD replication queues (repadmin /queue) ](https://woshub.com/wp-content/uploads/2021/09/monitoring-ad-replication-queues-repadmin-queue.png.webp)

Check when the [latest backup of the current domain controller](https://woshub.com/backup-active-directory-domain-controller/) was created:

`Repadmin /showbackup *`

You can also check the replication state using PowerShell. For example, the following command will display all replication errors it finds in the [Out-GridView table](https://woshub.com/using-out-gridview-table-powershell/):

`Get-ADReplicationPartnerMetadata -Target * -Partition * | Select-Object Server,Partition,Partner,ConsecutiveReplicationFailures,LastReplicationSuccess,LastRepicationResult | Out-GridView`

![Get-ADReplicationPartnerMetadata shows an replication partner metadata object for each of its replication partners (domain controllers)](https://woshub.com/wp-content/uploads/2021/09/get-adreplicationpartnermetadata-shows-an-replica.png.webp)

<div class="info_box" id="bkmrk-i-have-uploaded-a-po">I have uploaded a PowerShell script I often use to check the replication state in AD to my GitHub repository. The script generates an HTML file and can send it by email using the [Send-MailMessage cmdlet](https://woshub.com/send-mailmessage-sending-emails-powershell/).</div>[https://github.com/maxbakhub/winposh/blob/main/ADHealthCheck.ps1](https://github.com/maxbakhub/winposh/blob/main/ADHealthCheck.ps1)

<div class="info_box" id="bkmrk-%23%23-active-directory-"><div class="gist" id="bkmrk-%23%23-active-directory--1"><div class="gist-file" translate="no"><div class="gist-data"><div class="js-gist-file-update-container js-task-list-container file-box"><div class="file my-2" id="bkmrk-%23%23-active-directory--2"><div class="Box-body p-0 blob-wrapper data type-powershell  " itemprop="text"><div class="js-check-bidi js-blob-code-container blob-code-content"><table class="highlight tab-size js-file-line-container js-code-nav-container js-tagsearch-file" data-hpc="" data-paste-markdown-skip="" data-tab-size="8" data-tagsearch-lang="PowerShell" data-tagsearch-path="ADHealthCheck.ps1"><tbody><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="1" id="bkmrk--13"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%23%23-active-directory--3"><span class="pl-c">\## Active Directory Replication Health Check Script (PowerShell) </span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="2" id="bkmrk--14"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%23%23-script-uses-repad"><span class="pl-c">\## Script uses repadmin to generate HTML report and sends it to admin e-mail </span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="3" id="bkmrk--15"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk--16"></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="4" id="bkmrk--17"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%23variables"><span class="pl-c">\#Variables</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="5" id="bkmrk--18"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%24report_path-%3D-%22c%3A%5Cr"><span class="pl-smi">$report\_path</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span>C:\\Report<span class="pl-pds">"</span></span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="6" id="bkmrk--19"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%24date-%3D-get-date--fo"><span class="pl-smi">$date</span> <span class="pl-k">=</span> <span class="pl-c1">Get-Date</span> <span class="pl-k">-</span>Format <span class="pl-s"><span class="pl-pds">"</span>yyyy-MM-dd<span class="pl-pds">"</span></span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="7" id="bkmrk--20"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%24array-%3D-%40%28%29"><span class="pl-smi">$array</span> <span class="pl-k">=</span> <span class="pl-k">@</span>()</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="8" id="bkmrk--21"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk--22"></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="9" id="bkmrk--23"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%23powershell-function"><span class="pl-c">\#Powershell Function to delete files older than a certain age</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="10" id="bkmrk--24"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%24intfileage-%3D-8-%23age"><span class="pl-smi">$intFileAge</span> <span class="pl-k">=</span> <span class="pl-c1">8</span> <span class="pl-c">\#age of files in days</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="11" id="bkmrk--25"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%24strfilepath-%3D-%24repo"><span class="pl-smi">$strFilePath</span> <span class="pl-k">=</span> <span class="pl-smi">$report\_path</span> <span class="pl-c">\#path to clean up</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="12" id="bkmrk--26"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk--27"></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="13" id="bkmrk--28"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%23create-filter-to-ex"><span class="pl-c">\#create filter to exclude folders and files newer than specified age</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="14" id="bkmrk--29"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-filter-select-fileag"><span class="pl-k">Filter</span> <span class="pl-en">Select-FileAge</span> {</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="15" id="bkmrk--30"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-param%28%24days%29"><span class="pl-k">param</span>(<span class="pl-smi">$days</span>)</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="16" id="bkmrk--31"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-if-%28%24_.psiscontainer"><span class="pl-k">If</span> (<span class="pl-c1">$\_<span class="pl-smi">.PSisContainer</span></span>) {}</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="17" id="bkmrk--32"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%23-exclude-folders-fr"><span class="pl-c">\# Exclude folders from result set</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="18" id="bkmrk--33"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-elseif-%28%24_.lastwrite"><span class="pl-k">ElseIf</span> (<span class="pl-c1">$\_<span class="pl-smi">.LastWriteTime</span></span> <span class="pl-k">-lt</span> (<span class="pl-c1">Get-Date</span>).AddDays(<span class="pl-smi">$days</span> <span class="pl-k">\*</span> <span class="pl-c1">-1</span>))</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="19" id="bkmrk--34"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%7B%24_%7D">{<span class="pl-c1">$\_</span>}</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="20" id="bkmrk--35"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%7D">}</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="21" id="bkmrk--36"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%23get-childitem--recu"><span class="pl-c">\#get-Childitem -recurse $strFilePath | Select-FileAge $intFileAge 'CreationTime' |Remove-Item</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="22" id="bkmrk--37"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk--38"></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="23" id="bkmrk--39"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-function-send_mail%28%5B"><span class="pl-k">Function</span> <span class="pl-en">send\_mail</span>(\[<span class="pl-k">string</span>\]<span class="pl-smi">$message</span><span class="pl-k">,</span>\[<span class="pl-k">string</span>\]<span class="pl-smi">$subject</span>) {</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="24" id="bkmrk--40"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%24emailfrom-%3D-%22sender"><span class="pl-smi">$emailFrom</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span>sender@woshub.com<span class="pl-pds">"</span></span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="25" id="bkmrk--41"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%24emailto-%3D-%22to%40woshu"><span class="pl-smi">$emailTo</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span>to@woshub.com<span class="pl-pds">"</span></span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="26" id="bkmrk--42"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%24emailcc-%3D-%22cc%40woshu"><span class="pl-smi">$emailCC</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span>cc@woshub.com<span class="pl-pds">"</span></span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="27" id="bkmrk--43"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%24smtpserver-%3D-%22smtp."><span class="pl-smi">$smtpServer</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span>smtp.woshub.com<span class="pl-pds">"</span></span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="28" id="bkmrk--44"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-send-mailmessage--sm"><span class="pl-c1">Send-MailMessage</span> <span class="pl-k">-</span>SmtpServer <span class="pl-smi">$smtpServer</span> <span class="pl-k">-</span>To <span class="pl-smi">$emailTo</span> <span class="pl-k">-</span>Cc <span class="pl-smi">$emailCC</span> <span class="pl-k">-</span>From <span class="pl-smi">$emailFrom</span> <span class="pl-k">-</span>Subject <span class="pl-smi">$subject</span> <span class="pl-k">-</span>Body <span class="pl-smi">$message</span> <span class="pl-k">-</span>BodyAsHtml</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="29" id="bkmrk--45"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%7D-1">}</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="30" id="bkmrk--46"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%23%23%23test-all-forest"><span class="pl-c">\###Test all forest </span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="31" id="bkmrk--47"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%23%24myforest-%3D-%5Bsystem"><span class="pl-c">\#$myForest = \[System.DirectoryServices.ActiveDirectory.Forest\]::GetCurrentForest()</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="32" id="bkmrk--48"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%23%24dclist-%3D-%24myforest"><span class="pl-c">\#$dclist = $myforest.Sites | % { $\_.Servers }</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="33" id="bkmrk--49"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%23%23%23"><span class="pl-c">\###</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="34" id="bkmrk--50"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk--51"></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="35" id="bkmrk--52"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%23%23%23test-specific-ad-"><span class="pl-c">\###Test specific AD domain</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="36" id="bkmrk--53"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%24domain-%3D-%22woshub.co"><span class="pl-smi">$Domain</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span>woshub.com<span class="pl-pds">"</span></span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="37" id="bkmrk--54"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%24dclist-%3D-%28get-addom"><span class="pl-smi">$dclist</span> <span class="pl-k">=</span> (<span class="pl-c1">Get-ADDomain</span> <span class="pl-smi">$Domain</span> <span class="pl-k">-</span>Server <span class="pl-smi">$Domain</span>).ReplicaDirectoryServers</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="38" id="bkmrk--55"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%23%23%23-1"><span class="pl-c">\###</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="39" id="bkmrk--56"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk--57"></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="40" id="bkmrk--58"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%24html_head-%3D-%22%3Cstyle"><span class="pl-smi">$html\_head</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span>&lt;style type='text/css'&gt;</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="41" id="bkmrk--59"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-table-%7Bfont-family%3Av"><span class="pl-s">table {font-family:verdana,arial,sans-serif;font-size:12px;color:#333333;border-width: 1px;border-color: #729ea5;border-collapse: collapse;}</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="42" id="bkmrk--60"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-th-%7Bfont-family%3Averd"><span class="pl-s">th {font-family:verdana,arial,sans-serif;font-size:12px;background-color:#acc8cc;border-width: 1px;padding: 8px;border-style: solid;border-color: #729ea5;text-align:left;}</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="43" id="bkmrk--61"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-tr-%7Bfont-family%3Averd"><span class="pl-s">tr {font-family:verdana,arial,sans-serif;background-color:#d4e3e5;}</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="44" id="bkmrk--62"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-td-%7Bfont-family%3Averd"><span class="pl-s">td {font-family:verdana,arial,sans-serif;font-size:12px;border-width: 1px;padding: 8px;border-style: solid;border-color: #729ea5;}</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="45" id="bkmrk--63"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%3C%2Fstyle%3E%22"><span class="pl-s">&lt;/style&gt;<span class="pl-pds">"</span></span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="46" id="bkmrk--64"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk--65"></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="47" id="bkmrk--66"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-foreach-%28%24dcname-in-"><span class="pl-k">foreach</span> (<span class="pl-smi">$dcname</span> <span class="pl-k">in</span> <span class="pl-smi">$dclist</span>){</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="48" id="bkmrk--67"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%23%23%23test-all-forest-1"><span class="pl-c">\###Test all forest</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="49" id="bkmrk--68"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%23%24source_dc_fqdn-%3D-%28"><span class="pl-c">\#$source\_dc\_fqdn = ($dcname.name).tolower()</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="50" id="bkmrk--69"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%23%23%23-2"><span class="pl-c">\###</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="51" id="bkmrk--70"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk--71"></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="52" id="bkmrk--72"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%23%23%23test-specific-dom"><span class="pl-c">\###Test specific domain</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="53" id="bkmrk--73"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%24source_dc_fqdn-%3D-%28%24"><span class="pl-smi">$source\_dc\_fqdn</span> <span class="pl-k">=</span> (<span class="pl-smi">$dcname</span>).tolower()</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="54" id="bkmrk--74"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%23%23%23-3"><span class="pl-c">\###</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="55" id="bkmrk--75"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk--76"></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="56" id="bkmrk--77"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%24ad_partition_list-%3D"><span class="pl-smi">$ad\_partition\_list</span> <span class="pl-k">=</span> repadmin <span class="pl-k">/</span>showrepl <span class="pl-smi">$source\_dc\_fqdn</span> <span class="pl-k">|</span> <span class="pl-c1">select-string</span> <span class="pl-s"><span class="pl-pds">"</span>dc=<span class="pl-pds">"</span></span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="57" id="bkmrk--78"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-foreach-%28%24ad_partiti"><span class="pl-k">foreach</span> (<span class="pl-smi">$ad\_partition</span> <span class="pl-k">in</span> <span class="pl-smi">$ad\_partition\_list</span>) {</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="58" id="bkmrk--79"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%5Barray%5D%24newarray%3D%24nu">\[<span class="pl-k">Array</span>\]<span class="pl-smi">$NewArray</span><span class="pl-k">=</span><span class="pl-c1">$NULL</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="59" id="bkmrk--80"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%24result-%3D-repadmin-%2F"><span class="pl-smi">$result</span> <span class="pl-k">=</span> repadmin <span class="pl-k">/</span>showrepl <span class="pl-smi">$source\_dc\_fqdn</span> <span class="pl-smi">$ad\_partition</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="60" id="bkmrk--81"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%24result-%3D-%24result-%7C-"><span class="pl-smi">$result</span> <span class="pl-k">=</span> <span class="pl-smi">$result</span> <span class="pl-k">|</span> <span class="pl-k">where</span> { (\[<span class="pl-k">string</span>\]::IsNullOrEmpty((<span class="pl-smi">$result</span>\[<span class="pl-c1">$\_</span>\]))) }</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="61" id="bkmrk--82"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%24index_array_dst-%3D-0"><span class="pl-smi">$index\_array\_dst</span> <span class="pl-k">=</span> <span class="pl-c1">0</span><span class="pl-k">..</span>(<span class="pl-smi">$result.Count</span> <span class="pl-k">-</span> <span class="pl-c1">1</span>) <span class="pl-k">|</span> <span class="pl-k">Where</span> { <span class="pl-smi">$result</span>\[<span class="pl-c1">$\_</span>\] <span class="pl-k">-like</span> <span class="pl-s"><span class="pl-pds">"</span>\*via RPC<span class="pl-pds">"</span></span> }</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="62" id="bkmrk--83"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-foreach-%28%24index-in-%24"><span class="pl-k">foreach</span> (<span class="pl-smi">$index</span> <span class="pl-k">in</span> <span class="pl-smi">$index\_array\_dst</span>){</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="63" id="bkmrk--84"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%24dst_dc-%3D-%28%24result%5B%24"><span class="pl-smi">$dst\_dc</span> <span class="pl-k">=</span> (<span class="pl-smi">$result</span>\[<span class="pl-smi">$index</span>\]).trim()</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="64" id="bkmrk--85"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%24next_index-%3D-%5Barray"><span class="pl-smi">$next\_index</span> <span class="pl-k">=</span> \[<span class="pl-k">array</span>\]::IndexOf(<span class="pl-smi">$index\_array\_dst</span><span class="pl-k">,</span><span class="pl-smi">$index</span>) <span class="pl-k">+</span> <span class="pl-c1">1</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="65" id="bkmrk--86"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%24next_index_msg-%3D-%24i"><span class="pl-smi">$next\_index\_msg</span> <span class="pl-k">=</span> <span class="pl-smi">$index\_array\_dst</span>\[<span class="pl-smi">$next\_index</span>\]</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="66" id="bkmrk--87"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%24msg-%3D-%22%22"><span class="pl-smi">$msg</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span><span class="pl-pds">"</span></span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="67" id="bkmrk--88"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-if-%28%24index--lt-%24inde"><span class="pl-k">if</span> (<span class="pl-smi">$index</span> <span class="pl-k">-lt</span> <span class="pl-smi">$index\_array\_dst</span>\[<span class="pl-c1">-1</span>\]){</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="68" id="bkmrk--89"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%24last_index-%3D-%24index"><span class="pl-smi">$last\_index</span> <span class="pl-k">=</span> <span class="pl-smi">$index\_array\_dst</span>\[<span class="pl-smi">$next\_index</span>\]</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="69" id="bkmrk--90"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%7D-2">}</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="70" id="bkmrk--91"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-else-%7B"><span class="pl-k">else</span> {</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="71" id="bkmrk--92"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%24last_index-%3D-%24resul"><span class="pl-smi">$last\_index</span> <span class="pl-k">=</span> <span class="pl-smi">$result.Count</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="72" id="bkmrk--93"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%7D-3">}</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="73" id="bkmrk--94"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk--95"></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="74" id="bkmrk--96"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-for-%28%24i%3D%24index%2B1%3B%24i-"><span class="pl-k">for</span> (<span class="pl-smi">$i</span><span class="pl-k">=</span><span class="pl-smi">$index</span><span class="pl-k">+</span><span class="pl-c1">1</span>;<span class="pl-smi">$i</span> <span class="pl-k">-lt</span> <span class="pl-smi">$last\_index</span>; <span class="pl-smi">$i</span><span class="pl-k">++</span>){</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="75" id="bkmrk--97"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-if-%28%28%24msg--eq-%22%22%29--a"><span class="pl-k">if</span> ((<span class="pl-smi">$msg</span> <span class="pl-k">-eq</span> <span class="pl-s"><span class="pl-pds">"</span><span class="pl-pds">"</span></span>) <span class="pl-k">-and</span> (<span class="pl-smi">$result</span>\[<span class="pl-smi">$i</span>\])) {</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="76" id="bkmrk--98"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%24msg-%2B%3D-%28%24result%5B%24i%5D"><span class="pl-smi">$msg</span> <span class="pl-k">+=</span> (<span class="pl-smi">$result</span>\[<span class="pl-smi">$i</span>\]).trim()</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="77" id="bkmrk--99"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%7D-4">}</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="78" id="bkmrk--100"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-else-%7B-1"><span class="pl-k">else</span> {</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="79" id="bkmrk--101"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%24msg-%2B%3D-%22-%2F-%22-%2B-%28%24re"><span class="pl-smi">$msg</span> <span class="pl-k">+=</span> <span class="pl-s"><span class="pl-pds">"</span> / <span class="pl-pds">"</span></span> <span class="pl-k">+</span> (<span class="pl-smi">$result</span>\[<span class="pl-smi">$i</span>\]).trim()</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="80" id="bkmrk--102"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%7D-5">}</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="81" id="bkmrk--103"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%7D-6">}</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="82" id="bkmrk--104"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%24properties-%3D-%40%7Bsour"><span class="pl-smi">$Properties</span> <span class="pl-k">=</span> <span class="pl-k">@</span>{<span class="pl-smi">source\_dc</span><span class="pl-k">=</span><span class="pl-smi">$source\_dc\_fqdn</span>;<span class="pl-smi">NC</span><span class="pl-k">=</span><span class="pl-smi">$ad\_partition</span>;<span class="pl-smi">destination\_dc</span><span class="pl-k">=</span><span class="pl-smi">$dst\_dc</span>;<span class="pl-smi">repl\_status</span><span class="pl-k">=</span><span class="pl-smi">$msg</span>}</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="83" id="bkmrk--105"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%24newobject-%3D-new-obj"><span class="pl-smi">$Newobject</span> <span class="pl-k">=</span> <span class="pl-c1">New-Object</span> PSObject <span class="pl-k">-</span>Property <span class="pl-smi">$Properties</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="84" id="bkmrk--106"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%24array-%2B%3D%24newobject"><span class="pl-smi">$array</span> <span class="pl-k">+=</span><span class="pl-smi">$newobject</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="85" id="bkmrk--107"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%7D-7">}</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="86" id="bkmrk--108"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%7D-8">}</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="87" id="bkmrk--109"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%7D-9">}</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="88" id="bkmrk--110"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk--111"></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="89" id="bkmrk--112"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%24status_repl_ko-%3D-%22%3C"><span class="pl-smi">$status\_repl\_ko</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span>&lt;br&gt;&lt;br&gt;&lt;font face='Calibri' color='black'&gt;&lt;i&gt;&lt;b&gt;Active Directory Replication Problem :&lt;/b&gt;&lt;/i&gt;&lt;br&gt;<span class="pl-pds">"</span></span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="90" id="bkmrk--113"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%24status_repl_ok-%3D-%22%3C"><span class="pl-smi">$status\_repl\_ok</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span>&lt;br&gt;&lt;br&gt;&lt;font face='Calibri' color='black'&gt;&lt;i&gt;&lt;b&gt;Active Directory Replication OK :&lt;/b&gt;&lt;/i&gt;&lt;br&gt;<span class="pl-pds">"</span></span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="91" id="bkmrk--114"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%24subject-%3D-%22active-d"><span class="pl-smi">$subject</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span>Active Directory Replication status : <span class="pl-pds">"</span></span><span class="pl-k">+</span><span class="pl-smi">$date</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="92" id="bkmrk--115"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%24message-%3D-%22%3Cbr%3E%3Cbr%3E"><span class="pl-smi">$message</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span>&lt;br&gt;&lt;br&gt;&lt;font face='Calibri' color='black'&gt;&lt;i&gt;The full Active Directory Replication report is available &lt;a href=<span class="pl-pds">"</span></span> <span class="pl-k">+</span> <span class="pl-smi">$report\_path</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">"</span>\\ad\_repl\_status\_<span class="pl-smi">$date</span>.html&gt;here&lt;/a&gt;&lt;/i&gt;&lt;br&gt;<span class="pl-pds">"</span></span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="93" id="bkmrk--116"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%24message-%2B%3D-%24status_"><span class="pl-smi">$message</span> <span class="pl-k">+=</span> <span class="pl-smi">$status\_repl\_ko</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="94" id="bkmrk--117"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk--118"></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="95" id="bkmrk--119"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-if-%28%24array-%7C-where-%7B"><span class="pl-k">if</span> (<span class="pl-smi">$array</span> <span class="pl-k">|</span> <span class="pl-k">where</span> {<span class="pl-c1">$\_<span class="pl-smi">.repl\_status</span></span> <span class="pl-k">-notlike</span> <span class="pl-s"><span class="pl-pds">"</span>\*successful\*<span class="pl-pds">"</span></span>}){</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="96" id="bkmrk--120"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%24message-%2B%3D-%24array-%7C"><span class="pl-smi">$message</span> <span class="pl-k">+=</span> <span class="pl-smi">$array</span> <span class="pl-k">|</span> <span class="pl-k">where</span> {<span class="pl-c1">$\_<span class="pl-smi">.repl\_status</span></span> <span class="pl-k">-notlike</span> <span class="pl-s"><span class="pl-pds">"</span>\*successful\*<span class="pl-pds">"</span></span>} <span class="pl-k">|</span> select source\_dc<span class="pl-k">,</span>nc<span class="pl-k">,</span>destination\_dc<span class="pl-k">,</span>repl\_status <span class="pl-k">|</span><span class="pl-c1">ConvertTo-Html</span> <span class="pl-k">-</span>Head <span class="pl-smi">$html\_head</span> <span class="pl-k">-</span>Property source\_dc<span class="pl-k">,</span>nc<span class="pl-k">,</span>destination\_dc<span class="pl-k">,</span>repl\_status</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="97" id="bkmrk--121"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-send_mail-%24message-%24">send\_mail <span class="pl-smi">$message</span> <span class="pl-smi">$subject</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="98" id="bkmrk--122"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%7D-10">}</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="99" id="bkmrk--123"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-else-%7B-2"><span class="pl-k">else</span> {</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="100" id="bkmrk--124"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%24message-%2B%3D-%22%3Ctable-"><span class="pl-smi">$message</span> <span class="pl-k">+=</span> <span class="pl-s"><span class="pl-pds">"</span>&lt;table style='color:gray;font-family:verdana,arial,sans-serif;font-size:11px;'&gt;No problem detected&lt;/table&gt;<span class="pl-pds">"</span></span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="101" id="bkmrk--125"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%7D-11">}</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="102" id="bkmrk--126"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk--127"></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="103" id="bkmrk--128"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%24message-%2B%3D-%24status_-1"><span class="pl-smi">$message</span> <span class="pl-k">+=</span> <span class="pl-smi">$status\_repl\_ok</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="104" id="bkmrk--129"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%24message-%2B%3D-%24array-%7C-1"><span class="pl-smi">$message</span> <span class="pl-k">+=</span> <span class="pl-smi">$array</span> <span class="pl-k">|</span> <span class="pl-k">where</span> {<span class="pl-c1">$\_<span class="pl-smi">.repl\_status</span></span> <span class="pl-k">-like</span> <span class="pl-s"><span class="pl-pds">"</span>\*successful\*<span class="pl-pds">"</span></span>} <span class="pl-k">|</span> select source\_dc<span class="pl-k">,</span>nc<span class="pl-k">,</span>destination\_dc<span class="pl-k">,</span>repl\_status <span class="pl-k">|</span><span class="pl-c1">ConvertTo-Html</span> <span class="pl-k">-</span>Head <span class="pl-smi">$html\_head</span> <span class="pl-k">-</span>Property source\_dc<span class="pl-k">,</span>nc<span class="pl-k">,</span>destination\_dc<span class="pl-k">,</span>repl\_status</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number js-blob-rnum" data-line-number="105" id="bkmrk--130"></td><td class="blob-code blob-code-inner js-file-line" id="bkmrk-%24message-%7C-out-file-"><span class="pl-smi">$message</span> <span class="pl-k">|</span> <span class="pl-c1">Out-File</span> <span class="pl-s"><span class="pl-pds">"</span><span class="pl-smi">$report\_path</span>\\ad\_repl\_status\_<span class="pl-smi">$date</span>.html<span class="pl-pds">"</span></span></td></tr></tbody></table>

</div></div></div></div></div><div class="gist-meta">[view raw](https://gist.github.com/maxbakhub/1ede98405ccb872f5c7eae69a7652785/raw/c986593a44f7f8206315a7ac82000e8435578dc8/ADHealthCheck.ps1)[ADHealthCheck.ps1 ](https://gist.github.com/maxbakhub/1ede98405ccb872f5c7eae69a7652785#file-adhealthcheck-ps1)hosted with ❤ by [GitHub](https://github.com/)</div></div></div></div>![powershell script: get replication health summary report](https://woshub.com/wp-content/uploads/2021/09/powershell-script-get-replication-health-summary.png.webp)

You can also check the state of ADDS basic services on a domain controller using [the Get-Service cmdlet](https://woshub.com/manage-windows-services-powershell/):

- Active Directory Domain Services (`ntds`)
- Active Directory Web Services (`adws`) – all cmdlets from the [AD PowerShell module](https://woshub.com/powershell-active-directory-module/) connect to this service
- DNS (`dnscache` and `dns`)
- Kerberos Key Distribution Center (`kdc`)
- Windows Time Service (`w32time`)
- NetLogon (`netlogon`)

`Get-Service -name ntds,adws,dns,dnscache,kdc,w32time,netlogon -ComputerName dc01`

![get adds services states on a domain controller](https://woshub.com/wp-content/uploads/2021/09/get-adds-services-states-on-a-domain-controller.png.webp)

So, in this article, we have shown basic tools, commands, and PowerShell scripts you can use to diagnose the health of your Active Directory domain. You can use them in all supported Windows Server versions, including the [domain controllers running in the Server Core mode](https://woshub.com/windows-server-core-install-active-directory-domain-controller/).