This weekend I did a bunch of virtual machine automation – and wanted to share some code snippets. The first snippet is some code that will simply type a string on a virtual machine:
$VMName = “Windows 10 Enterprise”
$VMCS = Get-WmiObject -Namespace root\virtualization\v2 -Class Msvm_ComputerSystem -Filter “ElementName=’$($VMName)'”
$keyboard = $VMCS.GetRelated(“Msvm_Keyboard”)
$keyboard.TypeText(“Hello!”) | out-null
This is a chunk of PowerShell code. What it does is get the WMI object for the virtual machine that I am controlling; from there it gets the keyboard object for the virtual machine. Finally it calls “TypeText” and hands in a string.
Nice and simple. However, it should be noted that since this is literally sending keystrokes through the virtual machines keyboard – you will not see these keystrokes if you are using enhanced mode. If you are in basic mode – then you will see everything as expected.