できます。 PowerShell 1.0の頃からだったような? 基本的にはそのパラメータと一意に絞れる程度まで入力すれば、以降の文字は入力せずとも受け付けます。
ではそのサンプルを。
短くしてみよう
良く使われるところで、Get-Commandを使ってみます。Aliasに関するコマンドだけを抜き出すには以下のコマンドレットを記述します。
Get-Command -CommandType Alias
ではこのコマンドを短くしてみます。Get-CommandのAliasはgcmです、
gcm -CommandType Alias
更に、パラメータの-CommandTypeも短くします。
gcm -C Alias
続けて、引数のAliasも短くします。
gcm -C Ali
このようにパラメータが一意に定まる文字さえ入力すれば、コマンド入力を短くできます。
短くできないパターン
では、引数をAにはできないのでしょうか。
gcm -C A
Aだけでは、引数がAllかAliasかを一意に特定できないためエラーが返ってきます。
Get-Command : パラメーター 'CommandType' をバインドできません。値 "A" を型 "System.Management.Automation.CommandTypes" に変換できません。エラー: "次の列挙子名を区別できないため、識別子名 A を処理できません: Alias, Application, All。より詳細な識別子名で試してください。" 発生場所 行:6 文字:8 + gcm -C A + ~ + CategoryInfo : InvalidArgument: (:) [Get-Command]、ParameterBindingException + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.GetCommandCommand
この場合、allかaliとすれば、引数が一意に定まるため実行されます。
※ 当然alでも上記と同様のエラーが返ってきます。
gcm -C all gcm -C ali
Select-Objectでのスクリプトブロックへの活用
Aliasや短縮を活用するのは、主にコマンドモード(Console)です。
ただし、式モードでもささやかながら使えそうな場面があります。それが、Select-ObjectなどでのScript Block使用時です。
例えば、Processを取得するGet-Processコマンドを考えます。
※全然意味のないサンプルですが…すいません。
Get-Process | select @{label="Id";expression={"TEST ID: " + $_.Id}}, @{l="Name";e={"TEST NAME: " + $_.Name}}
結果です。
Id : TEST ID: 8640
Name : TEST NAME: Zune
Script Block 1行目のlabelとexpressionを、2行目ではlとeに置き換えています。結構便利ですしScript Block触る人なら流石に……っていうのは甘いのでしょうか?
まとめ
PowerShell 3.0 (1.0からのはず?)では、コマンドのAlias以外にも、入力パラメータや引数を一意に絞れれば省略が可能です。 コード規則とか可読性と上手くお付き合いして、活用すると記述が楽になります。
「動詞-名詞」の規則はとかいう突込みは…。 まぁ、そもそもIntellisenceさんやタブ補完でフルネーム入力に慣れている私がいうのもなんですが。