更新时间: 2010年3月
http://technet.microsoft.com/zh-cn/library/offline-domain-join-djoin-step-by-step(v=ws.10)

应用到: Windows 7, Windows Server 2008 R2

本指南介绍执行脱机加入域时要完成的步骤。在脱机加入域过程中,会将计算机配置为加入某个域,而不需要连接域控制器。本指南包括以下部分:

脱机加入域方案概述

脱机加入域是一个新过程,运行 Windows® 7 或 Windows Server® 2008 R2 的计算机可使用该过程加入域,而无需连接域控制器。这使得可以在未连接到企业网络的位置将计算机加入域。

例如,组织可能需要在数据中心部署大量虚拟机。通过脱机加入域,虚拟机可以在安装操作系统之后的初始启动过程中加入域。不需要另外重新启动,即可实现加入域。这样可显著减少大规模部署虚拟机所需的总时间。

加入域会在运行 Windows 操作系统的计算机与 Active Directory(R) 域之间建立信任关系。此操作需要更改 Active Directory 域服务 (AD DS) 和加入域的计算机的状态。在过去,若要使用以前版本的 Windows(R) 操作系统完成加入域,加入域的计算机必须正在运行,并且拥有网络连接以连接域控制器。脱机加入域相对于以前的要求提供了以下优势:

  • 计算机不需要任何网络通信,即可完成 Active Directory 状态更改。

     
  • 与域控制器之间不需要任何网络通信,即可完成计算机状态更改。

     
  • 每个更改集可在不同的时间完成。

     

以下各部分说明了脱机加入域可以提供的一些优点。

降低数据中心的总拥有成本

脱机加入域能够减少每台服务器所需的启动时间和提高生产环境中加入域操作的可靠性,从而降低计算机的总拥有成本。

数据中心通常拥有一个设置服务器,用于配置映像,然后将要部署的映像发送到生产计算机。然后设置生产计算机、加入域并重新启动。如果出现与加入域相关的任何问题(例如网络连接问题)或与处于脱机状态的必需服务器相关的问题,则必须立刻诊断并解决这些问题。在这种情况下,脱机加入域通过在生产计算机的设置过程中配置域加入信息,可有助于避免生产计算机与域控制器之间的通信可能引起的问题。由于去除了完成联机加入域所需的额外重新启动步骤,因此可以减少设置每台服务器的总时间。

改进了使用 RODC 执行加入域的体验

在 Windows Server 2008 中,提供了针对只读域控制器 (RODC) 执行加入域操作的机制。但是,若要针对 RODC 执行加入域操作,您必须完成以下多个步骤:

  1. 在目录中预创建计算机帐户,并使用脚本设置一些附加属性。

     
  2. 如果需要,修改 RODC 的密码复制策略 (PRP) 以允许使用 RODC 缓存您要加入域的计算机的密码。

     
  3. 强制复制要加入域的计算机的机密。

     
  4. 将密码以脱机方式传递给要加入域的计算机。

     
  5. 运行指向 RODC 的自定义脚本以完成加入。

     

使用脱机加入域时,简化了针对 RODC 执行加入域操作的步骤,如下所示:

  1. 在 AD DS 中预创建帐户。

     
  2. 强制复制要加入域的计算机的机密。

     
  3. 将要加入域的计算机需要使用的相关状态信息发送至文本文件。

     
  4. 计算机接受文本文件中的信息;然后在启动时加入域。

     

快速企业部署

使用部署工具(例如 Windows 系统映像管理器),通过在 Unattend.xml 文件中提供与加入域相关的信息,可以在操作系统安装过程中执行无人参与加入域。使用同一 Unattend.xml 文件,可以为运行 Windows 7 和 Windows Server 2008 R2 的计算机提供执行脱机加入域所需的信息。

Windows 7 和 Windows Server 2008 R2 的 Unattend.xml 文件包含一个新节以支持脱机加入域。

脱机加入域的要求

若要执行脱机加入域,您可使用名为 Djoin.exe 的新工具运行命令。使用 Djoin.exe 可将计算机帐户数据设置到 AD DS 中。还可使用它将计算机帐户数据插入到目标计算机的 Windows 目录中,目标计算机是您希望加入域的计算机。以下各部分介绍执行脱机加入域的操作系统要求和凭据要求。

操作系统要求

只能在运行 Windows 7 或 Windows Server 2008 R2 的计算机上运行 Djoin.exe。运行 Djoin.exe 以将计算机帐户数据配置到 AD DS 中的计算机必须运行的是 Windows 7 或 Windows Server 2008 R2。您希望加入域的计算机也必须运行的是 Windows 7 或 Windows Server 2008 R2。

