Skip to content

Instantly share code, notes, and snippets.

@timnew
Last active May 23, 2024 13:50
Show Gist options
  • Save timnew/2373475 to your computer and use it in GitHub Desktop.
Save timnew/2373475 to your computer and use it in GitHub Desktop.
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"
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
@thangvc91
Copy link

Hi Cotarelo ,
I would like to ask you about you comment on July 27 2017 , could you please help a full code after adding the "-join ((65..90) + (97..122) | Get-Random -Count 5 | % {[char]$_})".I don't know where i can put the code. Sorry for my bad question ?

@uluQulu
Copy link

uluQulu commented Dec 21, 2018

Thanks @timnew, worked flawlessly on Windows 7 Home Basic.

I just also had to run,
Set-ExecutionPolicy RemoteSigned
at C:\Windows\SysWOW64\WindowsPowerShell\v1.0\ powershell.exe as Administrator (thanks to Glen Little).

@fragtion
Copy link

Worked great. Thank you

@linotes
Copy link

linotes commented Oct 30, 2019

Thanks, man. It really helps out a lot.

@rererecursive
Copy link

rererecursive commented Jul 14, 2020

This breaks Powershell/other applications if the hostname is too long. For example, run it with $ComputerName = "hello.there.my.name.is.john" and then open another Powershell window; you'll find a cryptic error message. My guess is something is breaks in the registry.

@sebma
Copy link

sebma commented Nov 25, 2020

@timnew Congratulations for this great script.

Can you please add some restrictions on the new name before actually applying the new name to windows, that is to say : forbid names containing . or spaces just like the warning printed by the netdom.exe tool :

The syntax of the new computer name, WORD1.WORD2
is incorrect. A computer name (DNS host label) may contain letters (a-z, A-Z),
numbers (0-9), and hyphens, but no spaces or periods (.).

The filename, directory name, or volume label syntax is incorrect.

The command failed to complete successfully.

@sebma
Copy link

sebma commented Nov 25, 2020

@timnew The reboot might not be needed, but my question is : Do I need to kill all explorer.exe instances and relaunch one for the new registry key to be reloaded ?

@PharQ
Copy link

PharQ commented Mar 5, 2021

i'm trying to rename my PC to its IP address this is what I have but i get an error saying the syntax of the command is incorrect

@echo off
SET /P < ipaddress >
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName /v ComputerName /t REG_SZ /d %PCNAME% /f

@overdrive80
Copy link

overdrive80 commented Feb 5, 2023

@echo off

set "cName=ROG-ISRA"
set "OEM=ROG STRIX B650E-F GAMING WIFI"

REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OEMInformation" /t REG_SZ /v Model /d "%OEM%" /f

wmic computersystem where name="%computername%" call rename name="%cName%"

REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v "Hostname" /d %cName% /f
REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v "NV Hostname" /d  %cName% /f

set "sysSets=SystemSettings.exe"

tasklist /fi "ImageName eq %sysSets%" /fo csv 2>NUL | find /I "%sysSets%">NUL
if "%ERRORLEVEL%"=="0" (
	taskkill /F /IM %sysSets% 
	start ms-settings:
)

EDIT: More simply and best

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment