Join-Path
, я считаю, будет способом получить путь к несуществующему элементу. Что-то вроде этого:
join-path $pwd $filename
Обновлять:
Я не понимаю, почему вы не хотите использовать "код" .Net. Powershell основан на .Net. Все командлеты представляют собой код .Net. Единственная веская причина избегать этого заключается в том, что при использовании .Net Code текущий каталог - это каталог, из которого был запущен Powershell, а не $pwd
Я просто перечисляю способы, которые, как я считаю, можно сделать, чтобы вы могли обрабатывать абсолютные и относительные пути. Ни один из них не кажется проще, чем GetFullPath()
:
$ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($filename)
Если вас беспокоит, пройден ли абсолютный путь или нет, вы можете сделать что-то вроде:
if(Split-Path $filename -IsAbsolute){
$filename
}
else{
join-path $pwd $filename # or join-path $pwd (Split-Path -Leaf $filename)
}
Это уродливый
$item = Get-Item $filename -ea silentlycontinue
if (!$item) {
$error[0].targetobject
} else{
$item.fullname
}
Аналогичный вопрос с похожими ответами: Powershell: разрешить путь, который может не существовать?
person
manojlds
schedule
24.08.2011