From 90cbdd85e1d95f2d4e55f5a6cea07f193d14dcc5 Mon Sep 17 00:00:00 2001 From: uchagani Date: Thu, 23 Oct 2014 02:27:05 -0400 Subject: [PATCH] Rename Windows guest without reboot --- .../guests/windows/cap/change_host_name.rb | 29 +++++++++++++++---- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/plugins/guests/windows/cap/change_host_name.rb b/plugins/guests/windows/cap/change_host_name.rb index fa48a3137..c7f3f248a 100644 --- a/plugins/guests/windows/cap/change_host_name.rb +++ b/plugins/guests/windows/cap/change_host_name.rb @@ -14,12 +14,31 @@ module VagrantPlugins # Rename and reboot host if rename succeeded script = <<-EOH - $computer = Get-WmiObject -Class Win32_ComputerSystem - $retval = $computer.rename("#{name}").returnvalue - if ($retval -eq 0) { - shutdown /r /t 5 /f /d p:4:1 /c "Vagrant Rename Computer" + try + { + $computer = Get-WmiObject -Class Win32_ComputerSystem + $computer.rename("#{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 "#{name}" + Set-ItemProperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\Computername\ActiveComputername" -name "Computername" -value "#{name}" + Set-ItemProperty -path "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" -name "Hostname" -value "#{name}" + Set-ItemProperty -path "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" -name "NV Hostname" -value "#{name}" + Set-ItemProperty -path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" -name "AltDefaultDomainName" -value "#{name}" + Set-ItemProperty -path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" -name "DefaultDomainName" -value "#{name}" + Set-ItemProperty -path "HKCU:\Volatile Environment" -name "LOGONSERVER" -value "#{name}" + [Environment]::SetEnvironmentVariable("COMPUTERNAME", "#{name}", "User") + + exit 0 + } + catch + { + exit -1 } - exit $retval EOH machine.communicate.execute(