Método JoinDomainOrWorkgroup da classe Win32_ComputerSystem

O método JoinDomainOrWorkgroup une um sistema de computador a um domínio ou grupo de trabalho.

Este tópico usa a sintaxe MOF (Managed Object Format). Para obter mais informações sobre como usar esse método, consulte Chamando um método.

Sintaxe

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

Parâmetros

Nome [in]

Especifica o domínio ou grupo de trabalho a ingressar. Não pode ser NULL.

Senha [in]

Se o parâmetro UserName especificar um nome de conta, o parâmetro Password deverá apontar para a senha a ser usada ao se conectar ao controlador de domínio. Caso contrário, esse parâmetro deve ser NULL.

UserName [in]

Ponteiro para uma cadeia de caracteres terminada em nulo constante que especifica o nome da conta a ser usado ao se conectar ao controlador de domínio. Deve especificar um nome netBIOS de domínio e uma conta de usuário, por exemplo, Domínio\usuário. Se esse parâmetro for NULL, as informações do chamador serão usadas.

Você também pode usar o nome da entidade de usuário (UPPED) no formulário user@domain.

AccountOU [in]

Especifica o ponteiro para uma cadeia de caracteres terminada em nulo constante que contém o nome do formato RFC 1779 da UO (unidade organizacional) da conta do computador. Se você especificar esse parâmetro, a cadeia de caracteres deverá conter um caminho completo, caso contrário, Accent deverá ser NULL.

Exemplo: "OU=testOU; DC=domain; DC=Domain; DC=com"

FJoinOptions [in]

Conjunto de sinalizadores de bits que definem as opções de junção.

acima (0)

Padrão. Nenhuma opção de junção.

NETSETUP_JOIN_DOMAIN (0x00000001)

Une o computador a um domínio. Se esse valor não for especificado, unirá o computador a um grupo de trabalho.

NETSETUP_ACCT_CREATE (0x00000002)

Cria a conta no domínio.

NETSETUP_WIN9X_UPGRADE (0x00000010)

A operação de junção está ocorrendo como parte de uma atualização.

NETSETUP_DOMAIN_JOIN_IF_JOINED (0x00000020)

Permite uma junção a um novo domínio mesmo que o computador já esteja ingressado em um domínio.

NETSETUP_JOIN_UNSECURE (0x00000040)

Executa uma junção não segura.

Essa opção solicita uma junção de domínio a uma conta pré-criada sem autenticar com credenciais de usuário de domínio. Essa opção pode ser usada em conjunto com NETSETUP_MACHINE_PWD_PASSED opção. Nesse caso, Password é a senha da conta de computador pré-criada.

Antes do Windows Vista com o SP1 e o Windows Server 2008, uma junção não se autenticava no controlador de domínio. Toda a comunicação foi executada usando uma sessão nula (não autenticada). A partir do Windows Vista com o SP1 e o Windows Server 2008, o nome da conta de computador e a senha são usados para autenticar no controlador de domínio.

NETSETUP_MACHINE_PWD_PASSED (0x00000080)

Indica que o parâmetro Password especifica uma senha de conta de computador local em vez de uma senha de usuário. Esse sinalizador é válido apenas para junções não asseguradas, que você deve indicar definindo também o sinalizador NETSETUP_JOIN_UNSECURE.

Se você definir esse sinalizador, depois que a operação de junção for bem-sucedida, a senha do computador será definida como o valor de Senha, se esse valor for uma senha de computador válida.

NETSETUP_DEFER_SPN_SET (0x00000100)

Indica que o SPN (nome da entidade de serviço) e as propriedades DnsHostName no objeto do computador não devem ser atualizados no momento.

Normalmente, essas propriedades são atualizadas durante a operação de junção. Em vez disso, essas propriedades devem ser atualizadas durante uma chamada subsequente para o método Rename . Essas propriedades são sempre atualizadas durante a operação de renomeação.

NETSETUP_JOIN_DC_ACCOUNT (0x00000200)

Permita a junção de domínio se a conta existente for um controlador de domínio.

Observação

Esse sinalizador tem suporte no Windows Vista e posterior.

NETSETUP_AMBIGUOUS_DC (0x00001000)

Ao ingressar no domínio, não tente definir o controlador de domínio preferencial no registro.

Observação

