Win32_ComputerSystem 類別的 JoinDomainOrWorkgroup 方法

JoinDomainOrWorkgroup 方法會將計算機系統加入網域或工作組。

本主題使用Managed物件格式 (MOF) 語法。 如需使用此方法的詳細資訊,請參閱 呼叫方法

語法

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

參數

名稱 [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=Domain;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旗標來指出此旗標。

如果您設定此旗標,則在聯結作業成功之後,如果該值為有效的計算機密碼,計算機密碼將會設定為Password的值

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

「成功」

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,會傳回 wbemErrEncrypted 連線 ionRequired

其他

1 4294967295

備註

將計算機從網域移至工作組時,您必須先從網域移除計算機(呼叫 UnjoinDomainOrWorkgroup),再呼叫此方法以加入工作組(呼叫 JoinDomainOrWorkgroup)。 呼叫此方法之後,請重新啟動受影響的計算機以套用變更。

UserNamePassword 可以保留 Null。 不過,在腳本或 Visual Basic 中使用 WbemAuthenticationLevelPktPrivacy 的 WbemAuthenticationLevelPktPrivacy ,以及可以使用 wbemdisp.dll 連結庫的 Wbemdisp.dll 連結庫,對 WMI 的驗證必須是 6。 如需詳細資訊,請參閱 使用 VBScript 設定預設進程安全性層級。

在 C++ 中,針對整個進程或在 CoSetProxyBlanket 中,在 CoInitializeSecurity設定 RPC_C_AUTHN_LEVEL_PKT_PRIVACY驗證,以連線至 IWbemServices Proxy。 如需詳細資訊,請參閱 使用 C++ 設定驗證和 在 IWbemServices 和其他 Proxy 上設定安全性。

範例

下列 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
Namespace
Root\CIMV2
MOF
CIMWin32.mof
DLL
CIMWin32.dll

另請參閱

Win32_ComputerSystem

UnjoinDomainOrWorkgroup 方法