“PowerShell is great because I am flawed “- Jeffrey Snover

I’m a big fan of PowerShell: every-time there’s a problem I need to fix, I think “how can PowerShell help me here?” Back in July there was a great Session on the Microsoft Virtual Academy called “Getting Started with PowerShell”. It was hosted by Senior Technologist at Microsoft Jason Helmick and Distinguished Engineer and the Lead Architect for the Windows Server Division. Snover is the inventor of Windows PowerShell so to have a free 8 hour session on PowerShell by the guy that wrote the thing was an opportunity not to be missed. It was a cross between a gentle canter and a deep dive. It was broadcast on the 18th of July 2013. Typically videos are available to download roughly 2 weeks after the initial broadcast, so it should be available now. Regardless of your experience of PowerShell I’d recommend a watch of this.

I’ve got a lot of time for Jeffrey Snover. Last year at TechEd 2012 I sat in on his Q&A. He speaks with a lot of common sense; his blog On Heroes highlights this sort of sensibility.

In the broadcast, Jeffrey explained the principles he had in mind when designing PowerShell. The naming of cmdlets was standardized to verb-noun, and therefore all cmdlets have a regular, self describing naming convention. There are a list of permitted verb, so that cmdlets are schema-ised (type get-verb to list of permitted verbs). Jeffrey explained that he didn’t want to have to memorize all the cmdlets, and so aliases were born. He also explained about the Get-Help cmdlet, which I’m going to delve into here.

Entering get-help in a PowerShell lists the help topics and how to use the Get-Help cmdlet.

2013-09-04-10_27_11-redphoenix_png

2013-09-04-10_28_27-pre2sql01-prod-infra-int-remote-desktop-connection-manager-v2_png

2013-09-04-10_29_52-pre2sql01-prod-infra-int-remote-desktop-connection-manager-v2_png

2013-09-04-10_44_06-pre2sql01-prod-infra-int-remote-desktop-connection-manager-v2_png

2013-09-04-11_48_44-pre1sql01-prod-infra-int-remote-desktop-connection-manager-v2_png

2013-09-04 11_50_58-PRE1SQL01.PROD.INFRA.INT - Remote Desktop Connection Manager v2What I like about the examples is that they’ve worked really hard on allowing you to explore and expand your own knowledge. One example shows us that some features have help articles that begin with “about_“, such as “aboutsigning” which you will need to know about if you want to run your own modules or scripts on a machine. But if you don’t know what topics have “about” articles, how can you know what they are? The example show us that f you enter “get-help about *” then you get the whole list of topics that have “about” articles.

2013-09-04-15_44_13-pre1sql01-prod-infra-int-remote-desktop-connection-manager-v2_png

2013-09-04-15_50_59-pre1sql01-prod-infra-int-remote-desktop-connection-manager-v2_png

2013-09-04-11_57_47-get-help-help_png

2013-09-04-12_25_28-pre1sql01-prod-infra-int-remote-desktop-connection-manager-v2_png

2013-09-04-12_26_19-get-help-help_png

2013-09-04-12_27_28-pre1sql01-prod-infra-int-remote-desktop-connection-manager-v2_png

There’s a whole heap of features for PowerShell beyond the built in cmdlets or scripts that you can write, and this is just a small subset of what you can do. I highly recommend watching the PowerShell video.