Microsoft News – 17 November 2014

I’ve had a crazy few weeks with TechEd Europe 2014, followed by the MVP Summit, followed by a week of events and catchup at work. Today, I’ve finally gotten to go through my news feeds. There is a LOT of Azure stuff from TEE14.

Hyper-V

Windows Server

System Center

Windows Client

  • Windows 10 – Making Deployment Easier: Using an in-place upgrade instead of the traditional wipe-and-load approach that organizations have historically used to deploy new Windows versions. This upgrade process is designed to preserve the apps, data, and configuration from the existing Windows installation, taking care to put things back the way they need to be after Windows 10 has been installed on the system. And support for traditional deployment tools.
  • Windows 10 – Manageability Choices: Ensuring that Windows works better when using Active Directory and Azure Active Directory together. When connecting the two, users can automatically be signed-in to cloud-based services like Office 365, Microsoft Intune, and the Windows Store, even when logging in to their machine using Active Directory accounts. For users, this will mean no longer needing to remember additional user IDs or passwords.

Azure

clip_image001

ASR SAN replication topology

Office 365

Intune

Operational Insights

Licensing

TEE14 Scripted Demo 6 – Extended Port ACLs

My sixth  TechEd Europe 2014 demo was a fun one: Extended Port ACLs, which is the ability to apply network security rules in the virtual switch port, which cannot be overruled by the guest OS admin.

There is a demo VM that is running IIS with a default site. The Windows Firewall is turned off in the guest OS. The script will:

  1. Clean up the demo lab
  2. Open a window with a continuous ping to the VM, showing the open network status
  3. Starts IE and browses to the VM’s site
  4. Kills IE and applies an extended port ACL to block everything.
  5. IE is re-opened (with flushed cache) and fails to load the site. Ping packets are dropping in the continuous ping.
  6. Kills IE and creates another extended port ACL to allow inbound TCP 80
  7. Reopens IE to show the site is accessible. Meanwhile, pings continue to fail.

There’s plenty of process management, and controlling IE in this script.

cls
#Clean up the demo to start up with
Get-VMNetworkAdapterExtendedAcl -VMName PortACLs | Remove-VMNetworkAdapterExtendedAcl

$DemoVM = "PortACLS"

Write-Host "Extended Port ACLs Demo"

#Clear IE Cache
RunDll32.exe InetCpl.cpl, ClearMyTracksByProcess 8

#Ping the VM
Start-Process Ping -ArgumentList "-t","PortACLS"

#Start IE
$ie = new-object -comobject InternetExplorer.Application
$ie.visible = $true
$ie.top = 200; $ie.width = 900; $ie.height = 600 ; $ie.Left = 100
$ie.navigate("http://portacls.demo.internal")

#Block all traffic script block
Read-Host "Block all traffic to the VM"
#Kill IE
Get-Process -Name IEXPLORE | Stop-Process
RunDll32.exe InetCpl.cpl, ClearMyTracksByProcess 8
Write-Host "`nAdd-VMNetworkAdapterExtendedAcl –VMName PortACLs –Action `“Deny`” –Direction `“Inbound`” –Weight 1"
Sleep 3
Write-Host "`nAll inbound traffic to the virtual machine is blocked" -foregroundcolor red -backgroundcolor yellow
Add-VMNetworkAdapterExtendedAcl –VMName PortACLs –Action “Deny” –Direction “Inbound” –Weight 1
#Start IE to show the site is offline
$ie = new-object -comobject InternetExplorer.Application
$ie.visible = $true
$ie.top = 200; $ie.width = 900; $ie.height = 600 ; $ie.Left = 100
$ie.navigate("http://portacls.demo.internal")

#Put in web traffic exception script block
Read-Host "`n`n`nAllow HTTP traffic to the VM"
#Kill IE
Get-Process -Name IEXPLORE | Stop-Process
RunDll32.exe InetCpl.cpl, ClearMyTracksByProcess 8
Write-Host "Add-VMNetworkAdapterExtendedAcl –VMName PortACLs –Action `“Allow`” –Direction `“Inbound`” –LocalPort 80 –Protocol `“TCP`” –Weight 10"
Sleep 3
Write-Host "`nAll inbound traffic to the virtual machine is blocked EXCEPT for HTTP" -foregroundcolor red -backgroundcolor yellow
Add-VMNetworkAdapterExtendedAcl –VMName PortACLs –Action “Allow” –Direction “Inbound” –LocalPort 80 –Protocol “TCP” –Weight 10
#Start IE to show that the website is now back online, despite all other traffic being blocked
$ie = new-object -comobject InternetExplorer.Application
$ie.visible = $true
$ie.top = 200; $ie.width = 900; $ie.height = 600 ; $ie.Left = 100
$ie.navigate("http://portacls.demo.internal")

