大纲
问题描述
当我们配置Active Directory时,往往会遇到部分机器需要重新加入域的场景。而这种情况下,可能会收到如下的报错。
The join operation was not successful. This could be because an existing computer account having name “DESKTOP-9KQKNTC” was previously created using a different set of credentials. Use a different computer name, or contact your administrator to remove any stale conflicting account. The error was:
Access is denied.
这段提示表示清晰的支出了问题:AD服务上已经有该Computer Account的记录。也给出了解决方案:
- 修改Computer Account。
- 通知管理员删除记录。
我们将采用第二种方案,因为这种方案同样适用于下面的场景:
-
计算机退役或报废
- 当一台物理计算机由于故障无法修复、达到使用寿命或被替换而不再使用时,可以将其从 Active Directory 中移除。这样可以确保 Active Directory 中的计算机对象列表保持准确,避免管理混乱。
- 对于虚拟计算机,当不再需要某个特定的虚拟机实例且确定不会再使用时,也可以将其对应的计算机对象从域中删除。
-
计算机被非法接入或存在安全风险
- 如果发现有未经授权的计算机接入到域中,或者某台计算机被怀疑存在安全风险(如被恶意软件感染且难以清除),可以将其从 Active Directory 中移除,以防止对域环境造成更大的危害。
- 当企业进行安全审计,发现某些计算机不符合安全策略要求,也可能决定将其从域中删除,直到问题解决后再重新加入。
-
组织结构调整或域重组
- 当企业进行部门重组、合并或拆分时,可能需要对 Active Directory 中的计算机对象进行清理。例如,某些部门的计算机不再属于当前域的管理范围,就可以将这些计算机从域中删除。
- 在进行域迁移或升级等操作时,可能需要先清理旧域中的计算机对象,以便顺利进行后续的操作。
操作方案
我们首先要知道要移除机器的Computer Account。
如果我们能登录进入系统,可以使用下面指令获取
hostname
或者在登录页面找到线索
我们记录下这个名字,然后到AD服务器上以管理员权限启动PowerShell,执行下面命令以确认该Computer Account确实被记录。
Get-ADComputer -Filter 'Name -eq "DESKTOP-9KQKNTC"'
然后我们就可以使用下面指令删除该条记录
Get-ADComputer -Filter 'Name -eq "DESKTOP-9KQKNTC"' | Remove-ADObject -Recursive -Confirm:$false
可以看到该条记录不存在了
然后我们再到客户机器上添加域时就不会报上述错误。
题外
在PowerShell中使用下面命令,即使输入正确的用户名和密码,也会报错
Add-Computer -DomainName testdomain.cn -Restart
这个原因和上述原因一致,只是Add-Computer提示的错误让人摸不着后脑。所以如果出现问题,还是建议通过可视化界面来操作,以快速定位问题。
参考资料
- https://learn.microsoft.com/en-us/powershell/module/activedirectory/remove-adcomputer?view=windowsserver2022-ps
- https://learn.microsoft.com/en-us/answers/questions/1328828/active-directory-check-if-a-computer-name-is-alrea