修改Active Directory信任域对象属性操作失败求助
无法修改Active Directory TrustedDomain对象属性的解决思路
在提升权限的Shell中尝试修改TrustedDomain对象的属性(入站信任的msDS-SupportedEncryptionTypes、出站信任的trustAttributes)时,使用Set-ADObject和[ADSI]方法均失败,分别返回ADIllegalModifyOperationException和"The server is unwilling to process the request"错误。以下是针对性的解决思路:
1. 避免直接修改底层LDAP属性,使用专用信任管理命令
部分TrustedDomain属性受AD信任机制保护,无法通过普通LDAP写入操作变更,需使用AD模块提供的专用命令:
- 修改加密类型(对应
msDS-SupportedEncryptionTypes):使用Set-ADTrust命令,直接通过参数指定加密类型,无需手动计算十六进制值:
上述命令对应十六进制Set-ADTrust -Identity "corp.adds" -AllowedEncryptionTypes AES128,AES2560x18(AES128=0x8,AES256=0x10,二者组合)。 - 修改
trustAttributes:通过Set-ADTrust的相关参数调整,比如修改信任的传递性、双向状态等,具体可参考Get-Help Set-ADTrust -Detailed查看参数说明。
2. 检查权限与信任状态
- 确保执行账户拥有域管理员权限,跨林信任需同时在双方域拥有足够权限。
- 若修改失败,可尝试先禁用信任,修改后再启用:
Set-ADTrust -Identity "corp.adds" -Enabled $false # 执行属性修改操作 Set-ADTrust -Identity "corp.adds" -Enabled $true
3. 使用.NET ActiveDirectory命名空间管理信任
利用你创建信任时用到的System.DirectoryServices.ActiveDirectory命名空间,通过TrustRelationshipInformation类修改属性,该方法会自动处理AD内部的同步与验证:
$forest = [System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest() $trust = $forest.GetTrustRelationship("corp.adds") # 设置允许的加密类型为AES128+AES256 $trust.AllowedEncryptionTypes = [System.DirectoryServices.ActiveDirectory.AllowedEncryptionTypes]::AES128 -bor [System.DirectoryServices.ActiveDirectory.AllowedEncryptionTypes]::AES256 $trust.Save()
4. 排查环境兼容性
- 确认域控制器操作系统版本支持目标属性(如AES加密需Windows Server 2008及以上)。
- 检查域功能级别是否达标,部分信任属性修改需要特定的域功能级别支持。
内容的提问来源于stack exchange,提问作者CFou
相关产品推荐
相关产品推荐

