Automation languages are all about collections. You get collections when you ask for services, processes, whatnot. PowerShell Cmdlets return collections all the time. So why not visualize them and tie virtual context menus to them?
On my flight from Kopenhagen to Seattle it occured to me that a lot of what Quests PowerGUI does really is something I already implemented in SystemScripter three years ago: it visualizes collections in a grid view and lets you tie actions to the results. Back then I called that "Solutions", and SystemScripter visualizes COM collections in a treeview and adds actions as context menu. However, with PowerShell, the same technique is so much easier to develop because the results in any collection is always a PSObject. Back in the old COM world, I had to develop "object normalizers" much similar to PowerShells Extended Type System to get objects from COM, WMI, ADSI and other sources to play nicely with each other.

So I wondered if I could add this to PowerShell+ while I had to sit in that plane anyway and waste time by zipping away champagne. The results are pretty exciting. You can now have your own collections which essentially are PowerShell commands, and you can add context menu entries to each item in a collection. Note how I can just make a collection of my c# stuff and by right-clicking on a c# file, I can invoke a compilation. Each collection you see in that treeview really is just a powershell command, returning the collection. So to add my c# stuff node to the tree, all I added was this: Dir $home *.cs. I could have added all my c# files recursively by adding the -recurse and -filter parameters, you name it.

The actual context menu is generated dynamically for each item, and that is very cool. So you can have different commands for different types. For c# files, I wanted to be able to quickly compile dlls, so I added a context menu "compile" and added the PS code to dynamically call csc. From now on, all I need to do to compile stuff is right-click it. PowerShell+ automatically generates the PowerShell code which you can see in the right true console where it gets executed. I love it and am thinking about a ton of additional context commands for things I do every day. Saves time.
I also added a rich datagrid view while at it that you can fill by just typing a ps command. The example below is the result of dir $home *.cs again. The interesting part is not the grid that lets you explore object properties mich similar to our already integrated variable monitor. The really interesting part is that our dynamic context menus are "object-sensitive", so when you right-click on a grid item, PowerShell+ automatically senses that the grid item you selected matches to one or more commands, and so you get your context menu again and could compile a c# file from here, too. Likewise, if you had displayed exchange mailboxes or AD users, you could access all the commands for those as well.

There is a lot of exciting stuff going on, and our executive meeting has decided that we need to better explain our product strategy to our customers - that's you. Maybe you are wondering why we are working on two products: PowerShellAnalyzer and PowerShell+. One reason is what you have just seen: PowerShell is such a surprisingly fertile platform, it just takes a lot of R&D to embrace and exploit that. That's why we are developing two products from different angels at the same time. Eventually, they will merge, but until that happens, our customers will have access to both worlds. We call that "PowerShell Suite", and it contains both PSA and PS+ for the same one low price. Since PS+ isn't done yet, you get immediate access to the beta now and to the final product when it is released.
Our annual company meeting is over, so tomorrow I'll be flying back to Europe. Another 12 hours of spare time on the plane... I always wanted to add visual workflows...
Take care,
Tobias