Q: I'm trying to use Windows PowerShell to enable a Windows Server 2012 Hyper-V host to be Live Migration-enabled by setting the VirtualMachineMigrationEnabled attribute to $true--so why am I getting an error?

A: If a host is enabled for Live Migration, then its VirtualMachineMigrationEnabled attribute is set to true, for example:

PS C:\> (Get-VMHost savdalhv01).VirtualMachineMigrationEnabled
True

However, if you actually try and enable Live Migration by setting this value, you will get an error message saying that this attribute is read-only:

 

PS C:\> (Get-VMHost savdalhv01).VirtualMachineMigrationEnabled = $true
'VirtualMachineMigrationEnabled' is a ReadOnly property.
At line:1 char:1
+ (Get-VMHost savdalhv01).VirtualMachineMigrationEnabled = $true
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : PropertyAssignmentException

 

To enable Live Migration you actually need to use the Enable-VMMigration cmdlet. Also remember you might want to also set the networks that can be used for Live Migration by using the Set-VMMigrationNetwork cmdlet. And you might also want to set the authentication method with the Set-VMHost -VirtualMachineMigrationAuthenticationType. For example:

PS C:\> Enable-VMMigration
PS C:\> Set-VMMigrationNetwork 10.1.2.1
PS C:\> Set-VMHost -VirtualMachineMigrationAuthenticationType Kerberos