默认情况下,Djoin.exe 命令指向运行 Windows Server 2008 R2 的域控制器。但是,如果您希望指向运行早于 Windows Server 2008 R2 版本的 Windows Server 的域控制器,则可以指定可选 /downlevel 参数。

凭据要求

若要执行脱机加入域,您必须拥有将工作站加入域所需的权限。默认情况下,Domain Admins 组的成员具有这些权限。如果您不是 Domain Admins 组的成员,则 Domain Admins 组的某个成员必须完成以下操作之一以使您能够将工作站加入到域中:

  • 使用组策略授予您所需的用户权限。使用此方法,您可以在默认计算机容器和稍后创建的组织单位 (OU) 中创建计算机(如果未添加任何拒绝访问控制项 (ACE))。

     
  • 编辑默认计算机容器的访问控制列表 (ACL),以使域向您委派正确的权限。

     
  • 创建 OU 并编辑该 OU 上的 ACL 以授予您“创建子级 - 允许”权限。将 /machineOU 参数传递给 djoin /provision 命令。

     

以下过程显示如何使用组策略授予用户权限,以及如何委派正确的权限。

授予用户将工作站加入到域中的权限

您可以使用组策略管理控制台 (GPMC) 来修改域策略,或新建一个策略,该策略具有的设置可授予用户将工作站添加到域中的权限。

