PowerShell如何以编程方式获取二进制文件全路径 等效Bash的which命令
PowerShell下等效Linux
which命令的实现方法 PowerShell 中的 Get-Command 返回的是结构化对象,不需要解析文本输出,直接访问对应的属性即可拿到二进制文件的绝对路径。
基础实现(直接存路径到变量)
# 将gpg.exe的绝对路径存入变量 $gpgPath = (Get-Command gpg.exe).Source # 打印路径验证 Write-Output $gpgPath # 输出示例:C:\Program Files (x86)\GnuPG\bin\gpg.exe
调用变量中的可执行文件
PowerShell 中需要使用调用运算符&执行变量中存储的路径,避免路径包含空格等特殊字符时报错:
& $gpgPath
执行效果和直接运行对应二进制文件完全一致。
脚本兼容写法(添加错误处理)
如果在自动化脚本中使用,建议添加错误捕获逻辑,避免目标程序不存在时脚本异常终止:
try { $gpgPath = (Get-Command gpg.exe -ErrorAction Stop).Source } catch { Write-Error "未找到gpg可执行文件,请确认程序已安装且已加入系统PATH环境变量" exit 1 }
可选:自定义which别名
如果习惯了Bash的which命令用法,可以在PowerShell配置文件中添加自定义函数,实现完全一致的使用体验:
function which($commandName) { (Get-Command $commandName -ErrorAction SilentlyContinue).Source }
配置完成后可以直接使用which gpg.exe直接输出对应二进制的绝对路径。
内容的提问来源于stack exchange,提问作者Michael Altfield
相关产品推荐
相关产品推荐

