Posted On May 27, 2020

Hyper-V: Clone Linux Guest VM

kimconnect 0 comments
blog.KimConnect.com >> Virtualization >> Hyper-V: Clone Linux Guest VM

There are two methods of cloning an existing guest VM: Templating and Copying. Templating has the issue of the clone retaining the original file name of the source. Therefore, it’s cleaner to follow the copying path to recreate machines.

# Step 1: Copy the .vhdx file to a new destination with a new name

$goldVhdxFile="\\SOMESHERVER\goldImages\CentOS8.vhdx"
$newName='AREA051'
$newPath='\\SOMESHERVER'
$newVhdxFile="$newPath\$newName.vhdx"
New-Item -ItemType File -Path $newVhdxFile -Force # touch before copying contents
Copy-Item $goldVhdxFile -Destination $newVhdxFile

# Step 2: Create New VM using an existing .vhdx file

$memory='8GB'
$switch='ExternalSwitch'
New-VM -Name $newName -MemoryStartupBytes $memory -Generation 2 -Switch $switch  -BootDevice VHD -VHDPath $newVhdxFile -Path $newPath

# Step 3: start-up VM

Start-VM -Name $newName
VMConnect.exe $env:computername $newName

# Step 4: change machine settings

sudo rm -f /etc/udev/rules.d/70-persistent-net.rules # clear persistent net rules
sudo nmtui # set hostname, IP address, gateway, and DNS
sudo reboot # restart machine

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Post

Hyper-V: De-register Storage File Share and/or Removing Paths from VMM

# vmmDeregisterFileSharePath.ps1 $pathSearch='\\DECOMMISSIONED-FILESHARE008' $unregister=$true $remove=$false $fileShares=Get-SCStorageFileShare|?{$_.SharePath -like "*$pathSearch*"} $thisLibraryServer = Get-SCLibraryServer if($unregister){$fileShares|%{Unregister-SCStorageFileShare -StorageFileShare $_ -LibraryServer…

PowerShell: Get Hyper-V Host Name from Inside Guest VM

$guestVMName="SOMENAME"function getHyperVHostname{ param([string]$guestVMName=$env:computername) $hive = [Microsoft.Win32.RegistryHive]::LocalMachine; $keyPath = 'SOFTWARE\Microsoft\Virtual Machine\Guest\Parameters'; $value = 'HostName'; $reg =…

PowerShell: Get Quorums of All Clusters in the Domain

# getClusterQuorum.ps1 function getClusterQuorum{ $allClusters=(get-cluster -domain $env:USERDNSDOMAIN).Name $results=@{} foreach ($cluster in $allClusters){ $quorum=Get-ClusterQuorum -Cluster $cluster…