Esse sinalizador tem suporte no Windows 7, no Windows Server 2008 R2 e posterior.

NETSETUP_NO_NETLOGON_CACHE (0x00002000)

Ao ingressar no domínio, não crie o cache do Netlogon.

Observação

Esse sinalizador tem suporte no Windows 7, no Windows Server 2008 R2 e posterior.

NETSETUP_DONT_CONTROL_SERVICES (0x00004000)

Ao ingressar no domínio, não force o início do serviço Netlogon.

Observação

Esse sinalizador tem suporte no Windows 7, no Windows Server 2008 R2 e posterior.

NETSETUP_SET_MACHINE_NAME (0x00008000)

Ao ingressar no domínio somente para junção offline, defina o nome do host do computador de destino e o nome do NetBIOS.

Observação

Esse sinalizador tem suporte no Windows 7, no Windows Server 2008 R2 e posterior.

NETSETUP_FORCE_SPN_SET (0x00010000)

Ao ingressar no domínio, substitua outras configurações durante a junção de domínio e defina o SPN (nome da entidade de serviço).

Observação

Esse sinalizador tem suporte no Windows 7, no Windows Server 2008 R2 e posterior.

NETSETUP_NO_ACCT_REUSE (0x00020000)

Ao ingressar no domínio, não reutilize uma conta existente.

Observação

Esse sinalizador tem suporte no Windows 7, no Windows Server 2008 R2 e posterior.

NETSETUP_IGNORE_UNSUPPORTED_FLAGS (0x10000000)

Se esse bit estiver definido, os sinalizadores não reconhecidos serão ignorados pela função JoinDomainOrWorkgroup e NetJoinDomain se comportará como se os sinalizadores não estivessem definidos.

Valor retornado

Retorna um código de erro do sistema, que pode incluir um dos seguintes valores numéricos. Qualquer outro número indica um erro. Para obter códigos de erro adicionais, consulte Constantes de erro WMI ou WbemErrorEnum.

Êxito

0

5

Acesso negado.

87

O parâmetro está incorreto.

110

O sistema não pode abrir o objeto especificado.

1323

Não é possível atualizar a senha.

1326

Falha de logon: nome de usuário desconhecido ou senha incorreta.

1355

O domínio especificado não existe ou não pôde ser contatado.

2224

A conta já existe.

2691

O computador já está ingressado no domínio.

2692

No momento, o computador não está ingressado em um domínio.

WBEM_E_ENCRYPTED_CONNECTION_REQUIRED

0x80041087

Senha e Nome de Usuário são especificados, mas o nível de autenticação não é RPC_C_AUTHN_LEVEL_PKT_PRIVACY. Para o Visual Basic, wbemErrEncryptedConnectionRequired é retornado.

Outros

1 4294967295

Comentários

Ao mover um computador de um domínio para um grupo de trabalho, você deve remover o computador do domínio (com uma chamada para UnjoinDomainOrWorkgroup) antes de chamar esse método para ingressar em um grupo de trabalho (com uma chamada para JoinDomainOrWorkgroup). Depois de chamar esse método, reinicie o computador afetado para aplicar as alterações.

UserName e Password podem ser deixados nulos. No entanto, a autenticação da conexão com o WMI deve ser 6 no script ou WbemAuthenticationLevelPktPrivacy no Visual Basic e em outras linguagens que podem usar a biblioteca wbemdisp.dll . Para obter mais informações, consulte Configurando o nível de segurança do processo padrão usando VBScript.

No C++, defina a autenticação em RPC_C_AUTHN_LEVEL_PKT_PRIVACY em CoInitializeSecurity, para todo o processo ou em CoSetProxyBlanket, para uma conexão com o proxy IWbemServices . Para obter mais informações, consulte Configurando a autenticação usando C++ e Definindo a segurança em IWbemServices e outros proxies.

Exemplos

O exemplo Unir um computador a um domínio do PowerShell une um computador a um domínio.

O exemplo de código VBScript a seguir une um computador a um domínio e cria a conta do computador no 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)

Requisitos

Requisito Valor
Cliente mínimo com suporte
Windows Vista
Servidor mínimo com suporte
Windows Server 2008
Namespace
Root\CIMV2
MOF
CIMWin32.mof
DLL
CIMWin32.dll

Confira também

Win32_ComputerSystem

Método UnjoinDomainOrWorkgroup