Working with Hyper-V and Windows PowerShell
Now that you have walked through the basics of deploying Hyper-V, creating virtual machines and managing these virtual machines, let’s explore how you can automate many of these activities with PowerShell.
Return a list of Hyper-V commands
Select the Windows start button, and then type PowerShell.
Run the following command to display a searchable list of PowerShell commands available with the Hyper-V PowerShell Module.
Get-Command -Module hyper-v | Out-GridView
You get something like this:
To learn more about a particular PowerShell command use
Get-Help
. For instance, running the following command returns information about theGet-VM
Hyper-V command.Get-Help Get-VM
The output shows you how to structure the command, what the required and optional parameters are, and the aliases that you can use.
Return a list of virtual machines
Use the Get-VM
command to return a list of virtual machines.
In PowerShell, run the following command:
Get-VM
This displays something like this:
To return a list of only powered on virtual machines add a filter to the
Get-VM
command. A filter can be added by using theWhere-Object
command. For more information on filtering, see Using the Where-Object documentation.Get-VM | where {$_.State -eq 'Running'}
To list all virtual machines in a powered off state, run the following command. This command is a copy of the command from step 2 with the filter changed from 'Running' to 'Off'.
Get-VM | where {$_.State -eq 'Off'}
Start and shut down virtual machines
To start a particular virtual machine, run the following command with name of the virtual machine:
Start-VM -Name <virtual machine name>
To start all currently powered off virtual machines, get a list of those machines and pipe the list to the
Start-VM
command:Get-VM | where {$_.State -eq 'Off'} | Start-VM
To shut down all running virtual machines, run the following command:
Get-VM | where {$_.State -eq 'Running'} | Stop-VM
Create a virtual machine checkpoint
To create a checkpoint using PowerShell, select the virtual machine using the Get-VM
command and pipe this to the Checkpoint-VM
command. Finally give the checkpoint a name using -SnapshotName
. The complete command looks like the following:
Get-VM -Name <VM Name> | Checkpoint-VM -SnapshotName <name for snapshot>
Create a new virtual machine
The following example shows how to create a new virtual machine in the PowerShell Integrated Scripting Environment (ISE). This is a simple example and could be expanded on to include additional PowerShell features and more advanced VM deployments.
To open the PowerShell ISE click on start, type PowerShell ISE.
Run the following code to create a virtual machine. See the New-VM documentation for detailed information on the
New-VM
command.$VMName = "VMNAME" $VM = @{ Name = $VMName MemoryStartupBytes = 2147483648 Generation = 2 NewVHDPath = "C:\Virtual Machines\$VMName\$VMName.vhdx" NewVHDSizeBytes = 53687091200 BootDevice = "VHD" Path = "C:\Virtual Machines\$VMName" SwitchName = (Get-VMSwitch).Name } New-VM @VM
Wrap up and References
This document has shown some simple steps to explore the Hyper-V PowerShell module as well as some sample scenarios. For more information on the Hyper-V PowerShell module, see the Hyper-V Cmdlets in Windows PowerShell reference.