Read-Host "`n`n`nEnd the demo"

#Clean up after the demo
Get-Process -Name Ping | Stop-Process
Get-Process -Name IEXPLORE | Stop-Process
Get-VMNetworkAdapterExtendedAcl -VMName PortACLs | Remove-VMNetworkAdapterExtendedAcl

TEE14 Scripted Demo 5 – Out-Of-Band File Copy

In my fight demo at TechEd Europe 2014, the topic was OOB File Copy, the ability to place a file into a VM’s storage, via the VMBus, and without network connectivity to the VM (e.g. tenant isolation).

The script does the following:

  1. Cleans up the demo
  2. Opens up notepad. I manually copy and paste text from a website into the file and save it.
  3. Enable the Guest Service Interface for the VM to enable OOB File Copy
  4. Copy the file to the VM
  5. Disable Guest Service Interface
  6. Connect to the VM. I manually log in and open the file to verify that the file I created is now inside of the VM
  7. Clean up the demo

 

function KillProcess ($Target)
{
    $Processes = Get-Process
    Foreach ($Process in  $Processes)
    {
        if ($Process.ProcessName -eq $Target)
        {
            Stop-Process $Process
        }   
    }
}

cls

$DemoHost1 = "Demo-Host1"
$DemoVM1 = “OOBFileCopy”
$DemoFile = "CopyFile.txt"
$DemoFilePath = "C:\Scripts\TechEd\$DemoFile"
$VMConnect = "C:\Windows\system32\vmconnect.exe"
$VMConnectParams =  "$DemoHost1 $DemoVM1"

#Prep the demo
#Use a remote command to delete the file from the VM
Invoke-Command -ComputerName $DemoVM1 -ScriptBlock {Remove-Item -ErrorAction SilentlyContinue "C:\CopyFile.txt" -Confirm:$False | Out-Null}
Disable-VMIntegrationService $DemoVM1 -Name "Guest Service Interface"
Remove-Item -ErrorAction SilentlyContinue $DemoFilePath -Confirm:$False | Out-Null
New-Item $DemoFilePath -ItemType File | Out-Null

#Start the demo

#Note to self – script the network disconenct of the VM along with a continuous ping to confirm it.

Read-Host "`nStart the demo"
Write-Host "`nCreate a file to be copied into the virtual machine" -foregroundcolor red -backgroundcolor yellow
Start-Process "c:\windows\system32\notepad.exe" -ArgumentList $DemoFilePath

#Copy the file
Read-Host "`nEnable the Guest Service Interface integration service"
Write-Host "`nEnable-VMIntegrationService $DemoVM1 -Name `"Guest Service Interface`""
Enable-VMIntegrationService $DemoVM1 -Name "Guest Service Interface"

Read-Host "`nCopy the file to the VM"
Write-Host "`nCopy-VMFile $DemoVM1 -SourcePath $DemoFilePath -DestinationPath C: -FileSource Host"
Copy-VMFile $DemoVM1 -SourcePath $DemoFilePath -DestinationPath C: -FileSource Host

Read-Host "`nDisable the Guest Service Interface integration service"
Write-Host "`nDisable-VMIntegrationService $DemoVM1 -Name `"Guest Service Interface`""
Disable-VMIntegrationService $DemoVM1 -Name "Guest Service Interface"

#Check the file
Read-Host "`nLog into the virtual machine to check the file"

Set-VMHost -EnableEnhancedSessionMode $true | Out-Null
Start-Process $VMConnect -ArgumentList $VMConnectParams

#End the demo
Read-Host "`nEnd the demo"
KillProcess "vmconnect"
Disable-VMIntegrationService $DemoVM1 -Name "Guest Service Interface"
Remove-Item -ErrorAction SilentlyContinue $DemoFilePath -Confirm:$False | Out-Null
#Use a remote command to delete the file from the VM
Invoke-Command -ComputerName $DemoVM1 -ScriptBlock {Remove-Item -ErrorAction SilentlyContinue "C:\CopyFile.txt" -Confirm:$False | Out-Null}

 

