Monday, July 14, 2014

PowerShell Summit Europe (Wish I Could Go!)

Just read more information about the PowerShell Summit Europe, to be held Sept 29-Oct 1st 2014, in Amsterdam (where there is quite a different meaning to the term: hash table).

Wish I could go! I'll have to hope that they will record sessions! Tags: ,

Thursday, July 10, 2014

Satya Speaks–Towards a new Microsoft

I’ve been sitting in the garden, my Windows phone in my pocket, and browsing the web on my Surface RT. where I read with great interest Satya Nadella’s recent mail to Microsoft Employees. Microsoft kindly posted this email this morning at Not only a smart move making the email before Mary Jo managed to get a leaked copy, but the contents are very exciting.

I opined a bit over a year ago that Microsoft needed new management. A view that did me no favors in parts of Redmond. The whole devices, phones and games vs. Azure vs. the ‘what keeps Microsoft afloat (Windows, Office, SQL, Exchange, Lync)’ was simply confusing. And the Cone Of Silence imposed by folks no longer at Microsoft was leading to a very closed culture which IMHO was not helpful for the customer.

But things have changed and that Cone of Silence seems to be a thing of the past. Jeffrey Snover noted at TechEd, The PowerShell team at least is back to working in Internet time as two new exciting builds of PowerShell V5 the team pumped out this year so far.

In July last year, Steve Ballmer set out a new direction, devices and services. That there was a new direction was a really good thing, as was Microsoft’s overarching goal of One Microsoft. And his departure and replacement with Satya was another major change. To me, he’s more than just a safe pair of hands!

But there was still confusion – why lead with the two areas Microsoft has been weak with (consider the relative success of Zune, Kin, Surface RT, BPOS, to name but a few) when the cash cows and technological leaders (Windows and Office) were put in a distant second place.  Satya notes that the ‘devices and services’ description was useful as a start, there is a need to hone on on a more detailed strategy (which is not so devices and services focused).

Today’s mail calls Microsoft ‘the productivity and platform company for the mobile-first and cloud-first world.’ To me this makes a log of sense and eliminates some of the confusion. It puts the platform in it’s place as just that, a platform. A platform to empower productivity. This approach seems to me to make a lot of sense. But as ever the devil is in the detail – Satya notes there is quite a lot of work to be done that will require nothing less than a complete transformation of Microsoft the company. That is a tall order, but the strategy sure seems sound.

The email also talks about the ‘Device OS.’ Which one is that going to be will be an interesting question for resolution. I personally love my Surface 1 RT. I use it daily as a device for consumption of content and some limited creation. Then there’s the Phone OS (I have Windows Phone 8.) It, too, has it’s moments. Finally, there is the traditional Windows as running on the Surface Pro and higher pc/server SKUs running on higher performance hardware. My use of traditional Windows is limited to my desktop and laptop, where I can type a whole lot faster than on the phone (and arguably more accurately). I think we have some interesting changes to the core product roadmap and I am looking forward to that being shared.

Microsoft is changing, and in a good way. The next couple of years is going to be very interesting. The Chinese curse: may you live in interesting times seems to have come home to roost! I look forward to the coming year. Tags:

Monday, July 07, 2014

PowerShell PowerCamp–October 18-19th 2014

What is A PowerShell PowerCamp?
PowerCamp is a fast paced weekend training event that covers all the basic aspects of Windows PowerShell v5 - from the command line to writing production-oriented scripts and leveraging work flow and desired state configuration. We start with the basics including configuration, formatting and providers and remoting and jobs. Then, on day 2, we look at scripting, work flows, managing script libraries using modules, WMI/CIM,  using objects, and PowerShell in Windows. The event concludes with a look at the new Desired State Configuration feature in PowerShell 4 and 5.
The PowerCamp event is a combination of lecture, demonstrations plus Q&A, with the opportunity to type along with the tutor. There are no formal labs. But I do provide the key demos, all the slides, plus a wealth of other add on material on a memory stick you get at the start of day 1. So bring along your laptop, and type away.
What is the Agenda?
The event happens over the Weekend of October 18th and 19th. We start each day promptly at 9:00 and finish no later than 17:00.
Day 1 – The Basics
  • PowerShell Fundamentals – starting with the key elements of PowerShell (Cmdlets, Objects and the Pipeline) plus installation, setup, and profiles
  • What’s new in v5 – this looks at the things specifically added into PowerShell v5.
  • Formatting – how to format output nicely – both by default and using hash tables and display XML
  • Providers – getting into underlying OS data stores (certificate store, AD, registry, etc.) via providers
  • Remoting– working with remote systems using PowerShell’s remoting capabilities

Day 2 – Diving Deeper
  • Scripting Concepts – automating everyday tasks including PowerShell’s language constructs, error handling and debugging and workflows
  • Modules – managing PowerShell script libraries in the enterprise
  • Using .Net, COM, WMI and CIM objects – working with various kinds of objects
  • PowerShell in Windows – a look at what’s there and how you can leverage the huge number of cmdlets
  • PowerShell Desired State Configuration – this final module looks at PowerShell’s Desired State Configuration tool and what you can do with it.
