[玩转系统] “此工作站与主域之间的信任关系失败”[已解决]
作者:精品下载站 日期:2024-12-14 13:15:17 浏览:14 分类:玩电脑
“此工作站与主域之间的信任关系失败”[已解决]
一旦困扰 Windows 系统管理员的最常见问题得到信任,Active Directory 计算机似乎就会脱离域。臭名昭著的“该工作站与主域之间的信任关系失败”错误非常常见。
在本指南中,您将了解我在管理 Active Directory 的 20 多年中遇到的每一个技巧,以及如何使用 PowerShell 将其自动化。
“此工作站与主域之间的信任关系失败”错误消息
当 AD 域不再信任计算机时,很可能是因为本地计算机的密码与 Active Directory 中存储的密码不匹配。
这两个密码必须同步,AD 才能信任计算机。如果它们不同步,您将收到臭名昭著的错误消息“此工作站与主域之间的信任关系失败”。
不幸的是,我和其他系统管理员发现从来没有一个解决方案能够 100% 有效。这就是我编写本指南的原因。
本指南旨在成为针对每种单一方法的单一存储库,一劳永逸地解决此问题,并使用 PowerShell 自动化该过程。
Active Directory 计算机帐户密码
将新计算机添加到 Active Directory 时,会创建一个带有密码的计算机帐户。默认情况下,该密码的有效期为 30 天。 30 天后,它会自动更改。如果它更改而客户端密码没有更改,您将收到“此工作站与主域之间的信任关系失败”错误消息。
查看现有策略
您可以通过打开组策略管理控制台 (GPMC) 查看域范围的策略。在 GPMC 内,单击默认域策略,然后导航至计算机配置 -> Windows 设置 -> 安全设置 > 本地策略 > 安全选项。
进入安全选项后,查找名为域成员:机器帐户密码最长期限的策略。
在加入 AD 的计算机上,打开 regedit 并导航到 HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters 注册表项,然后找到 MaximumPasswordAge 值,如下所示。
当您在其中时,您可以通过将 DisablePasswordChange 值设置为 1 来完全禁止本地计算机更改密码。
当计算机帐户发生变化时,本地计算机和AD计算机帐户都应一起更改密码。 AD 知道当前的和前一个,以防它们在短时间内不同步。
计算机帐户密码更改过程
当一切正常工作时,使用 Netlogon Windows 服务,计算机会自动启动密码更改。这种情况会在计算机重新启动期间或计算机对象需要向 AD 进行身份验证时发生。
使用 Netlogon Windows 服务,本地计算机启动密码更改序列。计算机首先在域控制器上启动密码更改。如果成功,它会尝试更改本地密码以匹配 HKLM\SECURITY\Policy\Secrets.ACC 注册表项。
通常,即使计算机因本地计算机启动密码更改而关闭或离线超过 30 天,此过程也能正常工作。
但是,在以下情况下会出现问题:
- 计算机更改AD计算机帐户但无法更改本地密码
- 计算机在不运行 Sysprep 的情况下重新映像
- 操作系统已重新安装,并尝试使用旧的、已启用的 AD 计算机帐户进行身份验证
- …和更多?
如果发生上述任何一种情况,您将看到“此工作站与主域之间的信任关系失败”错误消息。
验证问题
一旦您知道问题存在,您如何复制它,或者至少有一种方法来确定哪些计算机存在问题?您可以尝试以交互方式登录每台计算机,但这不可扩展,而且我不想从办公桌上站起来!
让我们构建一个可以在本地和远程运行的脚本,以确定域中的哪些计算机存在此问题,从而彻底消除“此工作站与主域之间的信任关系已失败”错误消息。
首先,由于您假设域身份验证不起作用,因此您需要知道管理员组中的本地用户帐户。我希望您知道您的本地管理员密码!
nltest(命令行工具)
nltest 是一个老式的命令行工具,用于测试计算机的信任关系。该工具在安装 RSAT 时安装,或者可以直接在域控制器上使用。
您可以在登录计算机时通过运行以下命令来验证计算机上的信任关系:
> nltest /sc_verify:<your domain FQDN>
警告:不建议使用此方法,因为 nltest 只能在启动它的用户上下文中工作。如果计算机的信任被破坏并且您以本地用户身份登录,它将尝试使用本地用户的凭据连接到域。这会导致访问被拒绝错误。
netdom(命令行工具)
netdom 是另一个可用于验证信任关系的命令行工具。当您安装 RSAT 时也会安装此工具,或者可以直接在域控制器上使用此工具。
您可以使用 netdom verify
来验证信任,方法是提供:
- 要验证的计算机名称
- 域的 FQDN
- 用于验证请求的用户名
- 用户帐户的密码
下面是一个例子:
> netdom verify MYCOMPUTER /Domain:domain.local /UserO:abertram /PasswordO:*
通过向 PasswordO
参数提供 *
值,netdom 将提示输入密码。
测试计算机安全通道 (PowerShell)
解决“此工作站与主域之间的信任关系失败”问题的最佳方法之一是使用 Test-ComputerSecureChannel
cmdlet。此 PowerShell cmdlet 随 Windows 10 一起提供,并且更易于使用。
Test-ComputerSecureChannel
cmdlet 在 Windows 10 计算机上本地运行。以交互方式登录计算机后,打开 PowerShell 控制台并运行 Test-ComputerSecureChannel
(不带任何参数)。它将返回 True 或 False,具体取决于信任是否有效。
PS51> Test-ComputerSecureChannel
True
您还可以使用 Server
参数指定特定的域控制器来确认密码同步。
PS51> Test-ComputerSecureChannel -Server 'DC.domain.local'
False
这个 cmdlet 使用起来很简单,并且有一个Repair
选项,但我们将为修复部分保存一个演示。
如果您知道要检查的计算机的本地管理员密码并且在这些计算机上启用了 PowerShell 远程处理,则还可以使用 Invoke-Command
cmdlet。通过使用 Invoke-Command
cmdlet,您可以同时在一台或多台计算机上远程运行 Test-ComputerSecureChannel
。
PS51> Invoke-Command -ComputerName PC1, PC2, PC3 -ScriptBlock { Test-ComputerSecureChannel }
批量检查信任关系
现在您已经知道如何远程检查信任关系,这里有一个代码片段,您可以使用它来检查所有您的 AD 计算机!在此脚本中,我首先进行测试以确保计算机在线。如果没有,它将返回离线。如果是这样,它将在每台计算机上运行 Test-ComputerSecureChannel
并返回 True 或 False。
$localCredential = Get-Credential
@(Get-AdComputer -Filter *).foreach({
$output = @{ ComputerName = $_.Name }
if (-not (Test-Connection -ComputerName $_.Name -Quiet -Count 1)) { $output.Status = 'Offline'
} else {
$trustStatus = Invoke-Command -ComputerName $_.Name -ScriptBlock { Test-ComputerSecureChannel } -Credential $localCredential
$output.Status = $trustStatus
}
[pscustomobject]$output
})
了解和理解问题是第一步,但如何解决它呢?您现在知道您需要获取存储在本地计算机上的计算机帐户与存储在 AD 中的计算机帐户相同。
对于“该工作站与主域之间的信任关系失败”问题,有许多不同的“解决方案”。这些解决方案可以通过 GUI、PowerShell 或老式命令行工具来执行。
- 重置AD中的计算机帐户密码
- 重置本地计算机帐户密码
- 取消加入并重新加入 Windows 计算机
- 完全删除计算机帐户并重新加入 Windows 计算机
有很多选择!在本指南中,我们将重点关注使用 PowerShell 和命令行工具解决此问题(为了完整性)。如果您还没有使用 PowerShell,那么您应该使用!
解决问题:重置计算机密码
netdom(命令行工具)
使用老式的 netdom 命令行工具可以修复信任并消除“此工作站与主域之间的信任关系失败”错误消息。如果您以管理用户身份本地登录计算机,则可以运行 netdom resetpwd 来启动密码重置序列,如下所示。
在这个例子中:
- DC 是域控制器的名称
- abertram 是有权重置计算机帐户的 Active Directory 用户帐户的名称
- * 是用户帐户密码的占位符,将提示输入密码。
> netdom resetpwd /s:DC /ud:abertram /pd:*
重置计算机密码 (PowerShell)
修复信任关系的最佳方法之一是使用 Reset-ComputerMachinePassword
cmdlet。此 cmdlet 在本地计算机上运行,并将启动密码重置序列。它的语法再简单不过了。
PS51> Reset-ComputerMachinePassword
如果您想指定要重置的特定 DC,可以使用 Server
参数和选项凭据(默认为本地用户)指定它。
下面的示例将提示输入 AD 用户名和密码,并尝试重置本地计算机和 DC 域控制器上的密码。
PS51> Reset-ComputerMachinePassword -Server DC -Credential (Get-Credential)
如果计算机上有 PowerShell 远程处理功能,也可以使用 Invoke-Command
远程运行此操作。下面,我将获取计算机上本地管理员帐户的用户名和密码。我还获得了有权重置此计算机的 AD 帐户密码的凭据。然后,我使用 $using
构造将 $domainCredential
传递到远程会话中。
$localAdminCredential = Get-Credential
$domainCredential = Get-Credential
PS51> Invoke-Command -Computername MYCOMPUTER -Credential $localAdminCredential -ScriptBlock { Reset-ComputerMachinePassword -Server DC -Credential $using:domainCredential }
请注意,即使计算机帐户已从 Active Directory 中删除,此操作也有效。创建一个具有相同名称的计算机帐户,Reset-ComputerMachinePassword
将确保密码同步。
批量重置本地计算机帐户密码
想要同时处理多台计算机上的“此工作站与主域之间的信任关系失败”错误吗?没问题。使用方便的 foreach 循环,我们也可以批量运行 Reset-ComputerMachinePassword
。
$localAdminCredential = Get-Credential
$domainCredential = Get-Credential
@(Get-AdComputer -Filter *).foreach({
$output = @{ ComputerName = $_.Name }
if (-not (Test-Connection -ComputerName $_.Name -Quiet -Count 1)) { $output.Status = 'Offline'
} else {
$pwChangeOutput = Invoke-Command -Computername $_.Name -Credential $localAdminCredential -ScriptBlock { Reset-ComputerMachinePassword -Server DC -Credential $using:domainCredential }
$output.PasswordChangeOutput = $pwChangeOutput
}
[pscustomobject]$output
})
测试-ComputerSecureChannel-修复 (PowerShell)
启动密码更改过程的另一种方法是运行Test-ComputerSecureChannel
,但这次使用Repair
选项。据我所知,此过程与使用 Reset-ComputerMachinePassword
相同。在计算机控制台上使用 Repair
参数和 Credential
参数。
PS51> Test-ComputerSecureChannel -Repair -Credential (Get-Credential)
请务必在此处使用 Credential
参数。如果不这样做,与 nltest 实用程序类似,它将尝试使用本地帐户,但无法工作。
批量修复信任关系
将此命令放入我们一直在使用的方便的 foreach 循环中,Bob 就是你的叔叔!
$localAdminCredential = Get-Credential
$domainCredential = Get-Credential
@(Get-AdComputer -Filter *).foreach({
$output = @{ ComputerName = $_.Name }
if (-not (Test-Connection -ComputerName $_.Name -Quiet -Count 1)) { $output.Status = 'Offline'
} else {
$repairOutput = Invoke-Command -Computername $_.Name -Credential $localAdminCredential -ScriptBlock { Test-ComputerSecureChannel -Repair -Credential $using:domainCredential }
$output.RepairOutput = $repairOutput
}
[pscustomobject]$output
})
解决问题:重新加入域
如果重置计算机帐户密码对您不起作用,那么总是有核选项。您可以将计算机重新加入 Active Directory 域。尽管并非一直有必要,但有时我不得不使用这种方法。
请注意,我听到一些报告称分离是不必要的。您也许可以通过强制新加入来逃脱。 YMMV。
您可以:
- 通过本地管理帐户登录计算机
- 转到系统属性
- 点击更改
- 将其设置为工作组
- 重启
- 将其设置回域
请注意我如何提到可以。不要这样做。当你可以使用 PowerShell 自动化它时,这是浪费你的时间。
我发现您可以通过两种方法使用 PowerShell 退出域和使用 PowerShell 加入域。
使用CIM
您可以使用 Win32_ComputerSystem CIM 类通过 PowerShell 加入域(或取消加入)。此类有两个方法,允许您将计算机取消加入和加入名为 UnJoinDomainOrWorkgroup()
和 JoinDomainOrWorkGroup
的域。
由于这是 CIM,因此您可以像在本地一样轻松地远程运行它。因为我假设您更喜欢在舒适的办公桌上远程运行它,所以这里有一个代码片段可以做到这一点。
“此工作站与主域之间的信任关系失败”错误消失了!
$computername = 'PITA'
$instance = Get-CimInstance -ComputerName $computername -ClassName 'Win32_ComputerSystem'
$invCimParams = @{
MethodName = 'UnjoinDomainOrWorkGroup'
Arguments = @{ FUnjoinOptions=0;Username="Administrator";Password="mypassword" }
}
$instance | Invoke-CimMethod @invCimParams
请注意上面的 FUnjoinOptions
参数。我选择在这里指定 4。这会在手动取消加入计算机时执行默认行为。此选项会禁用 Active Directory 中的计算机帐户(如果可以找到)。如果您不想出现此行为,可以在此处使用选项 0。
计算机退出后,您可以使用 JoinDomainOrWorkGroup()
方法重新加入域。
$computername = 'PITA'
$instance = Get-CimInstance -ComputerName $computername -ClassName 'Win32_ComputerSystem'
$invCimParams = @{
MethodName = 'JoinDomainOrWorkGroup'
Arguments = @{ FJoinOptions=3;Name=mydomain.local;Username="mydomain\domainuser";Password="mypassword" }
}
$instance | Invoke-CimMethod @invCimParams
请注意上面的 FJoinOptions
参数。我选择在这里指定 3。这将执行手动加入计算机时的默认行为。此选项创建 AD 计算机帐户。您可以找到一些其他选项,例如通过 JoinDomainOrWorkgroup 文档添加到特定 OU。
提示:您还可以通过此方法一次取消加入和重新加入多台计算机,方法是通过 Get-CimInstance
上的 ComputerName
参数指定多台计算机。
使用删除计算机和添加计算机 Cmdlet
您还可以使用内置 PowerShell cmdlet 通过 PowerShell 将计算机加入或取消加入域。您可以使用 Remove-Computer
和 Add-Computer
cmdlet。
要使用 PowerShell 取消加入计算机,请登录计算机控制台并使用 Remove-Computer
cmdlet。提供具有退出计算机权限的域凭据。您还可以指定 Restart
参数以在取消加入后强制重新启动,并指定 Force
不提示确认。
PS51> Remove-Computer -UnjoinDomaincredential (Get-Credential) -Restart -Force
计算机重新启动后,您可以使用 Add-Computer
cmdlet 通过 PowerShell 将计算机加入域。您可以通过提供 ComputerName
参数来远程使用 Add-Computer
cmdlet。您还将使用本地用户凭据进行连接,并使用域凭据对域进行身份验证。
当它恢复时,希望您不再收到“此工作站和主域之间的信任关系失败”错误消息。
$localCredential = Get-Credential
$domainCredential = Get-Credential
Add-Computer -ComputerName PITA -LocalCredential $localCredential -DomainName domain.local -Credential $domainCredential -Restart -Force
自动域退出和重新加入
因为我必须多次执行此过程,所以我构建了一个 PowerShell 脚本来为您完成所有操作。如果您向其提供计算机的名称,它将:
- 取消连接计算机
- 重新启动并等待恢复
- 加入电脑
- 重新启动并等待恢复
您可以通过 GitHub 尝试此脚本。
概括
您现在应该充分了解该问题以及臭名昭著的“此工作站与主域之间的信任关系失败”错误消息的多种解决方案。我希望本指南能为您提供一些见解,并让您能够针对计算机掉域的问题提出一些自己的解决方案!
进一步阅读
请务必查看其他一些相关帖子!
- Active Directory 脚本丰富:快来获取吧!
- Get-AdUser:使用 PowerShell 查找 Active Directory 用户
- 如何使用 PowerShell 和 CSV 文件同步 AD
猜你还喜欢
- 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