TEE14 Scripted Demo 5 – Out-Of-Band File Copy

In my fight demo at TechEd Europe 2014, the topic was OOB File Copy, the ability to place a file into a VM’s storage, via the VMBus, and without network connectivity to the VM (e.g. tenant isolation).

The script does the following:

  1. Cleans up the demo
  2. Opens up notepad. I manually copy and paste text from a website into the file and save it.
  3. Enable the Guest Service Interface for the VM to enable OOB File Copy
  4. Copy the file to the VM
  5. Disable Guest Service Interface
  6. Connect to the VM. I manually log in and open the file to verify that the file I created is now inside of the VM
  7. Clean up the demo

 

function KillProcess ($Target)
{
    $Processes = Get-Process
    Foreach ($Process in  $Processes)
    {
        if ($Process.ProcessName -eq $Target)
        {
            Stop-Process $Process
        }   
    }
}

cls

$DemoHost1 = "Demo-Host1"
$DemoVM1 = “OOBFileCopy”
$DemoFile = "CopyFile.txt"
$DemoFilePath = "C:\Scripts\TechEd\$DemoFile"
$VMConnect = "C:\Windows\system32\vmconnect.exe"
$VMConnectParams =  "$DemoHost1 $DemoVM1"

#Prep the demo
#Use a remote command to delete the file from the VM
Invoke-Command -ComputerName $DemoVM1 -ScriptBlock {Remove-Item -ErrorAction SilentlyContinue "C:\CopyFile.txt" -Confirm:$False | Out-Null}
Disable-VMIntegrationService $DemoVM1 -Name "Guest Service Interface"
Remove-Item -ErrorAction SilentlyContinue $DemoFilePath -Confirm:$False | Out-Null
New-Item $DemoFilePath -ItemType File | Out-Null

#Start the demo

#Note to self – script the network disconenct of the VM along with a continuous ping to confirm it.

Read-Host "`nStart the demo"
Write-Host "`nCreate a file to be copied into the virtual machine" -foregroundcolor red -backgroundcolor yellow
Start-Process "c:\windows\system32\notepad.exe" -ArgumentList $DemoFilePath

#Copy the file
Read-Host "`nEnable the Guest Service Interface integration service"
Write-Host "`nEnable-VMIntegrationService $DemoVM1 -Name `"Guest Service Interface`""
Enable-VMIntegrationService $DemoVM1 -Name "Guest Service Interface"

Read-Host "`nCopy the file to the VM"
Write-Host "`nCopy-VMFile $DemoVM1 -SourcePath $DemoFilePath -DestinationPath C: -FileSource Host"
Copy-VMFile $DemoVM1 -SourcePath $DemoFilePath -DestinationPath C: -FileSource Host

Read-Host "`nDisable the Guest Service Interface integration service"
Write-Host "`nDisable-VMIntegrationService $DemoVM1 -Name `"Guest Service Interface`""
Disable-VMIntegrationService $DemoVM1 -Name "Guest Service Interface"

#Check the file
Read-Host "`nLog into the virtual machine to check the file"

Set-VMHost -EnableEnhancedSessionMode $true | Out-Null
Start-Process $VMConnect -ArgumentList $VMConnectParams

#End the demo
Read-Host "`nEnd the demo"
KillProcess "vmconnect"
Disable-VMIntegrationService $DemoVM1 -Name "Guest Service Interface"
Remove-Item -ErrorAction SilentlyContinue $DemoFilePath -Confirm:$False | Out-Null
#Use a remote command to delete the file from the VM
Invoke-Command -ComputerName $DemoVM1 -ScriptBlock {Remove-Item -ErrorAction SilentlyContinue "C:\CopyFile.txt" -Confirm:$False | Out-Null}

 

TEE14 Scripted Demo 4 – Enhanced Session Mode

The 4th of my 10 demos at TechEd North America 2014 was based on Enhanced Session Mode and all the RemoteFX via the VMBus goodness that it provides admins with when interacting with VMs on WS2012 R2 Hyper-V.

It was a complicated demo to script – but certainly not the most complicated! The logic is:

  1. Clean up the environment – this involved disabling enhanced session mode (I normally use it)
  2. Connect to a VM and show the lack of copy/paste etc – note how I directly run VMConnect
  3. Enable enhanced session mode
  4. Log into the VM and show off the features of the RemoteFX-powered connect
  5. Copy/paste etc
  6. Clean up the demo

