[VBS] Domäne und PC-Namen ändern

Raknar

Ensign
Registriert
Apr. 2006
Beiträge
174
Guten Abend,

ich bin gerade dabei in VBscript ein Script zu schreiben, welches den PC-Namen ändert und den Computer in eine andere Domäne hängt. Leider klappt es nicht so ganz. Vielleicht kann mir einer von euch sagen, was ich anders machen muss.

Code:
Sub aendern()
 
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
Dim message
Dim IP
 
 
strDomain = "gruppe" '<DOMAIN NAME>
strUser = "User" '<UserName>
strPassword = "password123" '<ADMIN PASSWORD>
 
Set objNetwork = CreateObject("WScript.Network")
strComputer = objNetwork.ComputerName
 
Set objWMIService = GetObject("winmgmts:" & "!\\" & strComputer & "\root\cimv2")
Set colAdapters = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled = True")
 
Title = "Join computer to domain"
message = "Please enter computer name. Leave blank or press cancel to quit. & vbCrLf & vbCrLf & Generated name: " & generatedName
newComputerName = InputBox(message, Title)
 
 
If newComputerName = "" Then
    Wscript.Quit
End If
 
areYouSure = MsgBox("Are you sure you want t0 add computer to domain with name:" & vbCrLf & vbCrLf & newComputerName, vbYesNo + vbQuestion, "Add computer to domain")
 
If areYouSure = "7" Then
    MsgBox "Exiting script.", vbInformation
    Wscript.Quit
End If
 
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
 
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
 
Set colComputers = objWMIService.ExecQuery _
    ("Select * from Win32_ComputerSystem")
 
 
For Each objComputer In colComputers
    MsgBox "About to rename computer to: " & newComputerName
        ErrCode = objComputer.Rename(newComputerName, strPassword, strUser)
    If ErrCode = 0 Then
        MsgBox "Computer renamed correctly."
    Else
        MsgBox "Eror changing computer name. Error code: " & ErrCode
    End If
 
Next
 
End Sub

Edit: Ich brauche auch nur ein Script oder Programm, das diese beiden Aufgaben erfüllt. Am besten mit nur einem Neustart. Da ich mich mit Batch-Programmierung nicht so gut auskenne, habe ich VBS genommen. Wenn also jemand schon mal so etwas gemacht hat, würde ich mich über Ratschläge freuen.
 
Zuletzt bearbeitet: (Ergänzung)
Ich würd ungern einen Rechner bei mir aus der Domäne nehmen damit ich seh was "nicht ganz" klappt... Kannst du vielleicht genauer sagen was das Problem ist?

Klappt das außerdem händisch? Bei uns ist die AD so konfiguriert dass man nur nicht vorhandene Rechner joinen kann, für einen rejoin muss man erst das Computerobjekt in der AD löschen

edit:

eine Sache die sicher nicht richtig ist ist das

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


das gehört so

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

Und ich nehme mal an du hast aus datenschutzgründen die OU geändert weil natürlich gehört da die richtige OU rein....

Schlussendlich weiß ich nicht obs wirklich relevant ist, aber mir käms sinnvoller vor den namen des Computers vor dem join zu ändern
 
Zuletzt bearbeitet:
Zurück
Oben