HaeMHuK

Rename pc and Join to domain

42 posts in this topic

I am trying to write script which rename pc and join it to domain.

I've found something like I need () but it didn't work as I want.

#include <GUIConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 625, 443, 193, 125)

Global Const $JOIN_DOMAIN = 1
Global Const $ACCT_CREATE = 2


;User / Domain Data

$strComputer = GUICtrlCreateInput("PCNAME", 88, 56, 217, 21)
$strAdminAccount = GUICtrlCreateInput("DOMAIN USERNAME", 88, 86, 217, 21)
$strAdminPass = GUICtrlCreateInput("PASSWRD", 88, 116, 217, 21)
$jdom = GUICtrlCreateButton("Join", 88, 146, 217, 21)

GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

    While 1
        $msg = GUIGetMsg()
           
Switch $msg
  Case $GUI_EVENT_CLOSE
            ExitLoop
       
case $jdom

;Rename Computer
$strComputer1 = GUICtrlRead($strComputer)

$objWMIService = ObjGet("winmgmts:\\.\root\cimv2")
   
For $colCompSystems in $objWMIService.InstancesOf("Win32_ComputerSystem")
    $sReturn = $colCompSystems.Rename($strComputer1)
    If $sReturn <> 0 Then
        MsgBox(0,"Fail","Rename failed.  Error = " & @error & @CRLF & "Exiting script.")
        Exit
    Else
        MsgBox(0,"Rename","Rename successful.")
        EndIf
Next   
;Join to Domain


$strAdminAccount1 = GUICtrlRead($strAdminAccount)
$strAdminPass1 = GUICtrlRead($strAdminPass)
$strDomainName = "DOMAIN.COM"
$strComputer1 = GUICtrlRead($strComputer)

$objWMIService = ObjGet("winmgmts:" & "{impersonationLevel=impersonate}!\\" & $strComputer1 & "\root\cimv2")
$colCompSystems = $objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem")

