Share via


Get-Verb

Когда я пишу функцию PowerShell, я стараюсь убедиться, что она строго следует стандартам глаголов принятым в PowerShell. Эти глаголы на самом деле существуют в качестве статических свойств нескольких разных типов данных PowerShell, так что я решил создать небольшую расширенную функцию, которая могла бы выдать мне все имеющиеся глаголы. Смотрите:

Get-Verb

Краткое описание:

Получает стандартные глаголы PowerShell

Синтаксис:

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

Подробное описание:

Использует .Net Reflection для получения стандартных глаголов PowerShell и возвращает их в правильной упаковке

Примеры:

     -------------------------- EXAMPLE 1 --------------------------





# Получем все глаголы
Get-Verb
    
    -------------------------- EXAMPLE 2 --------------------------





# Берем случайный глагол и ищем команды в которых он встречается
Get-Verb | Get-Random | Get-Command
    
    -------------------------- EXAMPLE 3 --------------------------





Get-Verb "S*"

Параметры команды:

Имя

Описание

verb

Названия действий для фильтрации (необязательно)

Вот и сама функция Get-Verb:

 function Get-Verb {
           
    <#
    .Synopsis
        Получает стандартные глаголы PowerShell
    .Description
        Использует .Net reflection для получения стандартных глаголов PowerShell и возвращает их как набор свойств (property bag)
    .Parameter verb
        Имена глаголов которые необходимо отфильтровать (необязательный параметр)
    .Example
        # Получем все глаголы
        Get-Verb
    .Example
        # Берем случайный глагол и ищем команды в которых он 
        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 }
        }
    
}

}

Надеюсь, это вам пригодится.

Джеймс Брандейдж (James Brundage) [MSFT]

Автоматически сгенерировано с помощью Write-CommandBlogPost

Перевод: Виктор Горбунков