Automating a powershell demo using AutoHotKey

I gave a custom Exchange 2007 course to one of our customers yesterday. Not unsurprisingly, it also included a demo of Exchange Management Shell (EMS). These demos tend to end up in a quest for the exact command, which is quite annoying if you’re in front of an audience (even a small one). Think about:

  • about_regular_expressions or about_regular_expression?
  • $_. or $._?
  • Why is -Confirm $False not working?

This time I decided to try and automate that demo by using the autoreplace feature (Hotstring) in AutoHotKey. The main goal is avoiding typo’s by using tried and true commands in a working order. A poor man’s Start-Demo script if you wish ;-)

The script starts of with a bunch of commands controlling the overall functionallity (the first 3 come with the default template):


Recommended for performance and compatibility with future AutoHotkey releases.

SendMode Input

Recommended for new scripts due to its superior speed and reliability.

SetWorkingDir %A_ScriptDir%

Ensures a consistent starting directory.

#Hotstring EndChars `n

Limit the hotstring end characters to ENTER only

#Hotstring O

Don’t actually type the end character. (I want to launch the command myself after/during my explanation.)

#Hotstring R

Type replacement text in raw mode. (To prevent AHK from interpreting e.g. “{“)

The remainder of the script is actually a long list of hotstring definitions like these ones

::ems02::Get-Help About
::ems03::Get-Help About_Regular_Expression
::ems04::Get-Command *mailbox
::ems05::Get-Help New-Mailbox
::ems06::Get-Help New-Mailbox -Detailed
::ems07::Get-Help New-Mailbox -Full

and so on.

Seems stupid with these simple examples, but the advantage becomes clear for more complex commands. Lets take “ems26” for example;

::ems26::1..10 | Foreach-Object { new-mailbox -Database “Mailbox Database 2” -Name (“User” + $_) -UserPrincipalName (“User” + $_ + “@exchange2007.lab”) -Password $Pwd }

When I type “ems26″+ENTER in EMS AutoHotKey executable automatically replaces this string with “1..10 | Foreach-Object { new-mailbox -Database “Mailbox Database 2” -Name (“User” + $_) -UserPrincipalName (“User” + $_ + “@exchange2007.lab”) -Password $Pwd }” and waits. I do my talking and then hit ENTER again to execute the command.

It worked nicely actually. People were impressed with my typing skills ;-) I only encountered one error because I didn’t delete some manually after a test the day before. It even works with shell running inside a VM while the AutoHotKey script is running on my physical computer.


Tagged with: ,
Posted in Scripting
One comment on “Automating a powershell demo using AutoHotKey

Comments are closed.

IT Pro Summer GP
IT Pro Summer Grand Prix

IT Pro Summer Grand Prix

Microsoft Virtual Academy

MS Virtual Academy

Pro-Exchange / Pro-Lync / Pro-Office365

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Join 158 other followers

%d bloggers like this: