How to Configure Windows Server 2016 Virtual Machine Manager
System Center Virtual Machine Manager (VMM) is Microsoft’s centralized management platform for virtualized infrastructure. VMM provides a unified interface for managing Hyper-V hosts, VMware vSphere environments, storage fabrics, and private cloud resources built on Windows Server 2016. With VMM you can deploy and migrate virtual machines, manage virtual machine templates and service templates, configure storage and networking, assign self-service portals to tenants, and integrate with Azure for hybrid cloud management. This tutorial covers installing VMM 2016, adding Hyper-V hosts, creating virtual machine templates, deploying virtual machines, and configuring logical networks.
Prerequisites
You need a Windows Server 2016 server for VMM with at least 8 GB of RAM and 80 GB of disk, SQL Server 2016 for the VMM database, an Active Directory service account (svc-vmm) with local administrator rights on the VMM server, Windows Assessment and Deployment Kit (ADK) for Windows 10 installed, and a library share accessible to all Hyper-V hosts. All Hyper-V hosts must be running Windows Server 2016 and joined to the same Active Directory domain as the VMM server.
Step 1: Install Prerequisites
Install the Windows ADK and the required Windows features on the VMM server before running VMM setup.
Install-WindowsFeature `
NET-Framework-Features, `
NET-Framework-45-Features, `
RSAT-Hyper-V-Tools, `
Hyper-V-PowerShell `
-IncludeManagementTools
# Install Windows ADK silently (adjust path to downloaded ADK setup)
Start-Process 'C:Downloadsadksetup.exe' -ArgumentList `
'/features OptionId.DeploymentTools OptionId.WindowsPreinstallationEnvironment /q' `
-Wait
Step 2: Install VMM 2016
Run the VMM setup wizard from the installation media. Choose to install both the VMM Management Server and the VMM Console. Specify the SQL Server instance, service account, and library share path during the wizard. The setup process takes approximately 20 to 30 minutes.
# Unattended VMM installation (create VMM.ini before running)
Setup.exe /server /i /f C:VMMSetupVMM.ini /VMMServiceDomain CORP `
/VMMServiceUserName svc-vmm /VMMServiceUserPassword S3rv!ceP@ss2016
# Sample VMM.ini sections:
# ProgramFiles=C:Program FilesMicrosoft System Center 2016Virtual Machine Manager
# CreateNewSqlDatabase=1
# SqlInstanceName=SQL01MSSQLSERVER
# SqlDatabaseName=VirtualManagerDB
# SqlServerPort=1433
# LibraryServer=VMM01.corp.local
# LibraryPath=C:VMMLibrary
Step 3: Add the VMM Library Share
The VMM library stores virtual machine templates, ISO files, virtual hard disks, and scripts. Create a file share and add it to the VMM library using the VMM console or PowerShell.
Import-Module VirtualMachineManager
# Connect to VMM
Get-VMMServer -ComputerName 'VMM01.corp.local'
# Create the share on the VMM server
New-SmbShare -Name 'VMMLibrary' -Path 'C:VMMLibrary' `
-FullAccess 'CORPsvc-vmm','CORPDomain Admins' `
-ReadAccess 'Everyone'
# Add the share as a VMM library server
Add-SCLibraryShare -SharePath '\VMM01.corp.localVMMLibrary' `
-LibraryServer (Get-SCLibraryServer -ComputerName 'VMM01.corp.local')
# Refresh the library to discover existing files
Read-SCLibraryShare -LibraryShare (Get-SCLibraryShare | Where-Object {
$_.Name -eq 'VMMLibrary' })
Step 4: Add Hyper-V Hosts
Add Windows Server 2016 Hyper-V hosts to VMM management. VMM installs the VMM agent on the host automatically during the discovery process.
$credential = Get-Credential CORPAdministrator
# Add individual Hyper-V hosts
$hosts = @('hv01.corp.local', 'hv02.corp.local', 'hv03.corp.local')
foreach ($hvHost in $hosts) {
Add-SCVMHost -ComputerName $hvHost `
-Credential $credential `
-VMHostGroup (Get-SCVMHostGroup -Name 'All Hosts')
}
# Verify hosts were added successfully
Get-SCVMHost | Select-Object Name, OperatingSystem, CPUCount, TotalMemory, OverallState
Step 5: Configure Logical Networks
VMM logical networks abstract the physical network infrastructure and allow consistent network assignment in VM templates. Create logical networks that map to your physical VLANs or SDN networks.
# Create a logical network
$logNet = New-SCLogicalNetwork -Name 'Production Network' `
-LogicalNetworkDefinitionIsolation $false `
-EnableNetworkVirtualization $false
# Create a network site (subnet/VLAN combination)
$networkSite = New-SCLogicalNetworkDefinition -Name 'Production Site' `
-LogicalNetwork $logNet `
-HostGroup (Get-SCVMHostGroup 'All Hosts') `
-SubnetVLan @(New-SCSubnetVLan -Subnet '192.168.10.0/24' -VLanID 10)
# Create an IP pool for the logical network
$ipPool = New-SCStaticIPAddressPool -Name 'Production Pool' `
-LogicalNetworkDefinition $networkSite `
-Subnet '192.168.10.0/24' `
-IPAddressRangeStart '192.168.10.10' `
-IPAddressRangeEnd '192.168.10.200' `
-DefaultGateway '192.168.10.1' `
-DNSServer @('192.168.1.10') `
-DNSSuffix 'corp.local'
Step 6: Create a Virtual Machine Template
VM templates in VMM store the hardware profile, OS profile, and virtual machine configuration settings used to deploy consistent virtual machines quickly. Upload a generalized (sysprepped) VHD to the library before creating the template.
# Create a hardware profile
$hwProfile = New-SCHardwareProfile -Name 'Standard 2vCPU 4GB' `
-CPUCount 2 -MemoryMB 4096 `
-DynamicMemoryEnabled $true `
-DynamicMemoryMinimumMB 1024 `
-DynamicMemoryMaximumMB 8192
# Create an OS profile
$osProfile = New-SCGuestOSProfile -Name 'WS2016 Sysprep Profile' `
-OperatingSystem (Get-SCOperatingSystem | Where-Object Name -like '*2016*') `
-ComputerName '*' `
-JoinDomain 'corp.local' `
-DomainJoinRunAsAccount (Get-SCRunAsAccount -Name 'Domain Join Account') `
-AdminPasswordCredential (Get-Credential Administrator)
# Create the VM template from a library VHD
$vhd = Get-SCVirtualHardDisk -Name 'WS2016_Template.vhdx'
$template = New-SCVMTemplate -Name 'WS2016 Standard Template' `
-HardwareProfile $hwProfile `
-GuestOSProfile $osProfile `
-VirtualHardDisk $vhd
Step 7: Deploy a Virtual Machine from a Template
Deploy a new virtual machine using the template. VMM automatically assigns an IP address from the static IP pool, joins the machine to the domain, and places it on the appropriate Hyper-V host.
$vmConfig = New-SCVMConfiguration -VMTemplate $template -Name 'WEB01'
Set-SCVMConfiguration -VMConfiguration $vmConfig `
-VMHost (Get-SCVMHost -ComputerName 'hv01.corp.local') `
-VMHostGroup (Get-SCVMHostGroup 'All Hosts')
New-SCVM -VMConfiguration $vmConfig -JobGroup (New-Guid).ToString()
# Monitor the deployment job
Get-SCJob | Where-Object { $_.Name -like '*WEB01*' } | Select-Object Name, Status, StartTime
Step 8: Live Migrate a Virtual Machine
VMM supports live migration of running virtual machines between Hyper-V hosts with no downtime. Use this to rebalance load or evacuate a host for maintenance.
$vm = Get-SCVM -Name 'WEB01'
$targetHost = Get-SCVMHost -ComputerName 'hv02.corp.local'
Move-SCVM -VM $vm -VMHost $targetHost -Path 'C:ClusterStorageVolume1VMs'
# Check migration progress
Get-SCJob | Where-Object { $_.Name -like '*WEB01*' } | Select-Object Status, Progress
Step 9: Create a Private Cloud
Private clouds in VMM aggregate compute, storage, and network resources from multiple hosts and make them available for self-service deployment through a capacity-limited tenant model.
$hostGroup = Get-SCVMHostGroup -Name 'All Hosts'
$logNet = Get-SCLogicalNetwork -Name 'Production Network'
New-SCCloud -Name 'Corp Private Cloud' `
-VMHostGroup $hostGroup `
-AddLogicalNetworkToCloud $logNet
# Set capacity limits
Set-SCCloud -Cloud (Get-SCCloud -Name 'Corp Private Cloud') `
-CPUCount 100 `
-Memory 512000 `
-StorageGB 5000 `
-VMCount 50
System Center Virtual Machine Manager on Windows Server 2016 provides a comprehensive platform for managing virtualized infrastructure at enterprise scale. This guide has covered installing VMM, adding Hyper-V hosts, configuring library shares and logical networks, creating VM templates, deploying VMs, performing live migrations, and building private clouds. As your environment grows, explore VMM’s service templates for multi-tier application deployment, its Software Defined Networking capabilities using Windows Server 2016 SDN, and its Azure integration features for consistent hybrid cloud management. Regular capacity planning reviews and host performance monitoring through Operations Manager integration ensure your virtualization platform delivers reliable performance as demand grows.