PowerShell跨平台中的点斜杠和反斜杠

时间:2019-04-10 08:11:10

标签: powershell

我正在编写使用& .\other\script.ps1调用其他PowerShell脚本的PowerShell脚本,但是我认为反斜杠\是Windows的东西,我希望我的脚本可以跨平台工作。

我注意到Windows中的PowerShell确实接受& ./other/script.ps1,但这可能是偶然的。 PowerShell是否总是将我的反斜杠转换到主机平台?

在PowerShell中跨平台处理路径分隔符的最佳方法是什么?

2 个答案:

答案 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