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
Comments