header image

Archive for Hyper-V

Hyper-V book deal

Posted by: | March 10, 2017 Comments Off on Hyper-V book deal |

March 11 2017 – My book Learn Hyper-V in a Month of Lunches is Manning’s Deal of the day. Get 50% off using code dotd031117au at http://bit.ly/2niU715

Also see https://www.manning.com/dotd

under: Books, Hyper-V, PowerShell

Using Hyper-V

Posted by: | January 29, 2017 Comments Off on Using Hyper-V |

When you think of using Hyper-V most people think of virtualising their infrastructure – big servers running 10s, 100s or even 1000s of virtual machines.

 

There is another reason for using Hyper-V

 

You can use Hyper-V to create a VM so you can install an application that may conflict with you standard workstation – as an example you may need access to a component of an older version of Office for instance Infopath 2010 but you don’t want that application to conflict with your installation of the latest and greatest version of Office.

 

The Windows client operating system has the ability to install Hyper-V since Windows 8. So if you’re running Windows 8, Windows 8.1 or Windows 10 AND your machine is capable of supporting Hyper-V:

– Windows Enterprise, Professional or Educational

– 64-bit processor with SLAT

– CPU support for VM monitor mode extension

– Minimum of 4GB of memory

 

Install Hyper-V

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V –All

 

Create a virtual switch and create your VMs

 

See https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v and subsequent links

 

Better still get a copy of Learn Hyper-V in a Month of Lunches

https://www.manning.com/books/learn-hyper-v-in-a-month-of-lunches

under: Hyper-V

Learn Hyper-V – Deal of the day – January 28 2017

Posted by: | January 27, 2017 Comments Off on Learn Hyper-V – Deal of the day – January 28 2017 |

Deal of the Day January 28: Half off my book Learn Hyper-V in a Month of Lunches. Use code dotd012817au at http://bit.ly/2jAIfWK

 

More information from DOTD’s page at https://www.manning.com/dotd

under: Books, Hyper-V

Christmas treat

Posted by: | December 17, 2016 Comments Off on Christmas treat |

If you’re looking for something to treat yourself for Christmas then garb a copy of My new book – Learn Hyper-V in a Month of Lunches.

 

Better still tomorrow 18 December 2016 you can get the book for half price:

 

Deal of the Day December 18: Half off Learn Hyper-V in a Month of Lunches. Use code dotd121816au at http://bit.ly/2hOkhKb

under: Books, Hyper-V

Hyper-V book

Posted by: | November 11, 2016 Comments Off on Hyper-V book |

I’ve been working with Andy Syrewicze on Learn Hyper-V in a Month of Lunches.

 

Its now available in Manning’s Early Access program (MEAP) https://www.manning.com/books/learn-hyper-v-in-a-month-of-lunches

 

Until 14 November 2016 you can get the MEAP for half price using code mlsyrewicze

under: Books, Hyper-V

New Hyper-V switch on Windows 10

Posted by: | November 3, 2016 Comments Off on New Hyper-V switch on Windows 10 |

My test/lab machine had been running Windows Server 2016 TP 5. With Server 2016 now RTM it was time for a rebuild.  Unfortunately, 2016 RTM carried on from TP5 and decided not to work with my wireless card.

 

Decided to try using Hyper-V on Windows 10 – it recognises the wifi card and is happy to work with it.

 

After installing the Hyper-V feature I needed to create some Hyper-v virtual switches

PS> New-VMSwitch -SwitchType External -Name ‘LAN’ -NetAdapterName ‘LAN’
New-VMSwitch : Cannot validate argument on parameter ‘SwitchType’. The argument "External" does not belong to the set
"Internal,Private" specified by the ValidateSet attribute. Supply an argument that is in the set and then try the
command again.
At line:1 char:26
+ New-VMSwitch -SwitchType External -Name ‘LAN’ -NetAdapterName ‘LAN’
+                          ~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [New-VMSwitch], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.HyperV.PowerShell.Commands.NewVMSwitch

 

But External is a valid switch type

 

PS> New-VMSwitch -SwitchType x
New-VMSwitch : Cannot bind parameter ‘SwitchType’. Cannot convert value "x" to type
"Microsoft.HyperV.PowerShell.VMSwitchType". Error: "Unable to match the identifier name x to a valid enumerator name.
Specify one of the following enumerator names and try again:
Private, Internal, External"
At line:1 char:26
+ New-VMSwitch -SwitchType x
+                          ~
    + CategoryInfo          : InvalidArgument: (:) [New-VMSwitch], ParameterBindingException
    + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.HyperV.PowerShell.Commands.NewVMSwitch

 

