Typing special characters on a virtual machine

On Monday I showed you how to send a string into a virtual machine.  But what if you need to send in special characters?  Well - there is a method for that:

$VMName = "Windows 10 Enterprise"
$VMCS = Get-WmiObject -Namespace root\virtualization\v2 -Class Msvm_ComputerSystem -Filter "ElementName='$($VMName)'"
$keyboard = $VMCS.GetRelated("Msvm_Keyboard")
$keyboard.TypeKey(0x70) | out-null
sleep -Milliseconds 100
$keyboard.TypeKey(0x09) | out-null
sleep -Milliseconds 100
$keyboard.TypeKey(0x32) | out-null
sleep -Milliseconds 1200

This chunk of PowerShell code uses "TypeKey" to send through keycodes (which are all defined here: https://msdn.microsoft.com/en-us/library/dd375731(v=vs.85).aspx).  The code above sends the "F1" key, then the "tab" key and finally a number "2".

Just like TypeText - TypeKey only works when virtual machines are in basic mode; not enhanced mode.

Cheers,
Ben