Ok… I was playing.  I’ll admit it.

When you do GET-HELP on some cmdlets, especially ones with a LARGE abundance of available parameters, they might appear a little daunting.

I used to do a little trick by copying the output under “SYNTAX” on the GET-HELP.  I would then paste it into my favorite Word processor (Microsoft Word 2010 naturally) and do two quick Search/Replace operations to pull the lines together and then split based upon the display of the brackets “[]” in the display.

That little trick would give me a nice viewable and easy to understand list of the parameters available.

I am now more comfortable with sticking my fingers under the hood (and not getting burned or snipped by spinning Radiator fans) with Powershell and decided there HAD to (I mean with a big giant Heaping CAPITAL H) HAD TO be a Powershell way.

I played with the properties exposed from GET-HELP.  I made the incorrect presumption the output was string.  Then I forgot Rule 1 in Powershell.

“All output is an Object”

Turned out the Object in question had some interesting properties available, namely one called “SYNTAX”.  On a whim, I wondered if the Syntax NoteProperty was the “How to use Powershell Syntax” from GET-HELP.  So I popped it open

(GET-HELP GET-QADUSER).Syntax

 

image

“Jumpin’ June Bugs!” I screamed out.  It was!  So again another “GET-MEMBER” to see what this might yield.

(GET-HELP GET-QADUSER).Syntax | GET-MEMBER

 

image

“SyntaxItem” now…. but it was a NoteProperty.  I wanted to see just what it would expose.   So a quick “SELECT-OBJECT” out of my sleeve later

(GET-HELP GET-QADUSER).Syntax | SELECT-OBJECT –ExpandProperty SyntaxItem

 

image

“AHA! There’s the tricky fellow hiding inside!”  So another piece to open up with SELECT-OBJECT…

(GET-HELP GET-QADUSER).Syntax | SELECT-OBJECT –ExpandProperty SyntaxItem | SELECT-OBJECT –ExpandProperty parameter

 

image

WHOOOOOOSH!!! The screen filled with the familiar “Detailed” data from help.  But again, I learned … run a GET-MEMBER to see what the object is exposing….

(GET-HELP GET-QADUSER).Syntax | SELECT-OBJECT –ExpandProperty SyntaxItem | SELECT-OBJECT –ExpandProperty parameter | GET-MEMBER

 

image

I took a shot that “Name” might be the parameter name, so yet one more SELECT-OBJECT and the fingers crossed…

(GET-HELP GET-QADUSER).Syntax | SELECT-OBJECT –ExpandProperty SyntaxItem | SELECT-OBJECT –ExpandProperty parameter | SELECT-OBJECT name

 

image

JACKPOT!  I had it!  An easier way to view the names!   Now to make this into something useful!  A regular script to pull the data out.  The only parameter I was really supplying would be the results of a GET-HELP on any Cmdlet I had.

——– Begin Script ——–

param($HelpData)

($HelpData).Syntax | SELECT-OBJECT –ExpandProperty SyntaxItem | SELECT-OBJECT –ExpandProperty parameter | SELECT-OBJECT name

——- EndScript ——-

So most of the time I’m ok reading with a GET-HELP, but now for those cmdlets with more parameters than I can imagine, I can at least get them out in a nice clean list to see what I can work with.  Now to find out all I have to do is run my script like so

./LISTPARAMETERS.PS1 –HelpData (GET-HELP GET-CHILDITEM)

To get all the parameters in a nice list from GET-CHILDITEM.   I’m thinking this should make working with the WPF stuff a little easier.  Now those, THOSE have some parameters Smile

Remember, the Power of Shell is in YOU

Sean
The Energized Tech

Advertisements