Почему PowerShell разрешает пути из $ home вместо текущего каталога? - PullRequest
14 голосов
/ 01 ноября 2010

Я ожидаю, что этот маленький вкладыш powershell one отобразит полный путь к foo.txt, где каталог - это мой текущий каталог.

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

Но это не так.Он печатает ...

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

Я не в каталоге $ home.Почему это там разрешается?

Ответы [ 2 ]

17 голосов
/ 02 ноября 2010

[System.IO.Path] использует текущий каталог процесса оболочки. Вы можете получить абсолютный путь с помощью командлета Resolve-Path:

Resolve-Path .\foo.txt
12 голосов
/ 01 ноября 2010

Согласно документации для 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...