DCDiag:如何使用 Powershell 检查域控制器健康状态 教程 PowerShell DCDiag: 如何使用Powershell检查域控制器健康状态。 DCDiag 是一个强大的命令行工具,用于诊断Microsoft Windows Active Directory环境中的 域控制器 的问题。我们使用它来检查域控制器的 健康 状况,识别错误或不一致之处,并解决复制问题。DCDiag 还可帮助管理员检测和解决与 DNS 配置、SYSVOL 复制以及其他Active Directory正常运行所需的关键服务的问题。 我们研究了 DCDiag,这是一个强大的Microsoft Windows工具。我们使用它来测试DNS服务,评估域控制器的健康状况,甚至自动纠正错误。虽然相对简单,但该工具足以维护我们所有域控制器的健康。我们要开始阅读文章《DCDiag: 如何使用Powershell检查域控制器健康状态》吗?也阅读 如何将域控制器添加到现有域 我们首先从文章DCDiag开始:如何使用Powershell检查域控制器健康状况 同时阅读如何将域控制器添加到现有域 DCDiag:如何使用Powershell检查域控制器健康状况 安装DCDiag工具 如果我们运行的是Windows Server,我们应该安装了DCDiag。微软将DCDiag内置于现代Windows Server版本中,从2012R2及以后的版本开始。 同时阅读查看Active Directory健康检查工具 DCDiag工具的目的 DCDiag 的目的在于诊断和解决 Windows Server 环境中域控制器的问题。它是一个命令行工具,可以对域控制器进行广泛的健康检查,包括对 DNS、复制、LDAP 的测试,以及对单个或多个 DC 在 AD 森林或企业内同时进行的安全分析。让我们来看看 DCDiag 对域控制器进行的一些不同测试: 连接性测试 – DCDiag 检查域控制器是否连接到网络,并且能够与其他域控制器通信。 DNS测试 – 检查域控制器是否正确解析和注册DNS。 复制测试– 测试域控制器是否准确地与其他域控制器复制。 信任测试 – DCDiag检查域控制器是否信任其他域以及其他域是否信任该域控制器。 LDAP测试– 检查LDAP查询在域控制器上是否正常工作。 Kerberos测试 – DCDiag检查Kerberos认证在域控制器上是否正确工作。 SYSVOL 测试 – DCDiag 检查域控制器上的 SYSVOL 复制是否正常工作。 全局编录测试 – DCDiag 检查 DC 是否作为 全局编录 服务器运行,并且全局编录查询是否正常工作。 另请阅读 如何使用 PowerShell 将计算机加入域 DCDiag 工具概览 好了,关于文章DCDiag:如何使用Powershell检查域控制器健康状况,这是一个简单的命令行工具。我们可以在CMD提示符或PowerShell窗口中运行DCDiag。请记住使用管理员权限。 DCDiag的基本语法如下: dcdiag.exe /s:[:] [/u:\ /p:*||””] 其中: /s – 域控制器 /u:\ – 用户名 \p:* – 密码 这个基本的命令行返回测试结果,显示域控制器的主要(连接性)测试和任何指定的测试。要学习如何使用DCDiag命令以及所有它的开关,让我们从帮助命令开始: dcdiag /? 另请阅读 如何设置和管理活动目录密码策略 DCDiag开关参数 要使用以下任何开关,请将其附加在DCDiag命令之后。常用命令开关的摘要: /s <服务器名称> – 指定要测试的服务器的名称。如果没有指定服务器名称,DCDiag将测试本地计算机。 /v – 提供详细的输出和有关执行的测试的额外信息。 /test:<测试名称> – 指定要运行的测试的名称。我们可以通过指定多个/test开关来运行多个测试。 /e – 对指定的域控制器执行全面的测试集。 /fix – 尝试修复在测试过程中发现的任何问题。 /f:<日志文件名> – 指定要创建的日志文件的名称。 /c – 指定DCDiag应该只执行广告域控制器服务的测试。 /skip:<TestName> – 跳过指定的测试。 /l:<LogFileName> – 指定要追加的日志文件名,而不是覆盖。 /q – 指定静默模式,该模式会抑制信息性消息的显示。 /test:DNS – 在指定的域控制器上运行DNS测试。 /test:KCC – 在指定的域控制器上运行KCC测试。 /test:Replications – 在指定的dc上运行复制测试。 /test:Advertising – 在指定的dc上运行广告测试。 /test:Services – 在指定的dc上运行服务测试。 上面列出了一些最常用的DCDiag命令行开关,但实际上还有很多其他选项可用。我们可以通过运行帮助命令来查看所有开关及其定义的完整列表。 尝试我们的Active Directory健康DC报告工具 试用我们,免费访问所有功能。- 提供200多个AD报告模板。轻松自定义您自己的AD报告。 Try InfraSOS FREE 另请阅读Get-MgUserMemberOf – 列出Azure AD用户PowerShell的组成员资格 运行DCDiag和使用案例 要运行DCDiag,只需输入不带任何开关的DCDiag命令,即可在我们的本地DC(或参数)上进行基本的DCDiag测试。 dcdiag.exe 由于DCDiag会自动识别当前(本地)DC,因此不需要域控制器或管理员凭据。在下面的部分中,我们将讨论使用DCDiag的开关参数的多个使用案例。 远程DC健康检查 我们必须在DC的名称及其凭据(用户名和密码)末尾添加/s:开关,以对远程DC进行诊断。例如: dcdiag.exe /s:dc01 /u:dc01\Administrator /p:password 本地执行的DCPromo和注册到DNS的操作,不是针对域控制器的,将不会受到/s开关的影响。 请注意,当我们输入/u(用户名)信息时,我们必须指定具有域管理员权限的账户名称,并使用正确的格式:域/用户名。因此,例如,我们将用户名(Administrator)与域名(dc01)连接起来:/u:dc01\Administrator。 另请阅读如何检查Active Directory复制状态健康 检查所有DC的健康状况 我们将每个可能包含一组DC的AD站点相互连接起来。如果我们将AD划分为站点,那么/a开关是有益的。它允许我们同时为所有站点DC运行DCDiag实用程序: dcdiag.exe /s:dc01 /a 另请阅读在Windows Server上安装和配置DNS服务器 使用DCDiag测试DNS 无论我们测试什么,DCDiag工具总是默认在主要连接性测试期间检查每个域控制器的DNS注册。此外,我们可能会进行特定的DNS测试,如转发器、注册记录和其他,这些都有助于调查DNS问题。要测试DNS,请使用以下命令: dcdiag.exe /s:dc01 /test:dns 除了外部名称解析之外,以下基本测试默认运行。所有DNS结果都显示DNSBasic测试。如果没有值,/test:dns开关会自动默认为 /DNSall。以下是我们在使用DCDiag工具时调用的一些特定于DNS的测试: /DNS基础 – 检查域控制器的DNS服务器是否配置正确并能解析名称。 /DNS授权– 测试DNS授权是否为域控制器正确配置。 /DNS转发器 – 检查域控制器的DNS转发器是否配置正确。 /DNS动态更新 – 检查域控制器是否执行DNS动态更新。 /DNS记录注册 – 测试域控制器的DNS注册是否最新且准确。 这些测试确保域控制器的DNS配置正确且正常运行。如果DCDiag在这些测试中发现任何问题,DCDiag会及时解决这些问题,以避免活动目录和其他网络服务可能出现的问题。DNS测试应该像这样: 另请阅读活动目录安全组最佳实践 自定义DCDiag结果 DCDiag允许我们通过显示更少或更多的信息来定制结果。还可以导出结果以供以后分析。以下是一些关于我们如何定制DCDiag报告的示例。 在静音模式下运行DCDiag 静音/q开关非常方便,通过仅显示错误消息列表来减少输出大小。以下是DCDiag在静音模式下的示例: dcdiag.exe /s:dc01 /q 使用/q的输出仅过滤到错误,看起来像这样: 另请阅读使用PowerShell创建活动目录Exchange报告。 使用详细输出运行DCDiag 通过添加/v详细标志,以详细输出方式运行DCDiag。它为我们提供了更多关于日常任务的信息,如错误、警告、信息性消息等。/v开关是安静/q开关的反面。 如前所述,DCDiag(不带/v)提供了足够的细节来识别和解决我们域控制器上的任何问题,这在大多数情况下可能已经足够。以下是带有详细开关的代码片段示例: dcdiag.exe /s:dc01 /v 带有/v开关的输出应该看起来像这样: 我们只建议在标准摘要表中看到警告或错误,并希望更详细地调查问题时使用详细输出。 另请阅读部署Azure AD监控解决方案 导出DCDiag结果 DCDiag实用工具允许我们导出健康检查结果。例如,我们可以通过将/f开关附加到DCDiag命令来将所有测试结果保存到文本文件中。例如: dcdiag.exe /s:dc01 f:c:\dcdiag_dc01_test01.txt 请注意,我们自定义了日志文件的名称,并将其保存在任何特定的文件夹中。我们使用记事本或任何支持.txt文件的程序打开结果。 我们还导出结果到XLSX或XML。但是,此功能仅适用于/test:dns开关: dcdiag.exe /test:dns /x or, /test:dns/x: DCDiag只是一个诊断工具。因此,它执行不同的测试,并仅提供其发现的结果。然而,/fix开关是一个很棒的开关,它试图安全地修复所述问题。 dcdiag.exe /s:dc01 /fix 在使用/fix开关时,我们不需要提供更多的参数或特性。对于MachineAccount测试,只有/f开关是有效的。它修复了DC的MachineAccount对象的服务主体名称(SPNs)。 注意:尽管DCDiag设计了(修复)开关以进行安全的自动修复,但它仍然会改变域控制器。因此,在使用/f开关之前,请仔细检查测试结果,并始终为DC创建一个备份。 另请阅读Connect-AzureAD – 如何使用Powershell连接到Azure AD 使用PowerShell的DCDiag 在Windows PowerShell 中没有 DCDiag 的对应项。然而,我们可以通过使用Invoke-Expression 或 Invoke-Command cmdlet 运行带有适当参数的 dcdiag.exe 命令来在 PowerShell 中使用 DCDiag。以下是如何在 PowerShell 中使用 DCDiag 运行 DNS 测试的示例: Invoke-Expression "dcdiag.exe /test:DNS /v" 在这个示例中,我们使用 Invoke-Expression cmdlet 运行带有 /test:DNS 参数的 dcdiag.exe 命令来运行 DNS 测试,并使用 /v 参数提供详细输出。当然,我们可以用任何其他 DCDiag 测试替换 /test:DNS。或者,我们可以使用 Invoke-Command cmdlet 在远程计算机上运行 DCDiag。 以下是另一个示例: Invoke-Command -ComputerName "ServerName" -ScriptBlock { dcdiag.exe /test:DNS /v } 在前面的示例中,我们使用-ScriptBlock参数与Invoke-Command一起,指定我们想要在远程计算机上运行的代码。-ScriptBlock参数接受一个脚本块,实质上是用大括号{} 括起来的一段代码。 当我们使用Invoke-Command与-ScriptBlock参数一起使用时,我们在由-ComputerName参数指定的远程计算机上执行脚本块,并将脚本块的输出返回到本地计算机。使用-ScriptBlock参数与Invoke-Command是在远程计算机上执行命令或脚本的强大方式。它有助于在网络环境中管理大量的计算机,就像我们使用DCDiag工具一样。 感谢您阅读DCDiag:如何使用Powershell检查域控制器健康状况。我们将结束本文。 还阅读域控制器安全最佳实践-加固(清单) 总的来说,DCDiag 对于管理 Active Directory 环境的管理员来说是一个必不可少的工具。提供全面的健康检查套件,用于检测 域 控制器有助于管理员轻松诊断和解决问题。DCDiag 能够执行与 DNS、复制、LDAP、安全等相关的详细测试,使其成为确保域控制器和 Active Directory 环境 健康和稳定的宝贵工具。 将 DCDiag 纳入定期维护和 监控 例行程序中,管理员有助于防止更严重的问题发生,并确保其 Active Directory 环境保持安全和可靠。 Source: https://infrasos.com/dcdiag-how-to-check-domain-controller-health-using-powershell/