🛣
[PowerShell]UNIXのwhichコマンドのように実行ファイルの格納先を確認する方法
概要
UNIX系のサーバーでは、コマンドがどこにあるパスから呼び出されているか重要だったので、
頻繁にwhich
コマンドを実行してコマンドの格納場所を探していました。
ふとWindowsを使用していてもwhich
コマンドを使いたいなぁと感じることがあり、
通常のコマンドレットで確認する方法と、お遊びの自作Functionも作成してみたので紹介します。
通常のコマンドレットで確認する方法
コマンドの実行ファイルは、PowerShell標準にあるGet-Command
コマンドレットのSourceにより結果がわかります。
Get-Commandコマンドレットでコマンドのパスを確認
# exploerer.exeの格納場所
PS C:\Users\XXXX> Get-Command explorer
CommandType Name Version Source
----------- ---- ------- ------
Application explorer.exe 10.0.26... C:\WINDOWS\explorer.exe
PS C:\Users\XXXX>
以降に紹介するFunctionをあえて使用する必要はないので悪しからず。
自作したコードで確認する方法
自作したFunctionのコード
バイナリデータのパスのみ返すwhichコマンド
Function which {
param (
[System.String]$CommandName
)
$commandData = (Get-Command -Name $CommandName -ErrorAction SilentlyContinue)
if ($null -eq $commandData) {
Write-Warning "該当のコマンドが見つかりませんでした。[指定したコマンド名: $($CommandName)]"
return
}
return $commandData.Source
}
自作したコードを実行してみた
自作Functionでpythonの実行ファイルの格納先を取得
PS C:\Users\XXXX> which python
C:\Users\XXXX\AppData\Local\Microsoft\WindowsApps\python.exe
PS C:\Users\XXXX>
まとめ
Windowsのコマンドを使用していると結果が複雑で見づらいと感じることが多々あります。
慣れや覚えることが必要ですが、UNIX系のコマンドはシンプルなのがいいですよね。
Windowsにも簡潔なコマンドを!と思い検証してみましたが、違和感がすごい 😂
変なこともやった結果、Windowsにはシンプルが合わないんだなと痛感しています。
関連記事
Discussion