Объявление нескольких псевдонимов в расширенной функции PowerShell - PullRequest
0 голосов
/ 28 июня 2018

Документация для объявления псевдонимов в командлетах PowerShell показывает следующее:

Function Get-SomeValue {
    [CmdletBinding()]
    Param(
        [Parameter(Mandatory=$true,ValueFromPipeline=$true,Position=0)]
        [Alias("MachineName")]
        [string[]]$ComputerName
    )

    Get-WmiObject -Class Win32_ComputerSystem -ComputerName $ComputerName
}

Какой синтаксис я использую для создания нескольких псевдонимов?

  • [Alias("one","two","three)]
  • [Alias("one")][Alias("two")][Alias("three")]
  • Ничего из перечисленного
  • Что-то еще?

P.S. При использовании Get-Help где должны отображаться псевдонимы? Пока я их не вижу.

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

К дополнению Полезный ответ Ансгара Вичерса :

Если документация не дотягивает, вы можете самостоятельно изучить базовый класс атрибута, предполагая некоторое знакомство с C #:

[Alias(...)] подразумевает класс AliasAttribute в пространстве имен System.Management.Automation, т.е. System.Management.Automation.AutomationAttribute.

Если вы посмотрите на этот класс по адресу https://docs.microsoft.com/en-us/dotnet/api,, вы найдете https://docs.microsoft.com/en-us/dotnet/api/system.management.automation.aliasattribute?view=powershellsdk-1.1.0,, конструктор которого имеет следующую подпись:

public AliasAttribute (params string[] aliasNames);

Это говорит о том, что несколько имен псевдонимов могут быть переданы [Alias(...)] в качестве отдельных аргументов.

0 голосов
/ 28 июня 2018

[Alias("one")][Alias("two")] и [Alias("one", "two")] оба работают. Псевдонимы отображаются при отображении справки для параметра:

PS C:\> <b>Get-Help Get-SomeValue -Parameter computername</b>

-ComputerName <string[]>

    Required?                    true
    Position?                    0
    Accept pipeline input?       true (ByValue)
    Parameter set name           (All)
    <b><i>Aliases                      one, two</i></b>
    Dynamic?                     false
...