8

私の研究を考えると、次のことが簡単に達成できるとは思いません。しかし、最後の手段として、ここで確認することにしました。

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-helpabout_parameters'を使用してパラメーターの省略形に関する情報を見つけることができませんでした。

ありがとう!

4

4 に答える 4

16

次のように、独自の関数のパラメーター エイリアスを作成できます。

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

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

ParamAlias -fg Green
ParamAlias -fColor Green

この手法をProxy CmdLetsで使用して、独自のエイリアスを既存の CmdLets に追加できます。ただし、コンソールで既存のパラメーターのエイリアス/短縮されたパラメーター名を使用するだけで十分であり、スクリプトでエイリアスを使用するべきではないため、これが努力する価値があるかどうかはわかりません。@Shayの答えに行きます

于 2011-09-01T00:00:08.863 に答える
14

このスクリプトを確認してください: 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
于 2011-08-31T20:22:49.490 に答える
2

特定のコマンドレットのパラメーターは、そのコマンドレット内で区別するのに十分なだけ必要です。Get-Member -m Property (-m は、このコマンドレットの唯一の "M" パラメーターである MemberType を表します) のようなものです。

簡単なワンライナーを入力する場合、パラメーターの最初の 3 文字のみを使用する傾向があります。これはほとんどの場合に機能し、Cisco の CLI を使用したことがある場合は似ています。時々、デバッグ中にパラメーターをタブで外して、正しいパラメーターを参照していることを確認します。

IMO、スクリプトではあまりやらないようにしています。すべてのコマンドレットのエイリアスを知らない可能性がある他の人のために、スクリプトをできる限り読みやすくするようにしています。スクリプトを他の人に渡すのに役立ちます。Don Jones のブログ/記事を読むと、彼もこれについて語っています。ただし、スクリプトが私だけのものである場合は、できるだけ短く迅速にします。

于 2011-09-01T03:40:03.847 に答える