エイリアスに引数つきのコマンドを登録する
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コマンドレットのほうが何かと便利そう