症状
当您在 Windows Server 2008 上运行 Adprep /rodcprep 命令时, 您会收到以下错误消息: Adprep 无法联系分区 DC 的...
当您在 Windows Server 2008 上运行 Adprep /rodcprep 命令时, 您会收到以下错误消息:
Adprep 无法联系分区 DC 的复制副本 = DomainDnsZones,DC = Contoso,DC = com
Adprep 无法分区 DC 上的操作 = DomainDnsZones,DC = Contoso,DC = com 跳过下一分区。
Adprep 无法联系的分区的副本 DC = ForestDnsZones,DC = Contoso,DC = com
Adprep 遇到了一个 LDAP 错误。错误代码: 0x0。服务器扩展的错误代码: 0x0,服务器错误消息: (null)。
Adprep 无法分区 DC 上的操作 = ForestDnsZones,DC = Contoso,DC = com 跳过下一分区。
Adprep 完成,但有错误。更新不是所有的分区。
原因
Adprep /rodcprep 命令试图联系树林中每个应用程序分区的基础结构主机时,会出现此问题。命令有此选项以设置所需的只读域控制器 (RODC) 复制的权...
Adprep /rodcprep 命令试图联系树林中每个应用程序分区的基础结构主机时,会出现此问题。命令有此选项以设置所需的只读域控制器 (RODC) 复制的权限。如果满足下列条件之一为真,Adprep /rodcprep 命令失败:
-
该分区或分区不再在错误信息中引用的存在。
-
结构主机的被引用的分区或分区已强制降级或处于脱机状态。
解决方案
若要解决此问题,如果该分区不再存在,请执行为孤立的分区使用 Dsmgmt 工具的"删除 nc"参数的元数据清除操作一次。有关详细的信息,请访问下面的 Micro...
若要解决此问题,如果该分区不再存在,请执行为孤立的分区使用 Dsmgmt 工具的"删除 nc"参数的元数据清除操作一次。有关详细的信息,请访问下面的 Microsoft 网站:
http://technet.microsoft.com/en-us/library/cc730970(WS.10).aspx (http://technet.microsoft.com/en-us/library/cc730970(WS.10).aspx)
如果指定的分区指定分区的在线的基础结构角色所有者。在"更多信息"一节中所述,您都可以通过手动修改该的对象 fSMORoleOwner 属性来执行此操作。
更多信息
下面的脚本示例修改基础架构对象的该指定非域命名上下文 (NDNC) 到活动,或 contactable,服务器上的 fSMORoleOwner 属性。此示例中的...
下面的脚本示例修改基础架构对象的该指定非域命名上下文 (NDNC) 到活动,或 contactable,服务器上的 fSMORoleOwner 属性。此示例中的 NDNC 是在 DomainDnsZones,DC = contoso,DC = com NDNC 命名上下文。该脚本使用以下命令:
cscript fixfsmo.vbs DC = DomainDnsZones,DC = contoso,DC = com
-------fixfsmo.vbs------------------
const ADS_NAME_INITTYPE_GC = 3
const ADS_NAME_TYPE_1779 = 1
const ADS_NAME_TYPE_CANONICAL = 2
set inArgs = WScript.Arguments
if (inArgs.Count = 1) then
' Assume the command line argument is the NDNC (in DN form) to use.
NdncDN = inArgs(0)
Else
Wscript.StdOut.Write "usage: cscript fixfsmo.vbs NdncDN"
End if
if (NdncDN <> "") then
' Convert the DN form of the NDNC into DNS dotted form.
Set objTranslator = CreateObject("NameTranslate")
objTranslator.Init ADS_NAME_INITTYPE_GC, ""
objTranslator.Set ADS_NAME_TYPE_1779, NdncDN
strDomainDNS = objTranslator.Get(ADS_NAME_TYPE_CANONICAL)
strDomainDNS = Left(strDomainDNS, len(strDomainDNS)-1)
Wscript.Echo "DNS name: " & strDomainDNS
' Find a domain controller that hosts this NDNC and that is online.
set objRootDSE = GetObject("LDAP://" & strDomainDNS & "/RootDSE")
strDnsHostName = objRootDSE.Get("dnsHostName")
strDsServiceName = objRootDSE.Get("dsServiceName")
Wscript.Echo "Using DC " & strDnsHostName
' Get the current infrastructure fsmo.
strInfraDN = "CN=Infrastructure," & NdncDN
set objInfra = GetObject("LDAP://" & strInfraDN)
Wscript.Echo "infra fsmo is " & objInfra.fsmoroleowner
' If the current fsmo holder is deleted, set the fsmo holder to this domain controller.
if (InStr(objInfra.fsmoroleowner, "\0ADEL:") > 0) then
' Set the fsmo holder to this domain controller.
objInfra.Put "fSMORoleOwner", strDsServiceName
objInfra.SetInfo
' Read the fsmo holder back.
set objInfra = GetObject("LDAP://" & strInfraDN)
Wscript.Echo "infra fsmo changed to:" & objInfra.fsmoroleowner
End if
End if
若要确定结构主机为分区,查询 fSMORoleOwner 属性,在问题中的命名上下文根目录下基础架构对象上。 例如对于查询 fSMORoleOwner 属性在 CN = 基础结构,DC = DomainDnsZones,DC = contoso,DC = com 命名上下文以确定结构主机的根目录在 DC = DomainDnsZones,DC = contoso,DC = com 分区。 同样,查询 fSMORoleOwner 属性在 CN = 基础结构,DC = ForestDnsZones,DC = contoso,DC = com 命名上下文以确定结构主机的根目录在 DC = ForestDnsZones,DC = contoso,DC = com 分区。
您可以使用 LDP 工具、 Active Directory 服务接口 (ADSI) 编辑工具和 ldifde 工具这样的工具来执行这些查询。例如对于下面的查询使用 Idifde 工具:
ldifde-f Infra_DomainDNSZones.ldf-d"CN = 基础结构,DC = DomainDnsZones,DC = contoso,DC = com"-l fSMORoleOwner
此查询返回的基础结构主机角色所有者在 DC = DomainDnsZones,DC = contoso,DC = com Infra_DomainDNSZones.ldf 文件的分区。
注意 您可以在不损害目录林的情况下多次运行 Adprep /rodcprep 命令。已完成在更早执行 rodcprep 命令的操作不重复。
如果试图在隔离的环境中运行 rodcprep 命令基础结构主服务器为每个域,并为每个应用程序目录分区必须成功执行该操作在环境中可用。
转载于:https://blog.51cto.com/353590/743324