Test-Path cmdlet是否支持相对路径?相关使用疑问咨询
关于Test-Path相对路径特性的答疑
Test-Path支持相对路径是PowerShell的原生特性,属于PowerShell全局路径解析机制的一部分,并非Test-Path独有,所有支持路径参数的PowerShell cmdlet都默认兼容相对路径输入。
针对你的几个疑问逐一解答:
- 该特性可以在PowerShell 2.0版本中正常运行,相对路径解析规则从PowerShell 2.0正式版发布时就已稳定落地。
- 相对路径的默认参照基准是当前工作目录,即内置变量
$PWD对应的路径,而非脚本所在路径。- 你之前测试得出的“参照脚本所在路径”的结论仅在当前工作目录刚好等于脚本存储目录时成立,不具备通用性:比如脚本存储在
C:\scripts\demo.ps1,你在C:\Users\abc目录下执行该脚本,此时脚本内所有相对路径的参照基准都是C:\Users\abc,和脚本所在目录无关。
- 你之前测试得出的“参照脚本所在路径”的结论仅在当前工作目录刚好等于脚本存储目录时成立,不具备通用性:比如脚本存储在
- 修改相对路径参照基准有两种常用方案:
- 全局修改当前会话的工作目录:执行
Set-Location 目标基准路径,后续所有cmdlet的相对路径都会以该路径为基准 - 不修改全局工作目录,直接拼接绝对路径:你提到的
Join-Path是可靠性极高的路径拼接工具,完全可以放心使用。如果需要固定以脚本所在路径为基准,PowerShell 3.0+可以直接用内置变量$PSScriptRoot获取脚本所在目录,PowerShell 2.0可以用Split-Path $MyInvocation.MyCommand.Definition -Parent获取,再用Join-Path把基准目录和相对路径片段拼接为绝对路径传入Test-Path即可,该方案完全不受当前工作目录变动影响,是生产环境脚本的推荐写法。
- 全局修改当前会话的工作目录:执行
内容的提问来源于stack exchange,提问作者Prid
相关产品推荐
相关产品推荐

