シナリオ:管理者の資格情報を持つドメインでComputerAを使用しています。リモートComputerB(既知の管理者資格を持つ)はワークグループにあります。ComputerBは、アクティブなComputerAクレデンシャルが実行する権限を持つ指定されたOUの特定のドメイン(ComputerAとは異なる)に参加する必要があります。NETDOMなどの外部プログラムを使用できず、VBScriptを使用したい。
どんな助けでも大歓迎です!
これを試してみてください、私は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
私は実際にこれを自分で解決することができました。将来のコーダーのためのコードは次のとおりです。
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