Как удаленно подключить компьютер рабочей группы к домену

Сценарий: я использую ComputerA в домене с учетными данными администратора. Удаленный компьютер B (с известными учетными данными администратора) находится в рабочей группе. ComputerB должен присоединиться к определенному домену (отличному от домена ComputerA) в указанной OU, на которую имеют права мои активные учетные данные ComputerA. Я не могу использовать внешнюю программу, такую ​​как NETDOM, и предпочитаю использовать VBScript.

Любая помощь высоко ценится!


person VoidnessMD    schedule 11.08.2012    source источник


Ответы (2)


Попробуйте это, я адаптировал фрагмент скрипта с http://www.tek-tips.com/viewthread.cfm?qid=1240726

strComputer = "ComputerB"
strPassword = "mypassword"
strDomain   = "mydomain"
strUser     = "myusername"

Set objComputer = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\" & _
    strComputer & "\root\cimv2:Win32_ComputerSystem.Name='" & _
        strComputer & "'")

ReturnValue = objComputer.JoinDomainOrWorkGroup(strDomain, strPassword, strDomain & "\" & strUser, "ou=My_Computer_OU,DC=mycorp,dc=com, _
        JOIN_DOMAIN + ACCT_CREATE)

If ReturnValue = 0 Then
    MsgBox "Computer added to domain under old name without error. proceeding to change computer name. "
Else
    MsgBox "Computer not added to domain successfully. Return value: " & ReturnValue
End If
person peter    schedule 12.08.2012
comment
Спасибо за ответ, но в итоге сам разобрался. - person VoidnessMD; 13.08.2012
comment
тогда примите один из ответов, пожалуйста, иначе люди, которые хотят помочь, продолжают открывать этот вопрос - person peter; 13.08.2012
comment
Сначала я пытался, но по какой-то причине это заставило меня ждать 3 часа, прежде чем я смог проверить это. И так как у меня не было 3 часов, чтобы сидеть без дела, я, естественно, забыл об этом. Надо проверить сейчас. - person VoidnessMD; 13.08.2012

Я действительно смог решить эту проблему самостоятельно. Вот код для будущих кодеров:

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

Const WbemAuthenticationLevelPktPrivacy = 6

SystemName = "ComputerB"
strNamespace = "root\cimv2"
ComputerBLogin= "Login"
ComputerBPass = "Password"
ComputerALogin = "Login"
ComputerAPass = "Password"
DomainName = "domain.com"
OU = "OU=desiredou,DC=domain,DC=com"

Set objWbemLocator = CreateObject("WbemScripting.SWbemLocator")

Set objWMIService = objwbemLocator.ConnectServer(SystemName, strNamespace, ComputerBLogin, ComputerBPass)

objWMIService.Security_.authenticationLevel = WbemAuthenticationLevelPktPrivacy

Set colComputers = objWMIService.ExecQuery _
    ("Select * From Win32_ComputerSystem")
For Each objComputer in colComputers
    ReturnValue = objComputer.JoinDomainOrWorkGroup(DomainName, ComputerAPass, ComputerALogin, OU, JOIN_DOMAIN + ACCT_CREATE)
Next

If Err.Number <> 0 Then
    Set WshShell = CreateObject("WScript.Shell")
    message = WshShell.Popup ("Unable to join " & SystemName & " to the domain! Please join manually.",, "Error", 0 + 16)
Else
    Set WshShell = CreateObject("WScript.Shell")
    message = WshShell.Popup ("Domain joining was successful!",, "Success!", 0 + 64)
End If

Err.Clear
person VoidnessMD    schedule 12.08.2012