エイリアスに引数つきのコマンドを登録する

http://technet.microsoft.com/ja-jp/scriptcenter/powershell_owner07.aspx
を見ていて躓いたのでメモ。

引数つきのコマンドはエイリアスに登録できない。
たとえば、sal ipca ipconfig /allとすると、「Set-Alias : 引数 '/all' を受け入れる位置指定パラメーターが見つかりません」と怒られる。

最も単純に「ipconfig /all」や「notepad.exe C:\xxx\foo.log」を登録するには、関数を作ってそれをエイリアスに登録すればいい。

function IpcAll()
{
ipconfig /all
}
sal ipca IpcAll

関数の引数は$argsで利用できる。その関数を登録したエイリアスからも引数は使える。

function SakuraEditor()
{
C:\sakura\sakura.exe $args[0]
}
sal sakura SakuraEditor

「C:\Program Files (x86)\sakura\sakura.exe」のように実行ファイルのパスに空白文字が含まれる時は、「C:\Progra~2\sakura\sakura.exe」のような短縮名を用いるか、
Start-Process(start)コマンドを用いる。

function SakuraEditor()
{
start "C:\Program Files (x86)\sakura\sakura.exe" $args[0]
}

startコマンドを用いる場合、「C:\Program Files\vim74-kaoriya-win64\gvim.exe --remote-tab-silent $args[0]」のように
複数の引数を持つコマンドラインを実行するには、Start-ProcessのArgumentListパラメータを用いる。

function VimRemote
{
start "C:\Program Files\vim74-kaoriya-win64\gvim.exe" -ArgumentList "--remote-tab-silent",$args[0]
}
sal vim VimRemote

追記 4/29 0:51
ipconfigは、PowerShellのGet-NetIPAddressコマンドレットのほうが何かと便利そう