For $objCompSystem In $colCompSystems
 MsgBox(0, 'Joining Domain', "Computer Name: " & $objCompSystem.Name & @CRLF & @CRLF & "Domain - Before: " & $objCompSystem.Domain)
 
  $intJoinDomain = $objCompSystem.JoinDomainOrWorkgroup($strDomainName, $strAdminPass1, $strDomainName & '\' & $strAdminAccount1, '', $JOIN_DOMAIN + $ACCT_CREATE)
  If $intJoinDomain = 0 Then
    MsgBox(0, @ScriptName, "Joined computer to " & $strDomainName & " domain.")
  ElseIf $intJoinDomain = 1 Then
    MsgBox(0, @ScriptName, "Joined computer to " & $strDomainName & " domain." & @CRLF & "  Must reboot.")
Else
    EndIf
Next
    EndSwitch
    WEnd

This script doesn't join pc to domain because it doesn't recognize new pc name before restarting. So if the pc wasn't restarted I couldn't join to domain with new name. Please, help me to reedit it.

Share this post


Link to post
Share on other sites



You have to reboot after renaming the computer and after joining the computer to the domain as well.


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

#3 ·  Posted (edited)

Yes, I know it. But If I use Windows Wizard (Computer properties - Network ID - ...) all this things could be done in one action. I mean I don't need to restart PC after renaming to join it to domain.

Edited by HaeMHuK

Share this post


Link to post
Share on other sites

Yes, I know it. But If I use Windows Wizard (Computer properties - Network ID - ...) all this actions could be done in one action.

No. It can't.

I mean I don't need to restart PC after renaming to join it to domain.

Yes you do.

I went over and over this about a year ago trying to do the same thing and the only method I could get to join a domain successfully and reliably with the new computer name was to reboot it before joining to the domain.

Share this post


Link to post
Share on other sites

No. It can't.

Yes you do.

I went over and over this about a year ago trying to do the same thing and the only method I could get to join a domain successfully and reliably with the new computer name was to reboot it before joining to the domain.

Well, I've tried to add PC to domain through the Network ID. It changed PC name and joined it to domain and only after this two actions I had rebooted PC. Like here: http://www.wpi.edu/academics/CCC/Help/Network/Setup/winxp.html

Share this post


Link to post
Share on other sites

Kor you are wrong, I don't know about that program but I have a script somewhere that can rename and join the domain with the new name all without restarting. I've used it in production and it works fine. I'll try and dig it out.

Share this post


Link to post
Share on other sites

#7 ·  Posted (edited)

Kor you are wrong, I don't know about that program but I have a script somewhere that can rename and join the domain with the new name all without restarting. I've used it in production and it works fine. I'll try and dig it out.

For what OS? I've never been able to get an XP machine to RELIABLY rename and join a domain without a restart in between. Edited by kor

Share this post


Link to post
Share on other sites

I have this one from skinny white guy, I didnt use the domain stuff (though it remains, just commented out), but the name changing works on the fly.

;====================================================================================
; Fix Computer Name & Workgroup Name Script
; by: tHe SkInNy WhItE GuY
; 03-06-2007
;====================================================================================

; Initialize Settings
#include <GUIConstants.au3>
#NoTrayIcon
#include <Constants.au3>



Global $OldName = @ComputerName

; Initialize Variables Needed
Dim $CompName, $Workgroup, $dir_create

; Build Forms to ask User for New Name and Workgroup Selection Box
Opt("GUIOnEventMode", 1)
$mainwindow = GUICreate("Name Changer", 200, 120)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
GUICtrlCreateLabel("Enter the Name and workgroup to set on this computer", 10, 10, 180, 30)
GUICtrlCreateLabel("Name", 10, 40, 70, 20)
;~ GUICtrlCreateLabel("Workgroup", 10, 60, 70, 20)
$inp_name = GUICtrlCreateInput("", 80, 40, 100, 20)
;~ $inp_group = GUICtrlCreateInput("", 80, 60, 100, 20)
$set = GUICtrlCreateButton("Set", 70, 90, 60)
GUICtrlSetOnEvent($set, "Set_Names")
GUISetState(@SW_SHOW)

While 1
    Sleep(1000) ; Idle around
WEnd

Func Set_Names()
; Name & Workgroup Name
    $CompName = GUICtrlRead($inp_name, 1)
;~     $Workgroup = GUICtrlRead($inp_group, 1)
    GUICtrlSetState($inp_name, $GUI_DISABLE)
;~     GUICtrlSetState($inp_group, $GUI_DISABLE)
    GUICtrlSetData($set, "Updating...")
    GUICtrlSetState($set, $GUI_DISABLE)

; Install needed files onto the computer
;~     FileInstall ("NetDom.exe", @TempDir & "NetDom.exe", 1)

; Make some registry changes to also change the Name now
    RegDelete ("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters", "Hostname")
    RegDelete ("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters", "NV Hostname")

    RegWrite ("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Computername\Computername", "Computername", "REG_SZ", $CompName)
    RegWrite ("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Computername\ActiveComputername", "Computername", "REG_SZ", $CompName)
    RegWrite ("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters", "Hostname", "REG_SZ", $CompName)
    RegWrite ("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters", "NV Hostname", "REG_SZ", $CompName)
    RegWrite ("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "AltDefaultDomainName", "REG_SZ", $CompName)
    RegWrite ("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "DefaultDomainName", "REG_SZ", $CompName)
    RegWrite ("HKEY_USERS\.Default\Software\Microsoft\Windows Media\WMSDK\General", "Computername", "REG_SZ", $CompName)

; change Workgroup with Netdom.exe
;~     RunWait (@TempDir & "Netdom.exe Member \\" & $CompName & " /JOINWorkgroup " & $Workgroup, "", @SW_HIDE)

; Remove needed files
;~     FileDelete (@TempDir & "NetDom.exe")



    MsgBox(0, "Done", "Computer was renamed from " & $OldName & "to " & $CompName & ".")
;~     GUICtrlSetState($inp_name, $GUI_ENABLE)
;~     GUICtrlSetState($inp_group, $GUI_ENABLE)
;~     GUICtrlSetData($set, "Set")
;~     GUICtrlSetState($set, $GUI_ENABLE)



EndFunc  ;==>Set_Names

Func CLOSEClicked()
    run ("shutdown -r -t 0")
    Exit
EndFunc  ;==>CLOSEClicked

,-. .--. ________ .-. .-. ,---. ,-. .-. .-. .-.
|(| / /\ \ |\ /| |__ __||| | | || .-' | |/ / \ \_/ )/
(_) / /__\ \ |(\ / | )| | | `-' | | `-. | | / __ \ (_)
| | | __ | (_)\/ | (_) | | .-. | | .-' | | \ |__| ) (
| | | | |)| | \ / | | | | | |)| | `--. | |) \ | |
`-' |_| (_) | |\/| | `-' /( (_)/( __.' |((_)-' /(_|
'-' '-' (__) (__) (_) (__)

Share this post


Link to post
Share on other sites

#9 ·  Posted (edited)

Well I didn't wanna dig through a huge script to see what we used in production but I believe I used this in testing.

I didn't really have that many variables since a lot of it was just put inline. I pulled it out to make it easier to edit.

#include "EnvUpdate.au3"


$CompName = 'BA-Test'
$ou = 'ou=*****,ou="**** *******",ou=***,dc=***,dc=**,dc=***,dc=***'
$fulldomain = '***.**.***.***'
$domain = '***'
$user = '***********'
$password = '***********'

; http://msdn.microsoft.com/en-us/library/ms724931(v=VS.85).aspx
; Parameter int 5 = ComputerNamePhysicalDnsHostname
$result = DllCall("Kernel32.dll", "BOOL", "SetComputerNameEx", "int", 5, "str", $CompName)
If $result[0] = 0 Then MsgBox(0, "Error: Kernel32.dll", "SetComputerNameEx() Failed. Return code: " & $result[0])
RegWrite("HKLM\SYSTEM\CurrentControlSet\Control\Computername\ActiveComputername", "ComputerName", "REG_SZ", $CompName)
RegWrite("HKLM\SYSTEM\CurrentControlSet\Control\Computername\Computername", "ComputerName", "REG_SZ", $CompName)
RegWrite("HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters", "Hostname", "REG_SZ", $CompName)
RegWrite("HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters", "NV Hostname", "REG_SZ", $CompName)
RegWrite("HKEY_USERS\.Default\Software\Microsoft\Windows Media\WMSDK\General", "Computername", "REG_SZ", $CompName)
_EnvUpdate("COMPUTERNAME", $CompName, False, True)

; http://msdn.microsoft.com/en-us/library/aa370433(VS.85).aspx
$result = DllCall("Netapi32.dll", "long", "NetJoinDomain", "int", 0, "wstr", $fulldomain, "wstr", $ou, "wstr", $domain & "\" & $user, "wstr", $password, "dword", 0x00000423)
MsgBox(0, "1", "Return: " & $result[0] & @CRLF & "Error code: " & @error)
; If Dll returned anything but 0 then it failed Try again without creating an object in case it failed because the object already existed.
If $result[0] Then
    $result = DllCall("Netapi32.dll", "long", "NetJoinDomain", "int", 0, "wstr", $fulldomain, "wstr", $ou, "wstr", $domain & "\" & $user, "wstr", $password, "dword", 0x00000421)
    MsgBox(0, "2", "Return: " & $result[0] & @CRLF & "Error code: " & @error)
EndIf

RegWrite("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "AltDefaultDomainName", "REG_SZ", $domain)
RegWrite("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "DefaultDomainName", "REG_SZ", $domain)

And the EnvUpdate.au3 I found somewhere here on the forums but here it is so you don't have to search.

#include-once
; #INDEX# =======================================================================================================================
; Title .........: Environment Update
; AutoIt Version.: 3.2.12++
; Language.......: English
; Description ...: Refreshes the OS environment.
; Author ........: João Carlos (jscript)
; Support .......: trancexx, PsaltyDS, KaFu
; ===============================================================================================================================

; #CURRENT# =====================================================================================================================
;_EnvUpdate
; ===============================================================================================================================

; #INTERNAL_USE_ONLY# ===========================================================================================================
; ===============================================================================================================================

; #VARIABLES# ===================================================================================================================
Global $MAX_VALUE_NAME = 1024
Global $HWND_BROADCAST = 0xffff
Global $WM_SETTINGCHANGE = 0x001A
Global $SMTO_ABORTIFHUNG = 0x0002
Global $SMTO_NORMAL = 0x0000
Global $MSG_TIMEOUT = 5000

; #Example# =====================================================================================================================
;_EnvUpdate("VERSION", "7.07.0110.2600")
;MsgBox(4096, @error, EnvGet("VERSION"))
;_EnvUpdate("VERSION", "", True, True)
;MsgBox(4096, @error, EnvGet("VERSION"))
; ===============================================================================================================================

; #FUNCTION# ====================================================================================================================
; Name...........: _EnvUpdate
; Description ...: Refreshes the OS environment.
; Syntax.........: _EnvUpdate( ["envvariable" [, "value" [, CurrentUser [, Machine ]]]] )
; Parameters ....: envvariable  - [optional] Name of the environment variable to set. If no variable, refreshes all variables.
;                  value        - [optional] Value to set the environment variable to. If a value is not used the environment
;                                   variable will be deleted.
;                  CurrentUser  - [optional] Sets the variable in current user environment.
;                  Machine      - [optional] Sets the variable in the machine environment.
; Return values .: Success      - None
;                  Failure      - Sets @error to 1.
; Author ........: João Carlos (jscript)
; Support .......: trancexx, PsaltyDS, KaFu
; Modified.......:
; Remarks .......:
; Related .......:
; Link ..........;
; Example .......; _EnvUpdate("TEMP", @SystemDir & "TEMP", True, True)
; ===============================================================================================================================
Func _EnvUpdate($sEnvVar = "", $vValue = "", $fCurrentUser = True, $fMachine = False)
    Local $sREG_TYPE = "REG_SZ", $iRet1, $iRet2

    If $sEnvVar <> "" Then
        If StringInStr($sEnvVar, "\") Then $sREG_TYPE = "REG_EXPAND_SZ"
        If $vValue <> "" Then
            If $fCurrentUser Then RegWrite("HKCU\Environment", $sEnvVar, $sREG_TYPE, $vValue)
            If $fMachine Then RegWrite("HKLM\System\CurrentControlSet\Control\Session Manager\Environment", $sEnvVar, $sREG_TYPE, $vValue)
        Else
            If $fCurrentUser Then RegDelete("HKCU\Environment", $sEnvVar)
            If $fMachine Then RegDelete("HKLM\System\CurrentControlSet\Control\Session Manager\Environment", $sEnvVar)
        EndIf
        ; http://msdn.microsoft.com/en-us/library/ms686206%28VS.85%29.aspx
        $iRet1 = DllCall("Kernel32.dll", "BOOL", "SetEnvironmentVariable", "str", $sEnvVar, "str", $vValue)
        If $iRet1[0] = 0 Then Return SetError(1)
    EndIf
    ; http://msdn.microsoft.com/en-us/library/ms644952%28VS.85%29.aspx
    $iRet2 = DllCall("user32.dll", "lresult", "SendMessageTimeoutW", _
            "hwnd", $HWND_BROADCAST, _
            "dword", $WM_SETTINGCHANGE, _
            "ptr", 0, _
            "wstr", "Environment", _
            "dword", $SMTO_ABORTIFHUNG, _
            "dword", $MSG_TIMEOUT, _
            "dword_ptr*", 0)

    If $iRet2[0] = 0 Then Return SetError(1)
EndFunc   ;==>_EnvUpdate

Edit: And this was used and tested on XP only.

Edited by ShawnW

Share this post


Link to post
Share on other sites

ShawnW

Thanks a lot. It works perfect.

Share this post


Link to post
Share on other sites

Hi,

This is a old thread but it correspond well with my problem.

When i try to use your solution ShawnW i get an error:

 
...EnvUpdate.au3 (21) : ==> Can not redeclare a constant.:
Global $WM_SETTINGCHANGE = 0x001A
Global ^ ERROR
 
Is there anyway to solve this? '?do=embed' frameborder='0' data-embedContent>>
 
I use Windows 7, and have tryed on Win XP too, but it gives the same result. So that´s not the case.

Share this post


Link to post
Share on other sites

That means an underlying include-file has been changed and the wm_settingchange constant already exists. Just comment the line out in the custom include, change

Global $WM_SETTINGCHANGE = 0x001A

to

; Global $WM_SETTINGCHANGE = 0x001A

Share this post


Link to post
Share on other sites

Thanks for your response KaFu!

I did as you asked,

Global $WM_SETTINGCHANGE = 0x001A  and "dword", $WM_SETTINGCHANGE, _ are both commented.

But in result I did get a new error massage: Error parsing function call. I guess that´s because the DLLCall is missing an argument.

I looked up DLLCall and all it´s arguments are optional, so it should not complain?

I hope you could help me some more here to find a solution =P

Share this post


Link to post
Share on other sites

Solved.

I have been here for 3 weeks, must say it´s a great community.

Share this post


Link to post
Share on other sites

iGoLike,

Delighted to hear that you enjoy the forum. :)

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

Thanks for your response KaFu!

I did as you asked,

Global $WM_SETTINGCHANGE = 0x001A  and "dword", $WM_SETTINGCHANGE, _ are both commented.

But in result I did get a new error massage: Error parsing function call. I guess that´s because the DLLCall is missing an argument.

I looked up DLLCall and all it´s arguments are optional, so it should not complain?

I hope you could help me some more here to find a solution =P

 

Solved.

I have been here for 3 weeks, must say it´s a great community.

IGoLike, how did you solve your problem of "Error parsing function call" ?  I'd like to use the script as well, but I'd like to avoid any errors if possible.

Thanks.

Share this post


Link to post
Share on other sites

#17 ·  Posted

On 31/07/2013 at 4:41 AM, iGoLike said:

Solved.

I have been here for 3 weeks, must say it´s a great community.

 

well about posting your example, realize the thread is 4years old. i have the exact same problem rename PC and addo workgroup on the fly (no reboot required) 

Share this post


Link to post
Share on other sites

#18 ·  Posted

On 19/01/2011 at 7:01 AM, HaeMHuK said:

I am trying to write script which rename pc and join it to domain.

I've found something like I need (

) but it didn't work as I want.

 

 

#include <GUIConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 625, 443, 193, 125)

Global Const $JOIN_DOMAIN = 1
Global Const $ACCT_CREATE = 2


;User / Domain Data

$strComputer = GUICtrlCreateInput("PCNAME", 88, 56, 217, 21)
$strAdminAccount = GUICtrlCreateInput("DOMAIN USERNAME", 88, 86, 217, 21)
$strAdminPass = GUICtrlCreateInput("PASSWRD", 88, 116, 217, 21)
$jdom = GUICtrlCreateButton("Join", 88, 146, 217, 21)

GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

    While 1
        $msg = GUIGetMsg()
           
Switch $msg
  Case $GUI_EVENT_CLOSE
            ExitLoop
       
case $jdom

;Rename Computer
$strComputer1 = GUICtrlRead($strComputer)

$objWMIService = ObjGet("winmgmts:\\.\root\cimv2")
   
For $colCompSystems in $objWMIService.InstancesOf("Win32_ComputerSystem")
    $sReturn = $colCompSystems.Rename($strComputer1)
    If $sReturn <> 0 Then
        MsgBox(0,"Fail","Rename failed.  Error = " & @error & @CRLF & "Exiting script.")
        Exit
    Else
        MsgBox(0,"Rename","Rename successful.")
        EndIf
Next   
;Join to Domain


$strAdminAccount1 = GUICtrlRead($strAdminAccount)
$strAdminPass1 = GUICtrlRead($strAdminPass)
$strDomainName = "DOMAIN.COM"
$strComputer1 = GUICtrlRead($strComputer)

$objWMIService = ObjGet("winmgmts:" & "{impersonationLevel=impersonate}!\\" & $strComputer1 & "\root\cimv2")
$colCompSystems = $objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem")

For $objCompSystem In $colCompSystems
 MsgBox(0, 'Joining Domain', "Computer Name: " & $objCompSystem.Name & @CRLF & @CRLF & "Domain - Before: " & $objCompSystem.Domain)
 
  $intJoinDomain = $objCompSystem.JoinDomainOrWorkgroup($strDomainName, $strAdminPass1, $strDomainName & '\' & $strAdminAccount1, '', $JOIN_DOMAIN + $ACCT_CREATE)
  If $intJoinDomain = 0 Then
    MsgBox(0, @ScriptName, "Joined computer to " & $strDomainName & " domain.")
  ElseIf $intJoinDomain = 1 Then
    MsgBox(0, @ScriptName, "Joined computer to " & $strDomainName & " domain." & @CRLF & "  Must reboot.")
Else
    EndIf
Next
    EndSwitch
    WEnd

This script doesn't join pc to domain because it doesn't recognize new pc name before restarting. So if the pc wasn't restarted I couldn't join to domain with new name. Please, help me to reedit it.

 

This a very good example, i was hopeful that i can solve immediately, however  i have 2 questions:

1. can someone point me where I can download netdom.exe

2. can netdom.exe be used with windows 10

Share this post


Link to post
Share on other sites

#19 ·  Posted

RSAT includes NetDom
https://support.microsoft.com/en-us/help/2693643/remote-server-administration-tools-rsat-for-windows-operating-systems

Although you can now use PowerShell to add a machine to the domain:

Add-Computer –DomainName Domain.local –Credential (Get-Credential)
https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.management/add-computer

1 person likes this

Share this post


Link to post
Share on other sites

#20 ·  Posted

Fantastic.

actually, i am joining a workgroup, thanks to your link  i  was able to download netdom.exe, however with PowerShell  how would i call that function in autoit, is that possible with PowerShellPowershell Script to Rename Computer without Reboot

$ComputerName = "New Name"
   
Remove-ItemProperty -path "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" -name "Hostname" 
Remove-ItemProperty -path "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" -name "NV Hostname" 

New-PSDrive -name HKU -PSProvider "Registry" -Root "HKEY_USERS"

Set-ItemProperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\Computername\Computername" -name "Computername" -value $ComputerName
Set-ItemProperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\Computername\ActiveComputername" -name "Computername" -value $ComputerName
Set-ItemProperty -path "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" -name "Hostname" -value $ComputerName
Set-ItemProperty -path "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" -name "NV Hostname" -value  $ComputerName
Set-ItemProperty -path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" -name "AltDefaultDomainName" -value $ComputerName
Set-ItemProperty -path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" -name "DefaultDomainName" -value $ComputerName
#Set-ItemProperty -path "HKU:\.Default\Software\Microsoft\Windows Media\WMSDK\General" -name "Computername" -value $ComputerName

PS C:\> Add-Computer -WorkGroupName "WORKGROUP-A"

thanks

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now