Domain Admins 中的成员身份或同等身份是授予用户权限所需的最低要求。查看有关使用适当帐户和组成员关系的详细信息,请访问本地默认组和域默认组 (http://go.microsoft.com/fwlink/?LinkId=83477)(可能为英文链接)。

授予将工作站加入到域中的权限的步骤
  1. 单击「开始」,单击“管理工具”,然后单击“组策略管理”

  2. 双击林的名称,双击“域”,双击您希望在其中加入计算机的域的名称,右键单击“默认域策略”,然后单击“编辑”

  3. 在控制台树中,依次双击“计算机配置”“策略”“Windows 设置”“安全设置”“本地策略”“用户权限分配”

  4. 在细节窗格中,双击“将工作站添加到域”

  5. 选中“定义这些策略设置”复选框,然后单击“添加用户或组”

  6. 键入您希望向其授予用户权限的帐户的名称,然后单击“确定”两次。

委派将工作站加入到域中的权限

可以使用诸如 Ldp.exe 等工具委派将工作站加入到域中的权限。最佳做法是,您应该向组委派权限,然后根据需要将用户添加到组或删除用户。

Domain Admins 中的成员身份或同等身份是委派权限所需的最低要求。查看有关使用适当帐户和组成员关系的详细信息,请访问本地默认组和域默认组 (http://go.microsoft.com/fwlink/?LinkId=83477)(可能为英文链接)。

委派将工作站加入到域中的权限的步骤
  1. 依次单击「开始」“运行”,键入 ldp,然后单击“确定”

  2. 依次单击“连接”“连接”,然后在“服务器”中,键入域控制器的名称。如果您登录到域控制器,可以键入 localhost。完成操作后,单击“确定”

  3. 单击“连接”,然后单击“绑定”。如果您是以 Domain Admins 组的成员身份登录,请单击“作为当前已登录用户绑定”。如果您以其他用户登录,请单击“与凭据绑定”,然后键入作为 Domain Admins 组成员的帐户的名称、密码和域。单击“确定”

  4. 依次单击“视图”“树”,选择 DC=<domain>,然后单击“确定”

  5. 在控制台树中,双击 DC=<domain>,右键单击 CN=Computers,DC=<domain>,依次单击“高级”“安全描述符”“确定”

  6. 依次单击 ACE 和“添加 ACE”,键入您希望能够将工作站加入到域中的帐户的名称,选中“创建子级”复选框,然后选中“继承”复选框。在“对象类型”中,选择“计算机 - 类”(您可能必须键入 computer 来选择“计算机 - 类”),单击“确定”,然后单击“更新”

脱机加入域过程和 Djoin.exe 语法

在提升的命令提示符下,运行 Djoin.exe 以设置计算机帐户元数据。当您运行设置命令时,会在 .txt 文件中创建您指定作为命令一部分的计算机帐户元数据。在运行设置命令之后,您可以再次运行 Djoin.exe 来请求计算机帐户元数据并将其插入到目标计算机的 Windows 目录中,或者您可以将计算机帐户元数据保存在 Unattend.xml 文件中,然后在目标计算机的无人参与操作系统安装过程中指定该 Unattend.xml 文件。

有关用于在脱机加入域过程中设置计算机帐户的 NetProvisionComputerAccount 函数的详细信息,请参阅 NetProvisionComputerAccount 函数(可能为英文网页)(http://go.microsoft.com/fwlink/?LinkId=162426)。有关在目标计算机上本地运行的 NetRequestOfflineDomainJoin 函数的详细信息,请参阅 NetRequestOfflineDomainJoin 函数(可能为英文网页)(http://go.microsoft.com/fwlink/?LinkId=162427)。

Djoin.exe 语法

本节介绍 Djoin.exe 的语法。

 
djoin /provision /domain <domain_name> /machine <destination computer> /savefile <filename.txt> [/machineou <OU name>] [/dcname <name of domain controller>] [/reuse] [/downlevel] [/defpwd] [/nosearch] [/printblob]
 
djoin /requestodj /loadfile <filename.txt> /windowspath <path to the Windows directory of the offline p_w_picpath> /localos

 

参数

描述

/provision

在 AD DS 中创建计算机帐户。

/domain <domain name>

指定要加入的域的名称。

/machine <destination computer>

指定要加入到域中的计算机的名称。

/machineou <OU Name>

指定您希望在其中创建计算机帐户的组织单位 (OU) 的名称。默认情况下,在计算机容器中创建计算机帐户。

/dcname <domain controller name>

指定将创建计算机帐户的特定域控制器的名称。如果您未指定域控制器,则域控制器定位程序(DC 定位程序)进程会用于选择域控制器。

/reuse

指定任何现有计算机帐户的重新使用。将重置计算机帐户的密码。

/downlevel

支持使用运行版本早于 Windows Server 2008 R2 的 Windows Server 的域控制器。

/savefile <filename.txt>

将设置数据保存到某个文件。

/defpwd

使用默认的计算机帐户密码(不推荐)。

/nosearch

跳过帐户冲突阻止。需要 /DCName 参数。

/printblob

返回答案文件的 base64 编码的元数据 BLOB。

/requestodj

在下次启动时,请求脱机加入域。

/Loadfile

从先前的设置命令指定输出。

/windowspath <到脱机映像的 Windows 目录的路径>

指定到脱机映像的 Windows 目录的路径。如果使用的是 /localos 参数,请指定 %systemroot%%windir% 作为 /windowspath 参数的值。

/localos

使用域加入信息,将本地操作系统安装而不是脱机映像作为目标。如果您使用此参数,则为 /windowspath 指定的值应为 %systemroot%%windir%。仅在您希望加入到域中的目标计算机上运行此参数。此参数被阻止,不能在域控制器上运行。因为此参数会将 BLOB 数据置入本地运行的操作系统映像中,所以您必须重新启动计算机来完成加入域操作,对于联机加入域也必须这样做。

用于执行脱机加入域的步骤

脱机加入域过程包括以下步骤:

  1. 运行 djoin.exe /provision 命令来为目标计算机(您希望加入到域中的计算机)创建计算机帐户元数据。作为此命令的一部分,您必须指定希望计算机所加入域的名称。

     
  2. 运行 djoin.exe /requestODJ 命令以将计算机帐户元数据插入到目标计算机的 Windows 目录中。

     
  3. 启动目标计算机时,作为虚拟机或在完整的操作系统安装之后,会将计算机加入到您指定的域中。

     

以下部分介绍执行这些步骤的不同方式。您可以使用 Windows Server 2008 Hyper-V(TM) 虚拟化功能来创建虚拟机,您可以使用不同的物理计算机,或者可以运行无人参与安装在目标计算机上执行操作系统安装。在任何这些情形下,您运行设置命令的计算机和您运行请求命令的计算机必须运行的是 Windows 7 或 Windows Server 2008 R2。

还可以使用双引导计算机执行这些步骤。在这种情况下,请按这些步骤操作以使用 Hyper-V 执行脱机加入域,而使用运行 Windows 7 或 Windows Server 2008 R2 的物理分区替换虚拟机。

使用 Hyper-V 执行脱机加入域

若要使用 Hyper-V 执行脱机加入域,请创建下列虚拟机:

  • VM1:运行 Windows Server 2008 R2 的域控制器。

     
  • VM2:运行 Windows 7 或 Windows Server 2008 R2 且加入域的计算机。此计算机将充当设置服务器,在该服务器上您可以运行 djoin /provision 命令。也可以通过在域控制器 VM1 上运行 djoin /provision 命令完成这些步骤,而不必使用此虚拟机。会显示此附加的 VM2 以提供如何在生产环境中设置计算机的更加逼真的示例,此时,加入域的计算机通常会用作设置服务器。

     
  • VM3:您希望加入到域中的运行 Windows 7 或 Windows Server 2008 R2 的计算机。

     
note备注
对于这些虚拟机,请勿使用来自相同父虚拟硬盘 (VHD) 的差异磁盘。在您完成用于执行脱机加入域的步骤之后,差异磁盘不会正确启动。您也不应使用相同 VHD 的副本,因为当您尝试从一个虚拟机装载它时,这将导致另一个虚拟机被禁用。

 

 

完成以下步骤来执行脱机加入域:

  1. 以具有将工作站添加到域中的权限的用户身份登录到 VM2。

     
  2. 键入下面的命令来设置目标计算机:

     
    djoin /provision /domain <domain to be joined> /machine <name of the destination computer> /savefile <filename.txt>
    
    security安全性备注
    设置命令创建的 base64 编码元数据 BLOB 包含非常敏感的数据。应像处理纯文本密码一样安全地处理该数据。BLOB 包含计算机帐户密码和关于域的其他信息,包括域名,域控制器的名称,域的安全 ID (SID),等等。如果 BLOB 是以物理方式进行传输,或者是通过网络进行传输,则必须小心、安全地传输该 BLOB。

     

     

  3. 关闭 VM3 和 VM2,然后从 VM2 装载 VM3。

    若要在 Hyper-V 中执行此操作,请右键单击 VM2,然后单击“设置”。单击“IDE 控制器”,然后单击“添加”。选择“虚拟硬盘(.vhd)文件”,单击“浏览”,导航到 VM3 的 .vhd 文件的位置,单击“打开”,然后单击“确定”

     
  4. 重新启动 VM2,然后使用 Windows 资源管理器来查找装载 VM3 的驱动器。在提升的命令提示符下,键入以下命令以请求脱机加入域数据:

     
    djoin /requestODJ /loadfile <filename.txt> /windowspath <path to Windows directory of the offline p_w_picpath>
    
  5. 关闭 VM2,然后从 VM2 卸载 VM3。若要在 Hyper-V 中执行此操作,请右键单击 VM2,然后单击“设置”。单击与 VM3 相对应的集成驱动电子设备 (IDE) 控制器,然后单击“删除”

     
  6. 启动 VM3。计算机在启动之后将加入到域中。

     

如果在运行 Djoin.exe 命令时遇到任何问题,可以在 %windir%\debug\netsetup.log 处查看 VM2 上的日志文件以获取详细信息。

使用不同的物理计算机执行脱机加入域

若要使用物理计算机执行脱机加入域,可以完成下列步骤。这种情况下的最佳做法是,拥有一个域控制器,一个要用作设置服务器且加入域的计算机,和一个希望加入到域中的客户端计算机。

  1. 在设置服务器上,打开已提升权限的命令提示符。要打开提升的“命令提示符”窗口,请单击“开始”,指向“所有程序”,单击“附件”,右键单击“命令提示符”,然后单击“以管理员身份运行”。

     
  2. 键入下面的命令来设置计算机帐户:

     
    djoin /provision /domain <domain to be joined> /machine <name of the destination computer> /savefile blob.txt
    
  3. 将 blob.txt 文件复制到客户端计算机。

     
  4. 在客户端计算机上,打开已提升权限的命令提示符,然后键入以下命令来请求加入域:

     
    djoin /requestODJ /loadfile blob.txt /windowspath %SystemRoot% /localos
    
    Caution注意
    无法在域控制器上使用带有 /localos 参数的此命令。

     

     

  5. 重新启动客户端计算机。计算机将加入到域中。

     

使用无人参与操作系统安装执行脱机加入域

若要在操作系统安装过程中执行脱机加入域,必须首先运行 Djoin.exe 来设置计算机帐户元数据。然后,您创建 Unattend.xml 文件,并在其中包含脱机加入域数据的新部分。在新部分中,可以插入计算机帐户元数据。

新部分的组件名是 Microsoft-Windows-UnattendJoin/Identification/Provisioning,且它包含以下结构:

  • <Component>

     
  • <Component name=Microsoft-Windows-UnattendedJoin>

     
  •      <Identification>

     
  •           <Provisioning>

     
  •                <AccountData>Base64Encoded Blob</AccountData>

     
  •           </Provisioning>

     
  •      </Identification>

     
  • </Component>

     

必须将计算机帐户元数据插入到 <AccountData> 和 </AccountData> 标记内。在创建 Unattend.xml 文件之后,在安全模式下启动您希望加入到域中的计算机,或者在 Windows 预安装环境 (Windows PE) 中启动计算机,然后使用答案文件运行 setup 命令,如下面的示例所示:

 
setup /unattend:<answer_file_path>

另请参阅