How To Find Which Cmdlets Have No Alias

Finding cmdlets that already have aliases is really easy.  You can use the Get-Alias cmdlet to find them.

gal | select definition –unique

# “Gal” is an alias for Get-Alias. “Select” is an alias for Select-Object 

If you want to speed up your time at the console, you should consider finding ways to type less.  That can be done by creating aliases.  There are already a lot of aliases, but here’s how to find all the cmdlets that do not yet have an alias.

Get-Command –commandtype cmdlet | Where-Object { !(Get-Alias –Definition $ –erroraction silentlycontinue) }

# or, the same thing using aliases

gcm –commandtype cmdlet | ? { !(gal –definition $ –ea silentlycontinue)}

If you store the results in an array called $noAlias we can easily do things like “find how many cmdlets have no alias”


That’s 133 cmdlets with no alias.  Ripe for the picking. How about the 3 cmdlets with no alias that are the longest to type?  Here they are:

$noAlias | sort –des {$} | select name –first 3


Or instead of the longest names, here are the types of objects to perform actions on (the nouns) that may benefit from having more aliases.

$noAlias | group noun | sort –des count | select count, name –first 5

Count Name
—– —-
    7 EventLog
    6 PSSessionConfiguration
    6 Computer
    5 Transaction
    5 Event

So there you have it.  You now can see lots of places where you can further streamline your console commands by creating aliases for cmdlets that don’t have them.