Win32_ComputerSystem 类的 JoinDomainOrWorkgroup 方法

JoinDomainOrWorkgroup 方法将计算机系统加入域或工作组。

本主题使用托管对象格式 (MOF) 语法。 有关使用此方法的详细信息,请参阅 调用方法

语法

uint32 JoinDomainOrWorkgroup(
  [in] string Name,
  [in] string Password,
  [in] string UserName,
  [in] string AccountOU,
  [in] uint32 FJoinOptions = 
);

参数

Name [in]

指定要加入的域或工作组。 不能为 NULL

密码 [in]

如果 UserName 参数指定帐户名称,则 Password 参数必须指向连接到域控制器时要使用的密码。 否则,此参数必须为 NULL

UserName [in]

指向以 null 结尾的常量字符串的指针,该字符串指定连接到域控制器时要使用的帐户名称。 必须指定域 NetBIOS 名称和用户帐户,例如 Domain\user。 如果此参数为 NULL,则使用调用方信息。

还可以将用户主体名称 (UPPED) 格式user@domain。

AccountOU [in]

指定指向常 量以 null 结尾的字符串的指针,该字符串包含计算机帐户的组织单位 (OU) 的 RFC 1779 格式名称。 如果指定此参数,则字符串必须包含完整路径,否则 Accent 必须为 NULL

示例:“OU=testOU;DC=domain;DC=域;DC=com”

FJoinOptions [in]

定义联接选项的位标志集。

(0)

默认。 没有联接选项。

NETSETUP_JOIN_DOMAIN (0x00000001)

将计算机加入域。 如果未指定此值,则将计算机加入工作组。

NETSETUP_ACCT_CREATE (0x00000002)

在域上创建帐户。

NETSETUP_WIN9X_UPGRADE (0x00000010)

联接操作是在升级过程中发生的。

NETSETUP_DOMAIN_JOIN_IF_JOINED (0x00000020)

允许加入新域,即使计算机已加入域。

NETSETUP_JOIN_UNSECURE (0x00000040)

执行不安全的加入操作。

此选项请求域加入到预先创建的帐户,而无需使用域用户凭据进行身份验证。 此选项可与 NETSETUP_MACHINE_PWD_PASSED 选项结合使用。 在本例中, 密码 是预先创建的计算机帐户的密码。

在 Windows Vista SP1 和 Windows Server 2008 之前,不安全的加入未向域控制器进行身份验证。 所有通信都是使用 null (未经身份验证) 会话执行的。 从 SP1 和 Windows Server 2008 的 Windows Vista 开始,计算机帐户名称和密码用于向域控制器进行身份验证。

NETSETUP_MACHINE_PWD_PASSED (0x00000080)

指示 Password 参数指定本地计算机帐户密码,而不是用户密码。 此标志仅对不安全的联接有效,必须同时设置NETSETUP_JOIN_UNSECURE标志来指示该联接。

如果设置此标志,则在联接操作成功后,如果该值是有效的计算机密码,则计算机密码将设置为 “密码”值。

NETSETUP_DEFER_SPN_SET (0x00000100)

指示当前不应更新计算机对象上的服务主体名称 (SPN) 和 DnsHostName 属性。

通常,这些属性在联接操作期间更新。 相反,应在后续调用 Rename 方法期间更新这些属性。 这些属性在重命名操作期间始终更新。

NETSETUP_JOIN_DC_ACCOUNT (0x00000200)

如果现有帐户是域控制器,则允许域加入。

注意

Windows Vista 及更高版本支持此标志。

NETSETUP_AMBIGUOUS_DC (0x00001000)

加入域时,不要尝试在注册表中设置首选域控制器。

注意

Windows 7、Windows Server 2008 R2 及更高版本支持此标志。

NETSETUP_NO_NETLOGON_CACHE (0x00002000)

加入域时,不会创建 Netlogon 缓存。

注意

Windows 7、Windows Server 2008 R2 及更高版本支持此标志。

NETSETUP_DONT_CONTROL_SERVICES (0x00004000)

加入域时,不强制 Netlogon 服务启动。

注意

Windows 7、Windows Server 2008 R2 及更高版本支持此标志。

NETSETUP_SET_MACHINE_NAME (0x00008000)