Some of things I do in this script are used in some of the later, more complicated demo scripts. You’ll soon see lots more invoke-command, PSEXEC, and process manipulation.

 

function KillProcess ($Target)
{
    $Processes = Get-Process
    Foreach ($Process in  $Processes)
    {
        if ($Process.ProcessName -eq $Target)
        {
            Stop-Process $Process
        }   
    }
}

CLS
$DemoHost1 = "Demo-Host1"
$DemoVM1 = “OOBFileCopy”
$VMConnect = "C:\Windows\system32\vmconnect.exe"
$VMConnectParams =  "$DemoHost1 $DemoVM1"

#Prep the demo
KillProcess "vmconnect"
Set-VMHost -EnableEnhancedSessionMode 0 | Out-Null

#Start the demo
Read-Host "Start the demo"
Write-Host "`nThe host is configured as default – same old VMConnect:" -foregroundcolor red -backgroundcolor yellow
Write-Host "`n(Get-VMHost).EnableEnhancedSessionMode"
(Get-VMHost).EnableEnhancedSessionMode | Out-Host

Read-Host "`nConnect to the demo virtual machine"
Start-Process $VMConnect -ArgumentList $VMConnectParams

Read-Host "`nStop VMConnect"
KillProcess "vmconnect"

#Enable enhanced session mode
Read-Host "`nEnabled Enhanced Session Mode"
Write-Host "`nLet’s get the new administrator experience:" -foregroundcolor red -backgroundcolor yellow
Write-Host "`nSet-VMHost -EnableEnhancedSessionMode `$true"
Set-VMHost -EnableEnhancedSessionMode $true | Out-Null
Write-Host "`n(Get-VMHost).EnableEnhancedSessionMode"
(Get-VMHost).EnableEnhancedSessionMode | Out-Host

Read-Host "`nConnect to the demo virtual machine"
Start-Process $VMConnect -ArgumentList $VMConnectParams
Write-Host "`nLog in and demonstrate Enhanced Session Mode" -foregroundcolor red -backgroundcolor yellow

Read-Host "`nEnd the demo"
KillProcess "vmconnect"
Set-VMHost -EnableEnhancedSessionMode 1 | Out-Null

TEE14 Scripted Demo 3 – Resource Metering

My third demo at TechEd Europe 2014 focused on Resource Metering, enabling granular reporting of per-VM resource utilisation, primarily for the purposes of show-back reporting or cross-charging/billing. This feature can be used to satisfy one of the traits of a cloud, as defined by NIST: measured usage.

In this demo, I:

  1. Clean up the demo
  2. Enable metering on a VM
  3. Modify the reporting interval from 1 hour to 10 seconds to suit the demo
  4. Use memory in the VM
  5. Copy a file to the VM (I might also run some network consuming process in the VM)
  6. Report on resource usage
  7. Dive deeper into network metering
  8. Clean up the demo

$DemoVM = "Metering"
$DemoFile = "C:\Scripts\TechEd\ResourceMeteringDemoFile.exe"

CLS
Get-VM $DemoVM | Disable-VMResourceMetering
Set-VMHost –ComputerName Demo-Host2 –ResourceMeteringSaveInterval 00:00:10

#Enable metering
Read-Host "`nEnable Resource Metering on the VM"
Write-Host "`nGet-VM $DemoVM | Enable-VMResourceMetering"
Get-VM $DemoVM | Enable-VMResourceMetering
Write-Host "`nResource Metering is enabled on $DemoVM" -foregroundcolor red -backgroundcolor yellow

#Use some resources
Sleep 1
Write-Host "`nUsing RAM in the VM $DemoVM" -foregroundcolor red -backgroundcolor yellow
#Loop to consume RAM in the VM
Invoke-Command -ComputerName $DemoVM -ScriptBlock {1..28|%{$x=1}{[array]$x+=$x}} -ErrorAction SilentlyContinue
#Copy a file to the VM
Write-Host "`nCopying a file to the VM $DemoVM" -foregroundcolor red -backgroundcolor yellow
Remove-Item "\\Metering\C$\ResourceMeteringDemoFile.exe" -ErrorAction SilentlyContinue
Copy-Item -Path $DemoFile -Destination "\\Metering\C$\ResourceMeteringDemoFile.exe"
Remove-Item "\\Metering\C$\ResourceMeteringDemoFile.exe" -ErrorAction SilentlyContinue
Copy-Item -Path $DemoFile -Destination "\\Metering\C$\ResourceMeteringDemoFile.exe"
Remove-Item "\\Metering\C$\ResourceMeteringDemoFile.exe" -ErrorAction SilentlyContinue

