[玩转系统] 排除 AD 故障时所需的工具
作者:精品下载站 日期:2024-12-14 08:13:07 浏览:14 分类:玩电脑
排除 AD 故障时所需的工具
您负责 AD 或 Azure AD 等目录服务吗?那么您一定已经花费了相当多的时间来排除故障。幸运的是,有一种方法可以让每个管理员的生活变得更轻松。
目录为组织的身份管理提供了真实来源,无论目录服务是由 Active Directory (AD) 还是 Azure AD (AAD) 提供,并且故障排除或识别问题是负责目录的人员必须执行的一项关键任务。使用正确的工具(或多个工具)可以帮助使此任务易于管理,并且脚本(PowerShell 或其他)已被证明是执行此类任务的有用工具。
在本文中,我们将探讨如何使用 PowerShell 来解决 Active Directory 中的常见问题。值得注意的是,并非解决 AD 问题所需的所有操作都可以直接使用 PowerShell 完成,但是,我们可以使用 PowerShell 在其他进程周围放置“包装器”,并利用 PowerShell 提取数据以成功进行故障排除。
AD 网站和服务链接
使用站点到站点复制链接时常犯的错误是使用手动链接来纠正复制问题,而不是依赖 KCC(缩写!)创建的自动生成的链接。手动链接不会自动更新,也不会很好地适应拓扑更改,因此识别手动创建的链接可能有利于健康的环境。
查找自动生成的链接
通过以下内容,我们可以列出所有 AD 复制链接及其 GUID、发送至和来自服务器以及链接是否为自动生成:
Get-ADReplicationConnection -Filter * |
Select-Object -Property Name, AutoGenerated, ReplicateFromDirectoryServer, ReplicateToDirectoryServer |
ForEach-Object {
$From = $_.ReplicateFromDirectoryServer $To = $_.ReplicateToDirectoryServer
$_.ReplicateFromDirectoryServer = (($From -Split ',')[1] -Split '=')[1]
$_.ReplicateToDirectoryServer = (($To -Split ',')[0] -Split '=')[1]
Return $_
}
样本输出
如果一个或多个链接的“自动生成”值为“False”,则应调查创建此链接的原因。尽管 Microsoft 不支持,但可能有正当理由。
复制
除了站点链接之外,检查跨这些链接的复制可能是 AD 故障排除的关键组成部分。在本节中,我们将探讨一些使用 PowerShell 作为本机 Windows 工具包装器的方法,以便检查环境中域控制器 (DC) 之间的通信。本节使用的工具是dsquery、、repadmin 和dcdiag。借助 PowerShell,我们可以将这些工具的结果导出到输出文件,以供知识丰富的 AD 管理员进行分析。
查询
我们的第一个工具是 dsquery,它用于在 AD 中查询信息,特别是在本例中,我们仅查询 AD 中的域控制器。有关此单行的更多信息可以在 Microsoft Docs 中找到。
'dsquery server -o rdn'
瑞帕明
工具repadmin可用于暴露DC之间(入站和出站)之间可能发生的一些更深层次的复制问题。 Repadmin 可以揭示 DC 不再能够复制的关键问题、识别拓扑问题等。下面是一组很好的核心 cmdlet,可以从 PowerShell 脚本运行。请注意,每一行都将结果导出到要检查的文件中:
$ADCmdletDestination = 'ADReplicationOutput.txt '
检查所有服务器的复制,跨所有站点
C:\Windows\System32\repadmin.exe /syncall /e >> $ADCmdletDestination
检查命名上下文复制
C:\Windows\System32\repadmin.exe /syncall /A >> $ADCmdletDestination
使用 DN 而非 GUID DNS 进行同步
C:\Windows\System32\repadmin.exe /syncall /d >> $ADCmdletDestination
简明复制摘要
C:\Windows\System32\repadmin.exe /replsummary * >> $ADCmdletDestination
强制 KCC 重新计算拓扑
C:\Windows\System32\repadmin.exe /kcc * >> $ADCmdletDestination
显示最后一次 AD 备份
C:\Windows\System32\repadmin.exe /showbackup * >> $ADCmdletDestination
检查上次入站复制的复制状态
C:\Windows\System32\repadmin.exe /showrepl * >> $ADCmdletDestination
显示任何入站排队请求
C:\Windows\System32\repadmin.exe /queue * >> $ADCmdletDestination
检查 AD 桥头服务器是否存在问题
C:\Windows\System32\repadmin.exe /bridgeheads * /verbose >> $ADCmdletDestination
返回站点间拓扑生成器 (ISTG) 服务器
C:\Windows\System32\repadmin.exe /istg * /verbose >> $ADCmdletDestination
"DS Bind 缓存中的条目列表。"
C:\Windows\System32\repadmin.exe /showoutcalls * >> $ADCmdletDestination
列出 KCC 故障
C:\Windows\System32\repadmin.exe /failcache * >> $ADCmdletDestination
列出已知的 AD 信任
C:\Windows\System32\repadmin.exe /showtrust * >> $ADCmdletDestination
显示 DC 的复制功能
C:\Windows\System32\repadmin.exe /bind * >> $ADCmdletDestination
一般来说,如果出现问题,这些命令应该显示不正确的内容。例如,如果 DC 的时间关闭,复制摘要将显示同步错误。我们甚至可能会看到一个已被逻辑删除的 DC,因为它尚未在配置的逻辑删除时间限制内进行复制。还将发现事件日志错误消息并帮助进行根本原因分析。
来自 /replsummary 开关的示例
诊断仪
使用 dcdiag 工具,我们可以运行一系列域控制器测试,这将有助于确定每个 DC 的相对帮助。下面的一行将按照此处所述运行所有 dcdiag 测试 [/c],对所有 DC 执行测试,无论其位于哪个站点 [/e] 并使用详细输出 [/v]。请注意,该命令的输出也会导出到文件中以供分析。请记住,在较大的环境中,这可能需要时间来运行并分析导出的结果。
dcdiag /c /e /v >> $ADCmdletDestination
屏幕输出示例
与此同时,PowerShell 中有一些工具可以直接替代这些工具,但是,在撰写本文时,这些 cmdlet 提供了更深入的 AD 复制视图,以便进行故障排除。
DNS 健康状况
DNS 对于 Active Directory 的健康状况非常重要,管理员可以使用一些工具测试其 DNS 服务器。使用本机 PowerShell,我们有一个“Test-DNSServer”cmdlet,它的功能相当有限,但可以提供对特定 DNS 服务器的快速测试。
示例“Test-DnsServer” cmdlet
然而,为了更深入地研究,我们可以使用 PowerShell 执行 Windows 工具,以更深入地研究从 DNSLint 到 dcdiag,因为即使使用 PowerShell,这些工具仍然有效。
$DC = Get-ADDomainController $Env:ComputerName
$IPs = @()
$IPs = $DC.IPv4Address
$Server = $IPs[0]
$DNSLint = .\DNSLint.exe /ad $Server /s $Server /r dnslint /no_open /y
如需更多信息,我们可以使用 dcdiag 来测试 DNS 服务器功能。
DNSLint 错误报告示例
Function GetInfo {
DCDiag /s:$DC /Test:dns /v /q /i /x:$DNSXMLDestination
$Data = @($DC,$Domain,$Site)
$Xml = $DNSXMLDestination
[Xml]$DCDiag = Get-Content $xml
$Summary = $dcdiag.DCDIAGTestResults.DNSEnterpriseTestResults.Summary.Domain.DC.test
Foreach ($line2 in $summary) {
$Data += @($Line2.Status)
}
$Rowline = $Data -join ","
Add-Content $DNSDestination $Rowline
$Rowline = $Null
}
# Main Script Body
$DNSDestination = 'DNSTestResults.csv'
$DNSXMLDestination = 'DNSTestResults.xml'
$Rows = "DC," + "Domain," + "Site," + "Auth," + "Basc," + "Forw," + "Del," + "Dyn," + "Rreg," + "Ext"
Add-Content -Path $DNSDestination $Rows
$Domains = (Get-ADForest).Domains
Foreach ($Domain in $Domains) {
$DomainControllers = Get-ADDomainController -Server $Domain -Filter *
Foreach ($Line in $DomainControllers) {
$Dc = $Line.HostName
$Domain = $Line.Domain
$Site = $Line.Site
GetInfo
}
}
使用这两个脚本,我们现在可以了解 DNS 的情况,并通过查看日志来验证 DNS 基础设施。
DCDiag 结果文件示例
网络配置
启用 DHCP 或网关过多的域控制器可能会导致各种复制、用户身份验证以及应用程序问题。充分掌握每台服务器的配置方式可以帮助管理员查明其域控制器的问题。以下脚本将查看服务器上的每个网络接口卡 (NIC) 并报告属性以进行验证:
# Variables
$Rows = 'Computer,' + 'IPAddress,' + 'Subnet Mask,' + 'Default Gateway,' + 'DHCP,' + 'DNS Servers'
$NICDestination = 'DC-NetworkConfig.csv'
Add-Content -Path $NICDestination $Rows
$Domains = (Get-ADForest).Domains
Foreach ($Domain in $Domains) {
$Rows = "Domain - $Domain"
Add-Content -Path $NICDestination $Rows
$DomainControllers = Get-ADDomainController -Server $Domain -Filter *
# Foreach ($Computer in $ComputerNames) {
Foreach ($DomainController in $DomainControllers) {
$Computer = $DomainController.HostName
$Server = $DomainController.Name
$Networks = Get-WmiObject Win32_NetworkAdapterConfiguration -ComputerName $Computer -EA Stop |
Where-Object { $_.IPEnabled }
Foreach ($Network in $Networks) {
$IPAddress = $Network.IpAddress[0]
$SubnetMask = $Network.IPSubnet[0]
$DefaultGateway = $Network.DefaultIPGateway
$DNSServers = $Network.DNSServerSearchOrder
$IsDHCPEnabled = $false
If ($Network.DHCPEnabled) {
$IsDHCPEnabled = $true
}
$MACAddress = $Network.MACAddress
$OutputObj = New-Object -Type PSObject
$OutputObj | Add-Member -MemberType NoteProperty -Name ComputerName -Value $Server.ToUpper()
$OutputObj | Add-Member -MemberType NoteProperty -Name IPAddress -Value $IPAddress
$OutputObj | Add-Member -MemberType NoteProperty -Name SubnetMask -Value $SubnetMask
$OutputObj | Add-Member -MemberType NoteProperty -Name Gateway -Value ($DefaultGateway -join ',')
$OutputObj | Add-Member -MemberType NoteProperty -Name IsDHCPEnabled -Value $IsDHCPEnabled
$OutputObj | Add-Member -MemberType NoteProperty -Name DNSServers -Value ($DNSServers -join ',')
$OutputObj | Format-Table -AutoSize
$Row = "$Server," + "$IPAddress," + "$SubnetMask," + "$DefaultGateway," + "$ISDHCPEnabled," + "$DNSServers"
Add-Content -Path $NICDestination $Row
}
}
}
示例输出(请注意,所有 DC 都指向核心 DC 及其本身的 DNS)
此配置可能是所需的,也可能是错误的配置,具体取决于环境和/或 IT 的目标。
严格复制
为了防止 Active Directory 损坏,Windows 2003 中引入的一项功能仍然是必要且值得保持启用的设置。当存在复制问题,并且 AD 中可能存在旧对象时,最好验证哪些 DC 已配置此配置,哪些 DC 未配置。作为最佳实践,应该启用此功能。请参考这篇文章以供参考。
使用下面的代码,我们可以检查域中所有 DC 的“严格复制一致性”设置:
$DCs = (Get-ADDomainController -Filter *).Name | Sort-Object
Foreach ($DC in $DCs) {
$Script = {
$Name = 'Strict Replication Consistency'
$RegistryPath = 'HKLM:\System\CurrentControlSet\Services\NTDS\Parameters\'
$Val = (Get-ItemProperty -Path $RegistryPath -Name $Name).$Name Return $Val
}
$StrictCheck = Invoke-Command -ComputerName $DC -ScriptBlock $Script
If ($StrictCheck -eq '1') {
Write-Host " * Strict Replication Consistency is enabled on the $DC Domain Controller." -ForegroundColor Cyan
}
Else {
Write-Host " * Strict Replication Consistency is disabled on the $DC Domain Controller." -ForegroundColor Yellow
}
}
此 PowerShell 代码块的实际结果
如果您需要检查多个林/域,则需要进行一些代码调整。
最佳实践分析器
最后,Windows 服务器为服务器上安装的每个角色包含一个内置的最佳实践分析器,以下是两个示例:
Active Directory 和 DNS BPA GUI
这些也可以通过 PowerShell 使用 Invoke-BPAModule 和 Get-BPAResult 进行访问。 BPA 在“模型”系统上工作,该“模型”系统对应于服务器上安装的 Windows 角色。例如,DNS 角色具有 DNSServer 模型名称,AD-Domain-Services 的模型是 DirectoryServices。我们可以从 Get-BPAModel cmdlet 获取这些模型名称,以帮助拼写这些名称。在下面的代码中,我们查询两个角色(DNS 和 DC),如果安装了它们,则每个角色的模型名称将添加到变量中,以便由前面提到的两个 cmdlet 处理。现在,这项工作的输出结果是为每个运行的 BPA 模型生成一个 CSV 文件。
Sample Code:
# Variables
$FilePath = (Get-Item -Path ".\" -Verbose).FullName
$Server = $Env:ComputerName
$BPA = @()
If ((Get-WindowsFeature AD-Domain-Services).Installed) {$BPA += "Microsoft/Windows/DirectoryServices"}
If ((Get-WindowsFeature DNS).Installed) {$BPA += "Microsoft/Windows/DNSServer"}
Foreach ($Model in $bpa) {
$Name = $Model.Replace("Microsoft/Windows/","")
$CSV = "BPA-Results-$Name-$Server.csv"
Invoke-BPAModel $Model -ErrorAction SilentlyContinue
Get-BPAResult -BestPracticesModelId $Model -ErrorAction SilentlyContinue |
Where-Object {$_.Problem -ne $Null} |
Select-Object ResultNumber,Severity,Category,Title,Problem,Impact,Resolution |
Export-Csv $CSV -NoTypeInformation -Encoding UTF8
}
结论
虽然本文没有为每种场景提供 PowerShell,但它确实涵盖了在故障排除场景中如何使用 PowerShell 的基础知识,甚至与非 PowerShell 工具结合使用。 Active Directory 本质上可能非常复杂,并且由于这种复杂性,经常使用各种工具来解决问题。有时,应用程序问题、用户沮丧或监控软件通知会提供线索。最后,由管理员来选择最适合工作的工具,有时会放弃特定的故障排除方向,回溯并使用新的工具、脚本等重新开始来解决问题。 PowerShell 可以提供大量信息,并依赖传统工具来应对这些场景。狩猎快乐!
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag