
close
close
I use Hyper-V extensively to provide a domain environment that serves as my training and test playground. And because my environment has to be portable, I tend to run into more problems than hopefully you do. However, you might still benefit from experiences and maybe you will learn something about PowerShell along the way. If a virtual machine is already running, I’m not too concerned about it. Instead, I need a heads up on all my other virtual machines, especially if there is a problem that would keep them from starting.
Using the Hyper-V module, grabbing all virtual machines is pretty easy.
Getting virtual machine status (Image Credit: Jeff Hicks)
That's a pretty easy thing to check and fix. What's a bit harder is verifying that the virtual disk files, which include vhd and vhdx files, are all in place. I can easily see what the files should be.Listing configuration file locations (Image Credit: Jeff Hicks)
But unless the virtual machine is running without error, I really don't know. One thing I can do is test each path.Listing virtual machine disk files (Image Credit: Jeff Hicks)
Or perhaps I want to check all virtual machines and insert a custom property that indicates if virtual disks exist.Listing virtual machines with invalid disk files (Image Credit: Jeff Hicks)
There is one slight wrinkle with this approach. The virtual machine called demo doesn't have any virtual disks defined, so I don't get any results. Let me refine the command to take this into account.Adding a custom property (Image Credit: Jeff Hicks)
That's better. Although for virtual machines with multiple disk files, my custom property is an array, as you can see for Nano-01. Eventually I want to get to a point where I can filter on the TestVHD property. For my purposes, all disks must test as true, otherwise I'll treat the entire test as a failure. Here's how I might accomplish this:Better handling of missing disk files (Image Credit: Jeff Hicks)
I initialize a variable, $test, to hold the values from Test-Path. Next, I test using the –Contains operator to see if $test has any values of $False. If so, then the value for TestVHD should be false.That's much better. Now I can get a better feel for what virtual machines need attention.Testing for multiple disk files (Image Credit: Jeff Hicks)
In this example, I am also grabbing the paths of each virtual disk file.Although that's helpful information, that's a lot to type each time I want to test. In another article, I'll demonstrate how to take this a step further. As always, comments and questions are welcome.Listing problem virtual machines (Image Credit: Jeff Hicks)
advertisment
More from Jeff Hicks
advertisment
Petri Newsletters
Whether it’s Security or Cloud Computing, we have the know-how for you. Sign up for our newsletters here.
advertisment
More in Hyper-V
Leveraging Virtualization for Improved Availability and Disaster Recovery
Apr 29, 2019 | Michael Otey
Most popular on petri
Log in to save content to your profile.
Article saved!
Access saved content from your profile page. View Saved
Join The Conversation
Create a free account today to participate in forum conversations, comment on posts and more.
Copyright ©2019 BWW Media Group