Wonder how many of these issues I’m going to find!

under: Hyper-V, Windows 10

Shutting down machines in parallel

Posted by: | February 17, 2015 Comments Off on Shutting down machines in parallel |

My test lab is a set of virtual machines running on a Lenovo w1510 laptop. When I’ve finished working for the day I want to shut down the virtual machines and the laptop. I may have anywhere between 2 and 8 (or more) VMs running so scripting the shutdown helps a lot.

 

Machines can be shutdown independently so this is an action that is ideal for parallel execution through a workflow.

 

workflow stop-allvms {
$vms = Get-VM | where State -eq "Running" 
foreach -parallel ($vm in $vms) {
Stop-Computer -PSComputerName $vm.Name -Force -Verbose
}
}

stop-allvms

 

Get the running VMs. use foreach –parallel to run stop-computer against each VM. Notice I’ve had to change the parameter on Stop-Computer from –ComputerName to –PSComputerName

 

Another little workflow that makes life easier. I looks like workflows aren’t going to be the game changer that we originally thought but they do add some interesting options.

under: Hyper-V, PowerShell

Starting VMs based on WSUS state

Posted by: | February 10, 2015 Comments Off on Starting VMs based on WSUS state |

I use WSUS in my lab to update machines – means I only have to download updates once. The issue is that I have to start the VMs so they can communicate with the WSUS server. WSUS will start to flag warnings if machines haven’t contacted the WSUS server for more than that length of time.

 

Putting that together I can use the UpdateServices (WSUS) module and the Hyper-V module to start machines that have been turn off more than 7 days.

 

$date = (Get-Date).AddDays(-7)
Get-WsusComputer -NameIncludes ‘W12R2’ |
where LastReportedStatusTime -lt $date |
foreach {
  $psitem.FullDomainName
  $name = ($psitem.FullDomainName -split "\.")[0]

  $vm = Get-VM -Name $name -ComputerName server02
 
  if ($vm.State -eq ‘Off’) {

    Start-VM -Name $name -ComputerName server02
 
    Start-Sleep -Seconds 30
  }
}

 

Set a date 7 days in the past.

 

Use get-WsusComputer to pull the machine names. I filter on W12R2 (all my machine names contain an abbreviated OS type) and check the last status report time.

 

Any machines that haven’t reported – the VM data is retrieved and if the machine isn’t running it’s started. Machines take about 25-30 seconds to boot on my lab so a sleep of 30 seconds means I’m not starting them all at once.

under: Hyper-V, PowerShell, WSUS

VM disk info

Posted by: | January 14, 2014 | No Comment |

A question came into the forum about getting information on the virtual disks associated with particular Hyper-V virtual machines. Is a bit of a digging exercise but this gets the results:

Get-VM |
foreach {
$VMname = $psitem.Name
Get-VMHardDiskDrive -VMName $VMname  |
foreach {
   Get-VHD -Path $_.Path |
   select @{N=’VMname’; e={$VMName}}, Path, Size, FileSize
}
}

Get the set of VMs and for each of them get the VMHardDisks associated with the machine. For each VMHardDisk get the VHD – this is where you find the data you need.

 

The size and file size are in bytes – its a simple matter to create calculated fields that divide by 1GB or percentages if you require

under: Hyper-V, PowerShell original, Windows 2012 R2, Windows Server 2012

I needed to look at my virtual machines & their disk sizes – with Windows 2012 R2 upgrade in the works I need to do a bit more tidy up

I found two cmdlets in the Hyper-V module:

get-vmharddiskdrive – can be related to the virtual machine but doesn’t give a size

get-vhd – expects a path to the VHD file

Luckily get-vmharddiskdrive outputs the path. This gives me a nice pipeline:

Get-VM |
Get-VMHardDiskDrive |
Get-VHD |
select Path, @{N=’Size’; E={[math]::Round(($_.FileSize / 1gb), 2) }} |
sort  -Descending

Get the VMs pipe through get-vmharddiskdrive  and get-vhd  then select and sort and you’re done.

I always break my pipelines at a pipe symbol – it acts as a line continuation in the console and ISE so anything thing else is just extra unnecessary work

under: Hyper-V, PowerShell V3, Windows Server 2012

« Newer Posts - Older Posts »

Categories