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
Перевод: Виктор Горбунков