Project “Lift and Shift”–Phase 1: Triage

This is the first blog post in what is going to be a series that I am tagging “Lift and Shift”. Recently, I had an experience that I know many people have had.  I discovered that my parents were approaching the age where it is no longer possible for them to safely live in their… Read more

Scaling out PowerShell with PowerShell Direct

I have spent a bunch of time this week working on various demos for Ignite in Atlanta.  While building these demos I have been heavily using PowerShell Direct to orchestrate large sets of virtual machines. A common pattern that I encounter is that I will write one piece of code – and then want to… Read more

Hyper-V @ Ignite

I am busily getting ready for my Hyper-V session at Ignite this year – and went to check for other sessions that I could be pointing people to.  Initial results where not hopeful: Umm.  What?  Well – after a short discussion with the team running the Ignite website, it seems that the session search can’t… Read more

Script to Inventory VM Guest OSes – Updated

The other day a colleague asked me how to use PowerShell to gather information about what operating system was running inside of each virtual machine on a Hyper-V server.  I went to point them to this blog post: Scripts to Inventory Virtual Machines [Hyper-V].  But then realized that there were two problems: This script uses… Read more

Fixing Network Adapter settings on Checkpoints

Here is an interesting question from the Hyper-V forums: In essence – the situation is that the user has: Created a virtual machine Connected it to a virtual switch Taken a checkpoint Deleted and recreated the virtual switch Now, whenever they apply the old checkpoint – they get a configuration error message.  They can… Read more

Hyper-V UI updates for High DPI

In the latest Windows Insider builds (14371 and later) we have made some strategic changes to address Hyper-V’s usability on High DPI systems.  But before I get into the details of the changes – one quick thing to talk about: Hyper-V UI is comprised of two main executables.  Our MMC snap-in (that runs under mmc.exe)… Read more

Windows – Read me that virtual machine

After a couple of weeks of playing around with Hyper-V APIs for reading virtual machine screens and sending keystrokes – I hit upon an interesting idea.  What would it take to make a “virtual machine screen reader”? You see, Windows itself has great support for a number of accessibility options.  And these work both in… Read more

Find a bitmap on the VM screen

Continuing with my series on how to do interesting automation stuff with Hyper-V – today I want to show you how to use PowerShell and the AForge.NET library to locate a bitmap on a virtual machine screen. For example – imagine that I had a test running in a Windows Server Core 2016 virtual machine:… Read more

Reading a pixel on a VM Screen

Two weeks ago I provided a code sample that allowed you to capture a Hyper-V virtual machine screen to a bitmap.  As part of this script – the virtual machine screen is stored in a Windows bitmap object.  There are actually a number of interesting things you can do with this object. On such thing… Read more

Network Device Naming in Hyper-V

In Windows 10 and Windows Server 2016 we have introduced a set of new capabilities around managing virtual network adapters.  One of the really handy ones is network device naming.  This allows you to easily differentiate between different network adapters on a single virtual machine – and to correlate them to network adapters inside the… Read more