Advanced Windows PowerShell Scripting Video Training

Advanced Windows PowerShell Scripting Video Training
Advanced Windows PowerShell Scripting Video Training

Thursday, October 31, 2013

How Many ??? is in PowerShell?

When I start a PowerShell class, I am often asked “How many cmdlets are there in PowerShell?”  Well, the answer is “That depends.”  Once we start looking at cmdlets, I am often asked “How many parameters does a cmdlet have?”  The answer is “that depends.”  I also get asked “How many modules are there?” Once again, “that depends.”  This is not the answer that paying clients want to here, but it is the truth.

How many cmdlets are there? It depends on what is available to the client/server you are working on. Also, did you add your own modules?

Get-Command | Measure-Object | Select-Object –ExpandProperty Count

How many modules are there?  What technologies are installed on the local client/server?  Again this is a variable that I cannot answer. 

Get-Module –ListAvailable | Measure-Object | Select-Object –ExpandProperty Count

How many parameters are there?  That depends on which cmdlet you are using.  Utilizing the Help system will expose the different parameters that are available to you for individual cmdlets.

To get a total count of them all parameters is a bit more complex.  This code below will help you out with that.  Be forewarned, this might take a while.

$Total = 0

ForEach ($C in (Get-Command))

{

    $Count++

    $Status = (($Count/($Commands.count))*100)

    $ProgHash = @{'Activity' = "Processing Commands"

                  'PercentComplete' = $Status

                  'Status' = "$Status % Completed"}

    Write-Progress @ProgHash

    Try

    {

        $Total += (Get-Command $C -ErrorAction Stop).Parameters |

            Select-Object -ExpandProperty Keys |

            Measure-Object |

            Select-Object -ExpandProperty Count

    }

    Catch

    {

        $Total += 0

    }

 

}

Write-Output $Total

Here are the stats for my client:

Cmdlets: 3837

Modules: 80

Parameters: 95405

No comments: