How to Configure System Center Virtual Machine Manager on Windows Server 2012 R2
System Center Virtual Machine Manager (SCVMM or VMM) is Microsoft’s comprehensive virtualization management platform that provides centralized control over Hyper-V hosts, private cloud infrastructure, VM deployment, network virtualization, and storage management. VMM 2012 R2 is purpose-built to work with Windows Server 2012 R2 Hyper-V, offering deep integration with features like Live Migration, Hyper-V Replica, Dynamic Optimization, and Software Defined Networking.
This guide covers the complete SCVMM 2012 R2 installation and initial configuration on Windows Server 2012 R2, including database setup, VMM agent deployment to Hyper-V hosts, private cloud creation, VM template configuration, and PowerShell-based VMM management. Organizations running SCVMM gain a unified console that replaces direct Hyper-V Manager access for individual hosts and provides automation capabilities far beyond what the individual Hyper-V Management console supports.
Prerequisites
– Windows Server 2012 R2 Datacenter or Standard for the VMM Management Server
– SQL Server 2012 SP1 or SQL Server 2014 for the VMM database
– Active Directory domain membership for the VMM server
– A dedicated domain service account (e.g., DOMAINsvc-vmm) with local administrator rights
– Windows ADK (Assessment and Deployment Kit) for bare-metal deployment features
– Minimum 4 GB RAM, 80 GB disk for the VMM management server
– Hyper-V hosts running Windows Server 2012 R2 with Hyper-V role installed
– .NET Framework 4.0 or later
Step 1: Prepare the VMM Management Server
# Install required Windows features for VMM Management Server
Install-WindowsFeature NET-Framework-Features, WAS, WAS-Process-Model, WAS-NET-Environment, WAS-Config-APIs
# Install Windows ADK features needed by VMM
# Download Windows ADK for Windows 8.1 from Microsoft
# Run adksetup.exe and install: Deployment Tools, Windows PE, User State Migration Tool
# Verify service account privileges
# The VMM service account needs:
# - Local Administrator on the VMM server
# - db_creator and securityadmin on the SQL Server
# - No Domain Admin required (follow least privilege)
# Configure Windows Firewall for VMM
New-NetFirewallRule -DisplayName "VMM Inbound 8100" -Direction Inbound -Protocol TCP -LocalPort 8100 -Action Allow
New-NetFirewallRule -DisplayName "VMM Inbound 8101" -Direction Inbound -Protocol TCP -LocalPort 8101 -Action Allow
Step 2: Install SQL Server for VMM Database
# SQL Server 2012 SP1 or SQL 2014 is required
# Install SQL Server with:
# - Database Engine Services
# - Full-Text and Semantic Extractions for Search (required by VMM)
# - Management Tools
# After SQL Server installation, grant the VMM service account required SQL permissions
# Connect to SQL and run:
# USE [master]
# CREATE LOGIN [DOMAINsvc-vmm] FROM WINDOWS
# EXEC sp_addsrvrolemember [DOMAINsvc-vmm], 'sysadmin'
# Note: sysadmin can be reduced to dbcreator + securityadmin for production
# Verify SQL connectivity
sqlcmd -S "SQLServer01" -Q "SELECT @@VERSION"
Step 3: Install VMM Management Server
# Run VMM setup from SCVMM 2012 R2 media
# setup.exe > Install > VMM management server
# Silent installation via command line
setup.exe /server /i /IACCEPTSCEULA `
/ServiceRunUnderAccount /UserName:"DOMAINsvc-vmm" /Password:"VMM$vc@cc0unt!" `
/MSSQLServer:"SQLServer01" /SqlInstanceName:"MSSQLSERVER" /SqlDBName:"VirtualManagerDB" `
/CreateNewSqlDatabase:1 `
/SqlDBSize:2048 `
/TopologyManagerPort:8100 `
/HTTPPort:80 `
/HTTPSPort:443 `
/ProgramLocation:"C:Program FilesMicrosoft System Center 2012 R2Virtual Machine Manager" `
/VMMSLQ`
# Monitor installation progress in:
# C:ProgramDataVMMLogsSetupWizard.log
Step 4: Configure the VMM Console
After installation, open the VMM Administrator Console:
# Launch VMM Console
"C:Program FilesMicrosoft System Center 2012 R2Virtual Machine Managerbinvmmadminui.exe"
# Or from the Start screen, search for "Virtual Machine Manager Console"
# Connect to the VMM server:
# Server name: localhost (or VMM server FQDN for remote management)
# Port: 8100
# Import VMM PowerShell module for command-line management
Import-Module VirtualMachineManager
Get-VMMServer -ComputerName "VMMServer01"
Step 5: Add Hyper-V Hosts to VMM
Adding Hyper-V hosts installs the VMM agent and brings the host under centralized management:
Import-Module VirtualMachineManager
$vmmServer = Get-VMMServer -ComputerName "VMMServer01"
# Add a Hyper-V host in a specific host group
$credential = Get-Credential "DOMAINAdministrator"
Add-SCVMHost -ComputerName "HV01.domain.com" `
-Credential $credential `
-VMHostGroup "All HostsProduction Hosts" `
-RemoteConnectEnabled $true
# Verify the host was added successfully
Get-SCVMHost | Select-Object Name, OverallState, VirtualizationPlatform, HyperVVersion
# Add multiple hosts from a list
$hosts = @("HV01.domain.com","HV02.domain.com","HV03.domain.com")
foreach ($hvHost in $hosts) {
Add-SCVMHost -ComputerName $hvHost -Credential $credential -VMHostGroup "All HostsProduction Hosts"
Write-Host "Added $hvHost"
}
Step 6: Create Host Groups for Organization
# Create logical host group hierarchy
New-SCVMHostGroup -Name "Production Hosts" -ParentHostGroup (Get-SCVMHostGroup "All Hosts")
New-SCVMHostGroup -Name "DR Hosts" -ParentHostGroup (Get-SCVMHostGroup "All Hosts")
New-SCVMHostGroup -Name "Dev Test Hosts" -ParentHostGroup (Get-SCVMHostGroup "All Hosts")
New-SCVMHostGroup -Name "Web Tier" -ParentHostGroup (Get-SCVMHostGroup "All HostsProduction Hosts")
New-SCVMHostGroup -Name "App Tier" -ParentHostGroup (Get-SCVMHostGroup "All HostsProduction Hosts")
# List host group hierarchy
Get-SCVMHostGroup | Select-Object Name, Path | Sort-Object Path
Step 7: Create VM Templates
VM templates in VMM define standard VM configurations for consistent VM deployment:
# Create a VM template from an existing VM or VHD
# First, get a base VHD from the library
$vhd = Get-SCVirtualHardDisk | Where-Object Name -eq "WS2012R2_Base.vhdx" | Select-Object -First 1
# Create a hardware profile
$hwProfile = New-SCHardwareProfile -Name "Standard Server" `
-Description "Standard 2 CPU 4GB RAM profile" `
-CPUCount 2 `
-MemoryMB 4096 `
-DynamicMemoryEnabled $false
# Create a guest OS profile
$osProfile = New-SCGuestOSProfile -Name "WS2012R2 Standard" `
-Description "Windows Server 2012 R2 Standard unattend" `
-OperatingSystem (Get-SCOperatingSystem | Where-Object Name -like "*2012 R2*" | Select-Object -First 1)
# Create the VM template
$template = New-SCVMTemplate -Name "WS2012R2-Template" `
-HardwareProfile $hwProfile `
-GuestOSProfile $osProfile `
-VirtualHardDisk $vhd `
-Description "Standard Windows Server 2012 R2 template"
Step 8: Deploy a Virtual Machine from Template
# Deploy a VM from a template
$template = Get-SCVMTemplate -Name "WS2012R2-Template"
$hvHost = Get-SCVMHost -ComputerName "HV01.domain.com"
$vmNetwork = Get-SCVMNetwork -Name "Production Network"
$job = New-SCVM -Name "WebServer05" `
-VMTemplate $template `
-VMHost $hvHost `
-Description "Web server deployed from template" `
-RunAsynchronously
# Wait for job completion
$job | Wait-SCJob
# Start the VM
Get-SCVM -Name "WebServer05" | Start-SCVirtualMachine
# Verify VM deployment
Get-SCVM -Name "WebServer05" | Select-Object Name, Status, VirtualMachineState, HostName
Step 9: Configure Dynamic Optimization and Power Optimization
# Enable Dynamic Optimization on a host group
# Dynamic Optimization automatically load-balances VMs across hosts in a cluster
$hostGroup = Get-SCVMHostGroup "All HostsProduction Hosts"
# Dynamic Optimization settings
Set-SCVMHostGroup -VMHostGroup $hostGroup `
-EnableDynamicOptimization $true `
-DynamicOptimizationAggressiveness 2 `
-DynamicOptimizationInterval 10
# Check host load balancing status
Get-SCVMHost | Select-Object Name, OverallState, CPUUtilization,
@{N="MemUsedPct"; E={[math]::Round(($_.MemoryUsedMB / $_.TotalMemory) * 100, 1)}} |
Sort-Object CPUUtilization -Descending | Format-Table -AutoSize
Step 10: Create a Private Cloud
# Create a Private Cloud definition in VMM
$hostGroup = Get-SCVMHostGroup "All HostsProduction Hosts"
$vmNetworks = Get-SCVMNetwork
$readOnlyLibs = Get-SCLibraryShare | Where-Object { $_.Name -like "*ReadOnly*" }
$cloud = New-SCCloud -Name "Production Cloud" `
-VMHostGroup @($hostGroup) `
-Description "Production private cloud for self-service VM deployment" `
-ReadWriteLibraryPath "\VMMServer01VMMLibrary"
# Set cloud capacity limits
Set-SCCloud -Cloud $cloud `
-VMCount 50 `
-CPUCount 200 `
-MemoryMB 204800 `
-StorageGB 5000
# Assign a user role to the cloud for self-service access
$userRole = New-SCUserRole -Name "Cloud Users" `
-UserRoleProfile SelfServiceUser
Set-SCUserRole -UserRole $userRole -Cloud @($cloud)
# Add users to the role
Set-SCUserRole -UserRole $userRole -AddMember @("DOMAINDevTeam")
Summary
System Center Virtual Machine Manager 2012 R2 transforms Hyper-V management from a per-host GUI task into an enterprise-scale, policy-driven private cloud platform. By installing VMM on a dedicated Windows Server 2012 R2 server, adding Hyper-V hosts to centrally managed host groups, creating VM templates for consistent deployments, and enabling Dynamic Optimization for automated workload balancing, organizations gain the operational capabilities needed to efficiently manage large Hyper-V environments. The VMM PowerShell module provides comprehensive scripting capabilities for all operations performed in the console, enabling automation of VM provisioning, compliance checking, and capacity reporting that scales far beyond what manual console-based management can achieve.