#Check usage data
Read-Host "`nCheck usage data"
Write-Host "`nMeasure-VM –VMName $DemoVM"
Measure-VM –VMName $DemoVM | Out-Host

#Check network usage data
Read-Host "`nCheck network usage data"
Write-Host "`n(Measure-VM –VMName $DemoVM).NetworkMeteredTrafficReport"
(Measure-VM –VMName $DemoVM).NetworkMeteredTrafficReport | Out-Host

 

Read-Host "`nEnd the demo"
Get-VM $DemoVM | Disable-VMResourceMetering
Set-VMHost –ComputerName Demo-Host2 –ResourceMeteringSaveInterval 01:00:00

TEE14 Scripted Demo 1 – Guest-Aware NUMA

As promised at Teched Europe 2014, I am sharing each of the PowerShell scripts that I used to drive my feature demos in my session. The first of these scripts focuses on non-uniform memory access, or NUMA.

image

All of my demo scripts work in this kind of fashion:

  1. Clean up the lab
  2. Create demo environment variables for hosts, clusters, machines
  3. Write-Host “some cmdlet and parameters”
  4. Do the cmdlet and some parameters
  5. Optionally display the results
  6. Do more stuff
  7. Clean up the lab.

Most of the code in these scripts is fluff, purely for display and lab prep/reset.

In this script I:

  1. Clean up the lab, ensure the VM (spans NUMA nodes cos of vCPU count) is just the way I want it.
  2. Get the NUMA config of the host.
  3. Get the NUMA config of the VM.
  4. Show that the VM is not NUMA aligned.
  5. Retrieve the VM’s advanced NUMA configuration.
  6. Shutdown the VM, set it to use static memory, and restart it.
  7. Query the VMs NUMA alignment, and see that it is aligned now, but we have use static memory.
  8. Reset the lab back to the start.

CLS
$DemoVM1="NUMA"

#Reset the demo
Stop-VM $DemoVM1 -Force | Out-Null
Set-VMMemory $DemoVM1 -DynamicMemoryEnabled:$true -StartupBytes 512MB -MaximumBytes 8GB -MinimumBytes 256MB
Start-VM $DemoVM1 | Out-Null

#Start the demo
Read-Host "Start the demo"
Write-Host "`nGet-VMHostNumaNode"
Get-VMHostNumaNode
Write-Host "`nThe host has 2 NUMA nodes. Large VMs should also have 2 NUMA nodes for best performance" -foregroundcolor red -backgroundcolor yellow

Read-Host "`nCheck the NUMA and Dynamic Memory configuration of the VM $DemoVM1"
Write-Host "`nGet-VM $DemoVM1 | Select Name, ProcessorCount, MemoryMaximum, DynamicMemoryEnabled, NumaAligned, NumaNodesCount, NumaSocketCount"
Get-VM $DemoVM1 | Select Name, ProcessorCount, MemoryMaximum, DynamicMemoryEnabled, NumaAligned, NumaNodesCount, NumaSocketCount | Out-Host
Write-Host "`nGuest NUMA isn’t alligned and the 24 vCPU virtual machine has only 1 NUMA node" -foregroundcolor red -backgroundcolor yellow

Read-Host "`nGet the advanced NUMA configuration of the VM $DemoVM1"
Write-Host "`nGet-VMProcessor $DemoVM1 | Select Count, MaximumCountPerNumaNode, MaximumCountPerNumaSocket`n"
Get-VMProcessor $DemoVM1 | Select Count, MaximumCountPerNumaNode, MaximumCountPerNumaSocket
Write-Host "`nGet-VMMemory $DemoVM1 | Select MaximumPerNumaNode`n"
Get-VMMemory $DemoVM1 | Select MaximumPerNumaNode
Write-Host "`nThis is the NUMA node configuration that Hyper-V can present to the VM via Guest-Aware NUMA" -foregroundcolor red -backgroundcolor yellow

