Vbscript 如何将工作组计算机远程加入域

Vbscript 如何将工作组计算机远程加入域,vbscript,dns,workgroup,ou,Vbscript,Dns,Workgroup,Ou,场景:我在具有管理员凭据的域中使用ComputerA。远程计算机B(具有已知的管理员凭据)位于工作组中。ComputerB需要加入指定OU中的特定域(与ComputerA不同),我的活动ComputerA凭据有权这样做。我不能使用诸如NETDOM之类的外部程序,而更喜欢使用VBScript 非常感谢您的帮助 试试这个,我改编了一段来自 事实上,我自己就能解决这个问题。以下是未来编码人员的代码: Const JOIN_DOMAIN = 1 Const ACCT_CREATE

场景:我在具有管理员凭据的域中使用ComputerA。远程计算机B(具有已知的管理员凭据)位于工作组中。ComputerB需要加入指定OU中的特定域(与ComputerA不同),我的活动ComputerA凭据有权这样做。我不能使用诸如NETDOM之类的外部程序,而更喜欢使用VBScript


非常感谢您的帮助

试试这个,我改编了一段来自


事实上,我自己就能解决这个问题。以下是未来编码人员的代码:

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
Const JOIN\u DOMAIN=1
Const ACCT_CREATE=2
常量帐户删除=4
常量WIN9X_升级=16
常量域\u JOIN\u如果\u JOIN=32
Const JOIN_UNSECURE=64
Const MACHINE\u PASSWORD\u PASSED=128
常量延迟\u SPN\u集=256
Const INSTALL_调用=262144
常量WbemAuthenticationLevelPktPrivacy=6
SystemName=“ComputerB”
strNamespace=“root\cimv2”
ComputerBLogin=“登录”
ComputerBPass=“密码”
ComputerALogin=“登录”
ComputerAPass=“密码”
DomainName=“domain.com”
OU=“OU=desiredou,DC=domain,DC=com”
设置objWbemLocator=CreateObject(“WbemScripting.SWbemLocator”)
设置objWMIService=objwbemLocator.ConnectServer(SystemName、strNamespace、ComputerBLogin、ComputerBPass)
objWMIService.Security\uux.authenticationLevel=WbemAuthenticationLevelPktPrivacy
设置colComputers=objWMIService.ExecQuery_
(“从Win32\U计算机系统中选择*)
对于colComputers中的每个对象计算机
ReturnValue=objComputer.JoinDomainOrWorkGroup(域名、ComputerAPass、ComputerALogin、OU、加入域+帐户创建)
下一个
如果错误号为0,则
设置WshShell=CreateObject(“WScript.Shell”)
message=WshShell.Popup(“无法加入”&SystemName&“域!请手动加入。”,“错误”,0+16)
其他的
设置WshShell=CreateObject(“WScript.Shell”)
message=WshShell.Popup(“域加入成功!”,“成功!”,0+64)
如果结束
呃,明白了

谢谢你的回答,但最终我自己解决了。然后请接受其中一个答案,否则想帮忙的人会继续打开这个问题。我最初尝试过,但由于某种原因,我等了3个小时才真正检查它。由于我没有3个小时的时间坐在那里,我自然就忘记了这件事。现在应该检查一下。
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