PowerShellでもwhich
コマンドを使いたかったので。
PowerShellでのwhich
PowerShellでwhich
コマンドの代わりに使えるのはGet-Commandコマンドレットですが、こいつの戻り値はSystem.Management.Automation.CommandInfoクラスの派生クラスである
System.Management.Automation.AliasInfo
System.Management.Automation.ApplicationInfo
System.Management.Automation.CmdletInfo
System.Management.Automation.FunctionInfo
System.Management.Automation.WorkflowInfo
となっており、それぞれエイリアス、実行ファイル、コマンドレット、ファンクション、ワークフローに対応していて見るべきプロパティも微妙に異なっています。
そんなわけで、シンプルに使うにはひと手間かけてやる必要があるなと思い簡単なファンクションを作りました。
書いたやつ
こんな感じ。
Get-Commandをちょっとラップしたやつ+whichエイリアス
実行するとこんな感じの結果を返します。
# こんな感じで使います PS E:\> which sort 2 command found. Alias : sort -> Sort-Object Application : C:\WINDOWS\system32\sort.exe # 検索対象を絞ることもできます。 PS E:\> which sort -CommandType Application 1 command found. Application : C:\WINDOWS\system32\sort.exe
自分好みに作ったので使い勝手には満足してます。
(おまけ)ちょっと現実的なはなし
2015/06/12追記
こんなファンクションを作りましたが、実際にこのファンクションが必要な環境およびタイミングでこれを仕込んでいる余裕はないと思っていますw
PowerShellでwhich
コマンド使いたいときは、従来通りwhere.exe
を使うのが現実的だと思います。
PowerShellではwhere
はWhere-Object
のエイリアスになっていますので、.exe
を明示的に指定する必要があります。
PS E:\> where.exe sort
C:\Windows\System32\sort.exe
あとはwhere.exe
をwhich
のエイリアスにしておく位が良いところでしょうか。
PS E:\> Set-Alias which where.exe PS E:\> which sort C:\Windows\System32\sort.exe