Frank Denneman posted today about disallowing multiple VM console session in a high-secure virtual infrastructure design: http://frankdenneman.nl/2010/11/disallowing-multiple-vm-console-sessions
The first thing popped up in my mind was why not automate this setting with PowerCLI. So I created a function called Set-MaxMKSConnections:
Function Set-MaxMKSConnections{ param( [parameter(Mandatory = $true)] [string[]]$vmName, $Sessions ) $vmConfigSpec = New-Object VMware.Vim.VirtualMachineConfigSpec $extra = New-Object VMware.Vim.optionvalue $extra.Key="RemoteDisplay.maxConnections" $extra.Value="$Sessions" $vmConfigSpec.extraconfig += $extra $vm = Get-VM $vmName | Get-View $vm.ReconfigVM($vmConfigSpec) }
You can run this function by copying the code into the PowerCLI window. To run it on a single VM, you can use the following line:
Set-MaxMKSConnections -vmName Thinapp -Sessions 1
To run it on all your VM’s, you can use the following foreach loop:
$vms = Get-VM foreach($vm in $vms){ Set-MaxMKSConnections -vmName $vm -Sessions 1 }
The configuration is changed even on Virtual Machines that are powered on (you need to restart the VM to activate the new setting):
If you want to raise the maxConnections value back to 2 or another value, you can change the –Sessions parameter with the correct value and run the script again.