Below Script will help Cross vCenter Migration

Write-Host “###########################################################################”
Write-Host “############## Cross vCenter Migration Script Version 1.0 ###############”
Write-Host “############## by Muneer Hussain. K – [email protected] ###############”

Write-Host “###########################################################################”
Write-Host “######################## Source vCenter Details #####################”
Write-Host “###########################################################################”

$sourceVC = Read-Host “Enter Source vCenter FQDN ”
$sourceVCUserName = Read-Host “Enter Source vCenter User Name ”
$sourceVCPassword = Read-Host “Enter Source vCenter Password ” -AsSecureString
$Credentials = New-Object System.Management.Automation.PSCredential `
-ArgumentList $sourceVCUserName, $sourceVCPassword
$SCPlainPassword = $Credentials.GetNetworkCredential().Password

Write-Host “$sourceVC $sourceVCUserName $sourceVCPassword”

Write-Host “###########################################################################”
Write-Host “##################### Destination vCenter Details ###################”
Write-Host “###########################################################################”

$destVC = Read-Host “Enter Destination vCenter FQDN Name ”
$destVCUserName = Read-Host “Enter Destination vCenter User Name ”
$destVCPassword = Read-Host “Enter Destination vCenter Password ” -AsSecureString
$DSCredentials = New-Object System.Management.Automation.PSCredential `
-ArgumentList $destVCUserName, $destVCPassword
$DSPlainPassword = $DSCredentials.GetNetworkCredential().Password
$destHostName = Read-Host “Enter Destination Host FQDN Name ”
$destDataStoreName = Read-Host “Enter Destination DataStore Name ”
$destSwitchName = Read-Host “Enter Destination Swith/vDS Name ”
$destNetworkName = Read-Host “Enter Destination Network Name ”
Write-Host “$destVC $destVCUserName $destVCPassword $destHostName $destDataStoreName $destSwitchName $destNetworkName”

Write-Host “###########################################################################”
Write-Host “################# Connecting to Both vCenter Servers ################”
Write-Host “###########################################################################”

$sourceVCConnection = Connect-VIServer -Server $sourceVC -user $sourceVCUserName -password $SCPlainPassword
Write-Host -foregroundcolor Yellow “Connected to Source vCenter…”
$destVCConnection = Connect-VIServer -Server $destVC -user $destVCUserName -password $DSPlainPassword
Write-Host -foregroundcolor Yellow “Connected to Destination vCenter…”

Write-Host “###########################################################################”
Write-Host “######################### Source VM Details ########################”
Write-Host “###########################################################################”

$sourceVMName = Read-Host “Enter Source VM Name ”
$sourceVM = Get-VM $sourceVMName -Server $sourceVCConnection
$sourceVMNetworkAdapter = Get-NetworkAdapter -VM $sourceVM -Server $sourceVCConnection

Write-Host “###########################################################################”
Write-Host “############################ VM Migration ###########################”
Write-Host “###########################################################################”

$destHost = Get-VMHost -name $destHostName -Server $destVCConnection

$destPortGroup = Get-VDPortgroup -VDSwitch $destSwitchName -Name $destNetworkName -Server $destVCConnection

$destDataStore = Get-Datastore $destDataStoreName -Server $destVCConnection

Move-VM -VM $sourceVM -Destination $destHost -NetworkAdapter $sourceVMNetworkAdapter -PortGroup $destPortGroup -Datastore $destDataStore

Write-Host “###########################################################################”
Write-Host “######################## Migrated VM Details ########################”
Write-Host “###########################################################################”

Write-Host -foregroundcolor Cyan “`nVM is now running on:”
#Drawline
Get-VM $sourceVM | Get-NetworkAdapter | Select-Object @{N=”VM Name”;E={$_.Parent.Name}},@{N=”Cluster”;E={Get-Cluster -VM $_.Parent}},@{N=”ESXi Host”;E={Get-VMHost -VM $_.Parent}},@{N=”Datastore”;E={Get-Datastore -VM $_.Parent}},@{N=”Network”;E={$_.NetworkName}} | Format-List

Write-Host “###########################################################################”
Write-Host “#################### Disconnect from both vCenter ###################”
Write-Host “###########################################################################”

Disconnect-VIServer -Server * -Force -Confirm:$false

Tags:

Leave a Reply

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