Skip to content
Menu
The Lonely Administrator
  • PowerShell Tips & Tricks
  • Books & Training
  • Essential PowerShell Learning Resources
  • Privacy Policy
  • About Me
The Lonely Administrator

Get PowerShell Parameter Aliases

Posted on February 12, 2014

magnifying-glass During a recent PowerShell training class we naturally covered aliases. An alias is simply an alternate name, often something that is shorter to type, or maybe even more meaningful. There are aliases for commands, properties and parameters. Discovering aliases for commands is pretty easy with Get-Alias. Property aliases are discoverable using Get-Member. But, discovering parameter aliases is a bit more difficult. The information is there, but doesn't surface very well. It would be terrific if help showed parameter aliases but it rarely does. So here are some ways you might find parameter aliases.

Manage and Report Active Directory, Exchange and Microsoft 365 with
ManageEngine ADManager Plus - Download Free Trial

Exclusive offer on ADManager Plus for US and UK regions. Claim now!

One way is to use Get-Help.

PS C:\> get-help get-process -Parameter * | where {$_.aliases} | select name,aliases

name                                              aliases
----                                              -------
ComputerName                                      Cn
FileVersionInfo                                   FV,FVI
Id                                                PID
Name                                              ProcessName

But you need to use Get-Help. If you use the Help function it won't work. In the command I filtered out parameters that didn't have aliases. You can also pipe Get-Command to Get-Help.

PS C:\> get-command get-process | get-help -Parameter * | where {$_.aliases} | select name,aliases

name                                              aliases
----                                              -------
ComputerName                                      Cn
FileVersionInfo                                   FV,FVI
Id                                                PID
Name                                              ProcessName

But for some reason, this doesn't always work. There are aliases for Get-Service, but these same commands fail to show it.

PS C:\> get-help get-service -Parameter * | where {$_.aliases} | select name,aliases
PS C:\> get-command get-service | get-help -Parameter * | where {$_.aliases} | select name,aliases

I know there are aliases because Get-Command shows me, although it takes a little work to extract this information.

PS C:\> (get-command get-service).parameters.getenumerator() | foreach {$_.value} | Select Name,Alia
ses

Name                                              Aliases
----                                              -------
Name                                              {ServiceName}
ComputerName                                      {Cn}
DependentServices                                 {DS}
RequiredServices                                  {SDO, ServicesDependedOn}
DisplayName                                       {}
Include                                           {}
Exclude                                           {}
InputObject                                       {}
ErrorAction                                       {ea}
WarningAction                                     {wa}
Verbose                                           {vb}
Debug                                             {db}
ErrorVariable                                     {ev}
WarningVariable                                   {wv}
OutVariable                                       {ov}
OutBuffer                                         {ob}
PipelineVariable                                  {pv}

Plus I can verify at the prompt:

PS C:\> get-service wuauserv -cn $hvr2 -sdo

Status   Name               DisplayName
------   ----               -----------
Running  rpcss              Remote Procedure Call (RPC)

Since it appears I can always get the information from Get-Command, I wrote a function called Get-ParameterAlias.

#requires -version 3.0