What does it cost?
The cost is £200 (+VAT at the prevailing rate) for the weekend. Meals and accommodation are not covered.
Where is the event going to take place?
The PowerShell PowerCamp is being held at Microsoft Cardinal Place, 100 Victoria Street in Victoria. We will hold it on the weekend of October 18/19 2014. Each day starts promptly at 09:00 and finishes up by 16:45. We’ll also take short break throughout the day, including a 1-hour lunch break
PowerDrinks? After Saturday’s session, attendees are invited to a small nearby public house for some lovely English ale and networking with each other!
Who is the tutor?
The PowerShell Weekend PowerCamp is delivered by Thomas Lee. Thomas has been involved in the PowerShell community since the very beginning. He provides training and consultancy around a range of Microsoft products, with a recent focus on PowerShell and Lync Server. Thomas runs PowerShell training courses around the world, and has been a speaker at conferences across the world for the past decade. In his spare time, he lives with his wife, daughter, wine cellar, and Grateful Dead live recordings archive in a small cottage in the English countryside. His Twitter handle is @DoctorDNS and he maintains two blogs (Under the Stairs at and PowerShell Scripts Blog at
What do I need to bring?
You need to bring a laptop with PowerShell v5 loaded. That can be either native or in a virtual machine. I suggest you have at least two VMs pre-configured – one a server 2012 R2 installation the other a Windows 8 ,1installation. The virtualisation software is not of concern – but you need 64-bit guest OS support for Server 2012! Thus you can use Hyper-V, VMware Workstation or Oracle’s Virtual Box. Heck, run it in a VM on a Mac or Linux PC if you want. Just bring along PowerShell v3/4/5 (preferably V5!).
How do I book?
Contact to book a place and to arrange for the invoice to be paid. Payment must be in cash, cheque or bank transfer – I don’t take credit cards.
More Details
Watch this blog for any hot breaking news on the event.

Tuesday, July 01, 2014

PowerShell ISE Keyboard Shortcuts

I hit a recent issue using the ISE and trying to use the updated version of James Brundage’s ISEPackv2 module – a keyboard shortcut used in James’s module has been taken by a later version of PowerShell. Not the end of the world and easily remedied (heck, I have the code!). I was playing around with keyboard shortcuts and wrote a little function that, when run inside the ISE, gets the keyboard shortcuts that are set.
I’ve published the Get-ISEShortcut over on my PowerShell scripts blog, but the core of function is these lines of code:
$gps = $psISE.GetType().Assembly
$rm = New-Object System.Resources.ResourceManager GuiStrings,$gps
$rm.GetResourceSet((Get-Culture),$True,$True) |
    Where Value -CMatch "(F\d)|(Shift\+)|(Alt\+)|(Ctrl\+)"
This code gets the GUI related resource strings held by the ISE and then weeds out all but he keyboard shortcuts. In the published script, I sort them to get a more effective list. On my system, I get the following:
PSH [C:\foo]: Get-ISEShortcut | ft -AutoSize value, name
Value               Name                                          
-----               ----                                          
Alt+Backspace       EditorUndoShortcut2                           
Alt+Down            EditorSelectNextSiblingShortcut               
Alt+F4              ExitShortcut                                  
Alt+Left            EditorSelectEnclosingShortcut                 
Alt+Right           EditorSelectFirstChildShortcut                
Alt+Shift+Backspace EditorRedoShortcut2                           
Alt+Shift+Down      EditorBoxSelectLineDownShortcut               
Alt+Shift+H         ToggleHorizontalAddOnPaneShortcut             
Alt+Shift+Left      EditorBoxSelectToPreviousCharacterShortcut    
Alt+Shift+Right     EditorBoxSelectToNextCharacterShortcut        
Alt+Shift+T         EditorTransposeLineShortcut                   
Alt+Shift+Up        EditorBoxSelectLineUpShortcut                 
Alt+Shift+V         ToggleVerticalAddOnPaneShortcut               
Alt+Up              EditorSelectPreviousSiblingShortcut           
Ctrl+1              ShowScriptPaneTopShortcut                     
Ctrl+2              ShowScriptPaneRightShortcut                   
Ctrl+3              ShowScriptPaneMaximizedShortcut               
Ctrl+A              EditorSelectAllShortcut                       
Ctrl+Add            ZoomIn1Shortcut                               
Ctrl+Alt+End        EditorMoveCurrentLineToBottomShortcut         
Ctrl+Alt+Home       EditorMoveCurrentLineToTopShortcut            
Ctrl+B              BreakAllDebuggerShortcut                      
Ctrl+Backspace      EditorDeleteWordToLeftShortcut                
Ctrl+Break          StopExecutionShortcut                         
Ctrl+C              StopAndCopyShortcut                           
Ctrl+D              GoToConsoleShortcut                           
Ctrl+Del            EditorDeleteWordToRightShortcut               
Ctrl+Down           EditorScrollDownAndMoveCaretIfNecessaryShortcut
Ctrl+End            EditorMoveToEndOfDocumentShortcut             
Ctrl+F              FindShortcut                                  
Ctrl+F1             ShowCommandShortcut                           
Ctrl+F4             CloseScriptShortcut                           
Ctrl+G              GoToLineShortcut                              
Ctrl+H              ReplaceShortcut                               
Ctrl+Home           EditorMoveToStartOfDocumentShortcut           
Ctrl+I              GoToEditorShortcut                            
Ctrl+Ins            Copy2Shortcut                                 
Ctrl+J              ShowSnippetShortcut                           
Ctrl+Left           EditorMoveToPreviousWordShortcut              
Ctrl+M              ToggleOutliningExpansionShortcut              
Ctrl+Minus          ZoomOut3Shortcut                              
Ctrl+N              NewScriptShortcut                             
Ctrl+O              OpenScriptShortcut                            
Ctrl+Oem6           GoToMatchShortcut                             
Ctrl+Plus           ZoomIn3Shortcut                               
Ctrl+R              ToggleScriptPaneShortcut                      
Ctrl+Right          EditorMoveToNextWordShortcut                  
Ctrl+S              SaveScriptShortcut                            
Ctrl+Shift+Add      ZoomIn2Shortcut                               
Ctrl+Shift+D        GetCallStackShortcut                          
Ctrl+Shift+End      EditorSelectToEndOfDocumentShortcut           
Ctrl+Shift+F9       RemoveAllBreakpointsShortcut                  
Ctrl+Shift+H        HideHorizontalAddOnToolShortcut               
Ctrl+Shift+Home     EditorSelectToStartOfDocumentShortcut         
Ctrl+Shift+L        ListBreakpointsShortcut                       
Ctrl+Shift+Left     EditorSelectToPreviousWordShortcut            
Ctrl+Shift+Minus    ZoomOut4Shortcut                              
Ctrl+Shift+P        StartPowerShellShortcut                       
Ctrl+Shift+Plus     ZoomIn4Shortcut                               
Ctrl+Shift+R        NewRemotePowerShellTabShortcut                
Ctrl+Shift+Right    EditorSelectToNextWordShortcut                
Ctrl+Shift+Subtract ZoomOut2Shortcut                              
Ctrl+Shift+U        EditorMakeUppercaseShortcut                   
Ctrl+Shift+V        HideVerticalAddOnToolShortcut                 
Ctrl+Space          IntellisenseShortcut                          
Ctrl+Subtract       ZoomOut1Shortcut                              
Ctrl+T              NewRunspaceShortcut                           
Ctrl+U              EditorMakeLowercaseShortcut                   
Ctrl+Up             EditorScrollUpAndMoveCaretIfNecessaryShortcut 
Ctrl+V              Paste1Shortcut                                
Ctrl+W              CloseRunspaceShortcut                         
Ctrl+X              Cut1Shortcut                                  
Ctrl+Y              EditorRedoShortcut1                           
Ctrl+Z              EditorUndoShortcut1                           
F1                  F1KeyboardDisplayName                         
F1                  HelpShortcut                                  
F10                 StepOverShortcut                              
F10                 F10KeyboardDisplayName                        
F11                 StepIntoShortcut                              
F11                 F11KeyboardDisplayName                        
F12                 F12KeyboardDisplayName                        
F2                  F2KeyboardDisplayName                         
F3                  F3KeyboardDisplayName                         
F3                  FindNextShortcut                              
F4                  F4KeyboardDisplayName                         
F5                  F5KeyboardDisplayName                         
F5                  RunScriptShortcut                             
F6                  F6KeyboardDisplayName                         
F7                  F7KeyboardDisplayName                         
F8                  F8KeyboardDisplayName                         
F8                  RunSelectionShortcut                          
F9                  F9KeyboardDisplayName                         
F9                  ToggleBreakpointShortcut                      
Shift+Backspace     EditorDeleteCharacterToLeftShortcut           
Shift+Del           Cut2Shortcut                                  
Shift+Down          EditorSelectLineDownShortcut                  
Shift+End           EditorSelectToEndOfLineShortcut               
Shift+Enter         EditorInsertNewLineShortcut                   
Shift+F11           StepOutShortcut                               
Shift+F3            FindPreviousShortcut                          
Shift+F5            StopDebuggerShortcut                          
Shift+Home          EditorSelectToStartOfLineShortcut             
Shift+Ins           Paste2Shortcut                                
Shift+Left          EditorSelectToPreviousCharacterShortcut       
Shift+PgDn          EditorSelectPageDownShortcut                  
Shift+PgUp          EditorSelectPageUpShortcut                    
Shift+Right         EditorSelectToNextCharacterShortcut           
Shift+Up            EditorSelectLineUpShortcut