为什么PowerShell从$ home而不是当前目录解析路径?

时间:2010-11-01 18:13:51

标签: powershell

我希望这个小的powershell one liner能够回显foo.txt的完整路径,其中目录是我当前的目录。

[System.IO.Path]::GetFullPath(".\foo.txt")

但事实并非如此。它打印......

C:\Documents and Settings\Administrator\foo.txt

我不在$ home目录中。为什么要在那里解决?

2 个答案:

答案 0 :(得分:17)

[System.IO.Path]正在使用shell进程的当前目录。您可以使用Resolve-Path cmdlet获取绝对路径:

Resolve-Path .\foo.txt

答案 1 :(得分:12)

根据GetFullPath的文档,它使用当前工作目录来解析绝对路径。 powershell当前工作目录与当前位置不同:

PS C:\> [System.IO.Directory]::GetCurrentDirectory()
C:\Documents and Settings\user
PS C:\> get-location

Path
----
C:\

我想你可以使用SetCurrentDirectory让它们匹配:

PS C:\> [System.IO.Directory]::SetCurrentDirectory($(get-location))
PS C:\> [System.IO.Path]::GetFullPath(".\foo.txt")
C:\foo.txt