Более короткие версии параметров командлета powershell - PullRequest
4 голосов
/ 01 сентября 2011

Учитывая мои исследования, я не верю, что следующее легко выполнимо, если вообще.В качестве последнего средства, однако, я решил проверить здесь.

В Powershell 2.0 мне нужен способ сократить (досадно) длинные имена параметров для различных командлетов.Я хотел бы получить абсолютный контроль над тем, как выглядит сокращенная версия.(В отличие от того, чтобы быть рабом для любой схемы аббревиатур параметров, которую использует PS.)

Так, например, я хотел бы иметь возможность сделать что-то вроде этого:

# Command goes on this first line to alias "-ForegroundColor" to "-fg"
# Command goes on this second line to alias "-BackgroundColor" to "-bg"
Wr-te-Host -fg yellow -bg black "Parameter aliases now work just like I want."

Чтоближе всего я могу добраться до этого функционала и как?Мне не удалось найти что-либо относительно сокращения параметров с помощью 'get-help about_parameters'.

Спасибо!

Ответы [ 4 ]

11 голосов
/ 01 сентября 2011

Проверьте этот скрипт: Get-Parameter.ps1

поставьте точку и выполните следующее, это дает много информации о параметрах команды. Посмотрите на столбец псевдонимов, он покажет все псевдонимы встроенных параметров, а также вычислит самое короткое имя, которое вы можете использовать для параметра:

PS > Get-Parameter Write-Host


    Command: Microsoft.PowerShell.Utility/Write-Host
    Set:     Default


Name                   Aliases      Position Mandatory Pipeline ByName Provider        Type
----                   -------      -------- --------- -------- ------ --------        ----
BackgroundColor        {b}          Named    False     False    False  All             ConsoleColor
ForegroundColor        {f}          Named    False     False    False  All             ConsoleColor
NoNewline              {n}          Named    False     False    False  All             SwitchParameter
Object                 {obj}        0        False     True     False  All             Object
Separator              {s}          Named    False     False    False  All             Object
9 голосов
/ 01 сентября 2011

Вы можете создать псевдонимы параметров для своих собственных функций, например:

function ParamAlias {
    param(
        [Alias('fg','fColor')]
        $ForegroundColor
    )

    Write-Host "$ForegroundColor" -ForegroundColor $ForegroundColor
}

ParamAlias -fg Green
ParamAlias -fColor Green

Затем вы можете использовать эту технику с Proxy CmdLets , чтобы добавить свои собственные псевдонимы к существующим CmdLets. Однако я считаю достаточным использовать псевдонимы / сокращенные имена параметров в консоли, и вы не должны использовать псевдонимы в сценариях, поэтому я не уверен, что это стоило бы усилий. Я бы пошел с ответом @ Шей

2 голосов
/ 01 сентября 2011

Параметры данного командлета должны быть достаточными, чтобы его можно было различить в этом командлете.Такие вещи, как свойство Get-Member -m (-m обозначает MemberType, который является единственным параметром «M» для этого командлета).

Если я набираю быстрый однострочный текст, я склонен использовать толькопервые 3 символа параметра.Это работает большую часть времени и похоже на интерфейс командной строки Cisco, если вы когда-либо работали с этим.Время от времени я буду выводить параметр во время отладки, чтобы убедиться, что я ссылаюсь на правильный.

ИМО, я стараюсь не делать этого слишком много в сценариях.Я стараюсь сделать свои сценарии максимально удобочитаемыми для других пользователей, которые могут не знать псевдонимы каждого командлета.Это помогает в передаче сценариев другим людям.Если вы читаете блог / статьи Дона Джонса, он тоже об этом говорит.Однако, если сценарий только для меня, я делаю его максимально коротким и быстрым.

1 голос
/ 01 сентября 2011

Что-то вроде этого даст вам существующие псевдонимы для параметров командлета:

Get-Command write-host |
    ForEach-Object {$_.parameters |
        ForEach-Object { $_.Values |
            Where-Object {
                $_.Aliases.Count -gt 0 } |
                Select-Object Name, Aliases
            }
    }

Хотя я не вижу способа "контролировать" псевдонимы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...