Read-Host "`nDisable Dynamic Memory for the VM $DemoVM1 & restart it"
Stop-VM $DemoVM1 -Force
Write-Host "`nSet-VMMemory $DemoVM1 -DynamicMemoryEnabled:$false -StartupBytes 8GB"
Set-VMMemory $DemoVM1 -DynamicMemoryEnabled:$false -StartupBytes 8GB
Start-VM $DemoVM1
Write-Host "`nGet-VM $DemoVM1 | Select Name, ProcessorCount, MemoryMaximum, DynamicMemoryEnabled, NumaAligned, NumaNodesCount, NumaSocketCount`n"
Get-VM $DemoVM1 | Select Name, ProcessorCount, MemoryMaximum, DynamicMemoryEnabled, NumaAligned, NumaNodesCount, NumaSocketCount | Out-Host
Write-Host "`nThe VM now is NUMA aligned and has a NUMA configuration that matches the host hardware" -foregroundcolor red -backgroundcolor yellow

#End the demo
Read-Host "`nEnd the demo"
Stop-VM $DemoVM1 -Force
Set-VMMemory $DemoVM1 -DynamicMemoryEnabled:$true -StartupBytes 512MB -MaximumBytes 8GB -MinimumBytes 256MB
Start-VM $DemoVM1 | Out-Null

My TechEd Europe 2014 Session Is On Channel 9 Website

Microsoft has published my session from TEE14 (From Demo to Reality: Best Practices Learned from Deploying Windows Server 2012 R2 Hyper-V) onto the event site on Channel 9; In this session I cover the value of Windows Server 2012 R2 Hyper-V:

  • How Microsoft backs up big keynote claims about WS2012 R2 Hyper-V
  • How they enable big demos, like 2,000,000 IOPS from a VM
  • The lesser known features of Hyper-V that can solve real world issues

The deck was 84 slides and 10 demos … in 74 minutes. The final feature I talk about is what makes all that possible.

 

Finishing Preparations Of My TechEd Europe Presentation

I am in the midst of finishing off my presentation for TechEd Europe 2014, CDP-B329 From Demo to Reality: Best Practices Learned from Deploying Windows Server 2012 R2 Hyper-V.

as

The session drills into all the things that make previous big announcements & demos possible, and talks about those lesser known features that solve real problems. I’m covering a lot of stuff in this session. I submitted the draft deck a while ago, thinking that I’d have to cull a lot of it to fit within the limit of 75 minutes. Well, I did my first timed rehearsal tonight and I have a bit of wiggle room, maybe to even add in some more demos.

Speaking of which … my demos Open-mouthed smile Fast networking, good host hardware, and LOTS of PowerShell. All my demos are driven by PowerShell. Don’t think “ugh, boring!”. Nope. It’s all very visual, I assure you! There are ways, means, and tricks to show you the goodies even with a scripting language! Heck! PowerShell is even a part of the product that I want to demo! Right now I have 9 demos to show, and that might expand.

If you are coming to TechEd then I hope to see you at CDP-B329. Right now, I’m scheduled for Wednesday morning, but I heard I might be moved to the timeslot of doom on Friday at 08:30 Sad smile Please check the box for my session on the Schedule Builder to try change their mind before the move me!!!!! My session is confirmed for Wednesday at 10:15 in Hall 8.0 Room A2 (seats 1174 people!!!) – hit the schedule builder and check my session (CDP-B329) if it sounds interesting to you.

And by the way – a huge THANK YOU to Didier Van Hoye (aka @workinghardinit at http://workinghardinit.wordpress.com/)  for his help. He helped me sort out some problems in 2 of my demos. Didier is a class example of an MVP working in the community.

KB2964439 – Hyper-V VM Backup Leaves The VM In Locked State

A new KB article by Microsoft solves an issue where a Windows 8.1 Client Hyper-V or Windows Server 2012 R2 Hyper-V virtual machine backup leaves the VM in a locked state.

Symptoms

Consider the following scenario:

  • You’re running Microsoft System Center Data Protection Manager (DPM).
  • You start a backup job in DPM to back up Hyper-V virtual machines (VMs).

In this scenario, DPM sometimes leaves the VM stuck in the backup state (locked).

A supported hotfix is available from Microsoft Support. To apply this update, you must first install update 2919355 in Windows 8.1 or Windows Server 2012 R2.