Function Get-ParameterAlias {

<#
.SYNOPSIS
List command parameter aliases
.DESCRIPTION
This command will display all of the parameter aliases for a given command or 
alias. It isn't always easy to discover parameter aliases. Many are not 
documented on cmdlet help. But they can be discovered by digging into the
output from Get-Command. 

Specify a command or alias or pipe results from Get-Command to this command.

By default, common parameters such as ErrorAction, or omitted unless you 
use -IncludeCommon
.EXAMPLE
PS C:\> get-parameteralias invoke-command

Command                          Name                                       Aliases 
-------                          ----                                       ------- 
Invoke-Command                   ComputerName                               {Cn}    
Invoke-Command                   ConnectionUri                              {URI, CU}
Invoke-Command                   InDisconnectedSession                      {Disconnected}
Invoke-Command                   HideComputerName                           {HCN}         
Invoke-Command                   ScriptBlock                                {Command}
Invoke-Command                   FilePath                                   {PSPath} 
Invoke-Command                   ArgumentList                               {Args} 

.EXAMPLE
PS C:\>  get-command dir | Get-ParameterAlias

Command                         Name                                       Aliases                                   
-------                         ----                                       -------                                   
Invoke-Command                  ComputerName                               {Cn}
Invoke-Command                  ConnectionUri                              {URI, CU}
Invoke-Command                  InDisconnectedSession                      {Disconnected}
Invoke-Command                  HideComputerName                           {HCN} 
Invoke-Command                  ScriptBlock                                {Command}
Invoke-Command                  FilePath                                   {PSPath}
Invoke-Command                  ArgumentList                               {Args} 


.NOTES
Last Updated: 2/11/2014 
Version     : 0.9

Learn more:
 PowerShell in Depth: An Administrator's Guide (http://www.manning.com/jones2/)
 PowerShell Deep Dives (http://manning.com/hicks/)
 Learn PowerShell 3 in a Month of Lunches (http://manning.com/jones3/)
 Learn PowerShell Toolmaking in a Month of Lunches (http://manning.com/jones4/)


  ****************************************************************
  * DO NOT USE IN A PRODUCTION ENVIRONMENT UNTIL YOU HAVE TESTED *
  * THOROUGHLY IN A LAB ENVIRONMENT. USE AT YOUR OWN RISK.  IF   *
  * YOU DO NOT UNDERSTAND WHAT THIS SCRIPT DOES OR HOW IT WORKS, *
  * DO NOT USE IT OUTSIDE OF A SECURE, TEST SETTING.             *
  ****************************************************************
.LINK
Get-Command
.LINK
https://jdhitsolutions.com/blog/2014/02/get-powershell-parameter-aliases
.INPUTS
[String] or [System.Management.Automation.CmdletInfo] or [System.Management.Automation.AliasInfo]
.OUTPUTS
[System.Management.Automation.ParameterMetadata]
#>

[cmdletbinding()]
Param(
[Parameter(Position=0,Mandatory=$True,
HelpMessage="Enter a command or cmdlet name",
ValueFromPipeline=$True,ValueFromPipelineByPropertyName=$True)]
[ValidateNotNullorEmpty()]
[Alias("command")]
[object]$Name,
[Switch]$IncludeCommon
)

Begin {
    Write-Verbose "Starting $($MyInvocation.mycommand)"
    if ($IncludeCommon) {
        $common=$Null
    } 
    else {
    #define common parameter names. PipelineVariable was added in v4.
    $common= "Verbose","Debug","ErrorAction","WarningAction",
    "ErrorVariable","WarningVariable","OutVariable","OutBuffer",
    "Whatif","Confirm","PipelineVariable"    

    }
} #begin

Process {

Try {

    #test if piped in object is already a command info object
    if ($Name -is [System.Management.Automation.CmdletInfo]) {
      Write-Verbose "Processing a command"
      $parameters = $name.Parameters
      $commandname= $name.Name
    }
    elseif ($Name -is [System.Management.Automation.AliasInfo]) {
      Write-Verbose "Processing an alias"
      $parameters = $name.Parameters
      $commandname= $name.ResolvedCommand
    }
    else {
        #must be a string so get the command
        Write-Verbose "Getting command information for $Name"
        $command = Get-Command $Name -ErrorAction "Stop"
        $commandname= $command.Name
        $parameters = $command.parameters
    }
} #try

Catch
{
    Write-Warning "Failed to find command $Name. $($_.Exception.message)"
   
    #bail out
    Return
}

Write-Verbose "Analyzing $CommandName"
if ($parameters) {
    $parameters.GetEnumerator() | where {$_.key -notin $common} |
    foreach {
      #get parameters with aliases
      $_.value | where {$_.Aliases} | 
      Select @{Name="Command";Expression={$CommandName}},Name,Aliases
    }
 } #if parameters found  
} #process

End {
    Write-Verbose "Ending $($MyInvocation.mycommand)"
} #end
} #end function

#set an optional alias
Set-Alias -Name gpa -value Get-ParameterAlias

The function can take a command name or you can pipe something from Get-Command.

PS C:\> Get-ParameterAlias get-wmiobject

Command                           Name                             Aliases
-------                           ----                             -------
Get-WmiObject                     Class                            {ClassName}
Get-WmiObject                     ComputerName                     {Cn}
Get-WmiObject                     Namespace                        {NS}


PS C:\> get-command get-service | get-parameteralias

Command                           Name                             Aliases
-------                           ----                             -------
Get-Service                       Name                             {ServiceName}
Get-Service                       ComputerName                     {Cn}
Get-Service                       DependentServices                {DS}
Get-Service                       RequiredServices                 {SDO, ServicesDependedOn}

Because parameter information from Get-Command includes common parameters such as -ErrorAction, I've skipped those by default, unless you use the -IncludeCommon parameter.

Now it is easy to discover parameter aliases for say a module.

get-command -module hyper-v | get-parameteralias | out-gridview -title "Hyper-V Aliases"

get-parameteralias

Knowing parameter aliases can make you more efficient in the console. But remember, when committing PowerShell to a script use the full parameter name as some of these aliases can be a bit cryptic.

As always, I hope you'll let me know what you think.


Behind the PowerShell Pipeline

Share this:

  • Click to share on X (Opens in new window) X
  • Click to share on Facebook (Opens in new window) Facebook
  • Click to share on Mastodon (Opens in new window) Mastodon
  • Click to share on LinkedIn (Opens in new window) LinkedIn
  • Click to share on Pocket (Opens in new window) Pocket
  • Click to share on Reddit (Opens in new window) Reddit
  • Click to print (Opens in new window) Print
  • Click to email a link to a friend (Opens in new window) Email

Like this:

Like Loading...

Related

2 thoughts on “Get PowerShell Parameter Aliases”

  1. Pingback: Zajímavé novinky ze světa IT ze 7. týdne 2014 | Igorovo
  2. Pingback: Microsoft Most Valuable Professional (MVP) – Best Posts of the Week around Windows Server, Exchange, SystemCenter and more – #68 - Windows Management - TechCenter - Dell Community

Comments are closed.

reports

Powered by Buttondown.

Join me on Mastodon

The PowerShell Practice Primer
Learn PowerShell in a Month of Lunches Fourth edition


Get More PowerShell Books

Other Online Content

github



PluralSightAuthor

Active Directory ADSI Automation Backup Books CIM CLI conferences console Friday Fun FridayFun Function functions Get-WMIObject GitHub hashtable HTML Hyper-V Iron Scripter ISE Measure-Object module modules MrRoboto new-object objects Out-Gridview Pipeline PowerShell PowerShell ISE Profile prompt Registry Regular Expressions remoting SAPIEN ScriptBlock Scripting Techmentor Training VBScript WMI WPF Write-Host xml

©2025 The Lonely Administrator | Powered by SuperbThemes!
%d