January 2nd, 2009

Get-Verb

PowerShell Team
PowerShell Team

.cmdletname { font-size:large } .cmdletsynopsis { font-size:medium } .cmdletdescription { font-size:medium } .cmdletparameters { font-size:medium } th { font-size: medium; font-style: italic } table { border: 1 }

When I write a PowerShell function, I try to ensure that it follows the PowerShell standard verbs. These verbs actually exist as static properties in a few different types in PowerShell, so I thought I’d make a quick advanced function so I can get all of the Verbs. Check it out:

Get-Verb

Synopsis:

Gets the standard PowerShell verbs

Syntax:

Get-Verb [[-verb] [<String[]>]] [-Verbose] [-Debug] [-ErrorAction [<ActionPreference>]] [-WarningAction [<ActionPreference>]] [-ErrorVariable [<String>]] [-WarningVariable [<String>]] [-OutVariable [<String>]] [-OutBuffer [<Int32>]] [<CommonParameters>]

Detailed Description:

Uses reflection to get the standard PowerShell verbs and return them as a property bag

Examples:

    -------------------------- EXAMPLE 1 --------------------------
# Gets all verbs
Get-Verb
    
    -------------------------- EXAMPLE 2 --------------------------
# Gets a random verb and searches for commands with that verb
Get-Verb | Get-Random | Get-Command
    
    -------------------------- EXAMPLE 3 --------------------------
Get-Verb "S*"
    

Command Parameters:

Name Description
verb The verb names to filter on (optional)

Here’s Get-Verb:

function Get-Verb {
    <#
    .Synopsis
        Gets the standard PowerShell verbs
    .Description
        Uses reflection to get the standard PowerShell verbs and return them as a property bag
    .Parameter verb
        The verb names to filter on (optional)
    .Example
        # Gets all verbs
        Get-Verb
    .Example
        # Gets a random verb and searches for commands with that verb
        Get-Verb | Get-Random | Get-Command
    .Example
        Get-Verb "S*"
    #>
    param(
        [Parameter(ValueFromPipeline=$true,Position=0)]
        [string[]]
        $verb = "*"
    )
begin {
        $allVerbs = [PSObject].Assembly.GetTypes() |
            Where-Object {$_.Name -like "*Verbs*"} |
            Get-Member -type Property -static |
            Select-Object @{
                Name='Verb'
                Expression = {$_.Name}
            }, @{
                Name='Group'
                Expression = {
                    $str = "$($_.TypeName)"
                    $str.Substring($str.LastIndexOf("Verbs") + 5)
                }
            }, @{
                Name='Type'
                Expression = { $_.TypeName -as [Type] }
            }
}
process {
        foreach ($v in $verb) {
            $allVerbs | Where-Object { $_.Verb -like $v }
        }
}
}
    

Automatically generated with Write-CommandBlogPost

Author

PowerShell Team
PowerShell Team

PowerShell is a task-based command-line shell and scripting language built on .NET. PowerShell helps system administrators and power-users rapidly automate tasks that manage operating systems (Linux, macOS, and Windows) and processes.

0 comments

Discussion are closed.