我正在编写使用& .\other\script.ps1
调用其他PowerShell脚本的PowerShell脚本,但是我认为反斜杠\
是Windows的东西,我希望我的脚本可以跨平台工作。
我注意到Windows中的PowerShell确实接受& ./other/script.ps1
,但这可能是偶然的。 PowerShell是否总是将我的反斜杠转换到主机平台?
在PowerShell中跨平台处理路径分隔符的最佳方法是什么?
答案 0 :(得分:2)
以我的经验,Windows PowerShell很高兴接受\
或/
作为路径分隔符,因此要实现跨平台的一种方法是始终使用/
。
或者,您可以使用Path
cmdlet为您处理构建路径,例如:
Join-Path -Path $Pwd -ChildPath (Join-Path -Path 'Other' -ChildPath 'script.ps1')
或者获取当前目录中文件的路径:
Resolve-Path test.txt
路径cmdlet:
~> get-command *-path* | Select Name
Name
----
Convert-Path
Join-Path
Resolve-Path
Split-Path
Test-Path
答案 1 :(得分:0)
我没有足够的信誉为@ mark-wragg所接受的答案添加评论,但我只想指出,我仅在跨平台脚本等中才开始使用正斜杠,并遇到了符号链接问题。
例如,运行
new-item -itemtype SymbolicLink -path TestScript8.ps1 -target ./TestScript.ps1
,您将无法在Windows的VS Code中打开TestScript8.ps1
。