仅当加入域以便进行脱机加入时,请设置目标计算机主机名和 NetBIOS 名称。

注意

Windows 7、Windows Server 2008 R2 及更高版本支持此标志。

NETSETUP_FORCE_SPN_SET (0x00010000)

加入域时,请在加入域期间替代其他设置, (SPN) 设置服务主体名称。

注意

Windows 7、Windows Server 2008 R2 及更高版本支持此标志。

NETSETUP_NO_ACCT_REUSE (0x00020000)

加入域时,请勿重复使用现有帐户。

注意

Windows 7、Windows Server 2008 R2 及更高版本支持此标志。

NETSETUP_IGNORE_UNSUPPORTED_FLAGS (0x10000000)

如果设置了此位, 则 JoinDomainOrWorkgroup 函数将忽略无法识别的标志, NetJoinDomain 的行为就像未设置标志一样。

返回值

返回 系统错误代码,其中可能包括以下数值之一。 其他任何数字表示出现错误。 有关其他错误代码,请参阅 WMI 错误常量WbemErrorEnum

Success

0

5

访问被拒绝。

87

参数不正确。

110

系统无法打开指定的 对象。

1323

无法更新密码。

1326

登录失败:用户名未知或密码错误。

1355

指定的域不存在,或无法访问。

2224

帐户已存在。

2691

计算机已加入域。

2692

计算机当前未加入域。

WBEM_E_ENCRYPTED_CONNECTION_REQUIRED

0x80041087

指定了密码UserName ,但不 RPC_C_AUTHN_LEVEL_PKT_PRIVACY身份验证级别。 对于 Visual Basic,返回 wbemErrEncryptedConnectionRequired

其他

1 4294967295

备注

将计算机从域移动到工作组时,必须先通过调用 UnjoinDomainOrWorkgroup) 将计算机从域 (中删除,然后调用此方法以加入工作组 (,并调用 JoinDomainOrWorkgroup) 。 调用此方法后,重启受影响的计算机以应用更改。

“用户名”“密码” 可以为 null。 但是,与 WMI 连接的身份验证必须在脚本中为 6,或者 Visual Basic 中的 WbemAuthenticationLevelPktPrivacy 以及可以使用 wbemdisp.dll 库的其他语言。 有关详细信息,请参阅 使用 VBScript 设置默认进程安全级别

在 C++ 中,在 CoInitializeSecurity 中为整个过程设置RPC_C_AUTHN_LEVEL_PKT_PRIVACY身份验证,或在 CoSetProxyBlanket 中设置身份验证,以便连接到 IWbemServices 代理。 有关详细信息,请参阅 使用 C++ 设置身份验证在 IWbemServices 和其他代理上设置安全性

示例

计算机加入域 PowerShell 示例将计算机加入域。

以下 VBScript 代码示例将计算机加入域并在 Active Directory 中创建计算机的帐户。

Const JOIN_DOMAIN             = 1
Const ACCT_CREATE             = 2
Const ACCT_DELETE             = 4
Const WIN9X_UPGRADE           = 16
Const DOMAIN_JOIN_IF_JOINED   = 32
Const JOIN_UNSECURE           = 64
Const MACHINE_PASSWORD_PASSED = 128
Const DEFERRED_SPN_SET        = 256
Const INSTALL_INVOCATION      = 262144
strDomain   = "FABRIKAM"
strPassword = "ls4k5ywA"
strUser     = "shenalan"
Set objNetwork = CreateObject("WScript.Network")
strComputer = objNetwork.ComputerName
Set objComputer = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\" & strComputer & _
                            "\root\cimv2:Win32_ComputerSystem.Name='" & strComputer & "'")
ReturnValue = objComputer.JoinDomainOrWorkGroup(strDomain, _
                                                strPassword, _
                                                strDomain & "\" & strUser, _
                                                NULL, _
                                                JOIN_DOMAIN + ACCT_CREATE)

要求

要求
最低受支持的客户端
Windows Vista
最低受支持的服务器
Windows Server 2008
命名空间
Root\CIMV2
MOF
CIMWin32.mof
DLL
CIMWin32.dll

另请参阅

Win32_ComputerSystem

UnjoinDomainOrWorkgroup 方法