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 |
|
DLL |
|