One of the best design decisions, when PowerShell was initially being created, was using approved verbs in naming a command. When people use those, we can guarantee some consistency between command names. As commands — both cmdlets and functions — we expect to see an approved verb followed by a dash and then a singular noun or nouns. Sometimes there’s a prefix after the dash, but before the noun(s). Here are a few examples of some random commands: Import-Module
, Get-VMGroup
, Add-AzVhd
, Export-AzDataLakeStoreItem
, Set-WsusProduct
, and Stop-SSMCommand
. While these commands display a few of the approved verbs, it’s not all of them. Use the Get-Verb
command to view the full list of the approved verbs, from which you should choose when writing a new function or cmdlet.
There may not have always been this many, but in 7.2.0-preview4, there are 100 approved verbs.
[PS7.2.0-preview.4][C:\] Get-Verb | Measure-Object Count : 100 Average : Sum : Maximum : Minimum : StandardDeviation : Property :
Even though there’s a good number of options from which to choose, there may not always feel like there’s one for your newest command. While I’ve brought this up to the community at least a couple of times before, it’s time to do it again. It’s the Get-TMVerbSynonym
function. I authored it in June 2016, I updated it in 2017, and I used it earlier today, in 2021. It can be found in the Powershell Gallery and installed using the below command:
[PS7.2.0-preview.4][C:\] Install-Script -Name Get-TMVerbSynonym
The file it downloads is a function inside of a script file — a .ps1 file. In order to add a function inside a script file to the current PowerShell session, you need to dot source the file. That’s what the mystery dot is doing between my prompt and the path to the .ps1 file below.
[PS7.2.0-preview.4][C:\] . C:\Users\tommymaynard\Documents\PowerShell\Scripts\Get-TMVerbSynonym.ps1
Once it’s dot sourced, you can use the function. In closing, here are few examples of the function in action. Each of these commands uses the Format-Table -AutoSize
command and parameter in order that the results are easier to read.
[PS7.1.3][C:\] Get-TMVerbSynonym -Verb change | Format-Table -AutoSize Verb Synonym Group Approved Notes ---- ------- ----- -------- ----- Change Alter False Change Commute False Change Convert Data True Change Deepen False Change Dress False Generic Term Change Exchange False Change Get Dressed False Generic Term Change Go False Generic Term Change Interchange False Change Locomote False Generic Term Change Modify False Change Move Common True Generic Term Change Replace False Generic Term Change Shift False Change Stay False Antonym Change Switch Common True Change Transfer False Change Transfer False Generic Term Change Travel False Generic Term Change Vary False [PS7.1.3][C:\] Get-TMVerbSynonym -Verb change -Approved | Format-Table -AutoSize Verb Synonym Group Approved Notes ---- ------- ----- -------- ----- Change Convert Data True Change Move Common True Generic Term Change Switch Common True [PS7.1.3][C:\]
If there’s ever a verb you want to use, but it’s not approved, then try this function. You’ll likely be able to choose something that’s close enough, and is approved.