Как мне работать с путями при написании командлета PowerShell?
Как правильно получить файл в качестве параметра при написании командлета C #? Пока у меня просто есть свойство LiteralPath (в соответствии с соглашением об именах их параметров), которое является строкой. Это проблема, потому что вы просто получаете то, что напечатано в консоли; который может быть полным или относительным путем.
Использование Path.GetFullPath (string) не работает. Кажется, я сейчас нахожусь на ~, а я нет. Та же проблема возникает, если я изменяю свойство из строки в FileInfo.
РЕДАКТИРОВАТЬ: Для всех, кто заинтересован, этот обходной путь работает для меня:
SessionState ss = new SessionState();
Directory.SetCurrentDirectory(ss.Path.CurrentFileSystemLocation.Path);
LiteralPath = Path.GetFullPath(LiteralPath);
LiteralPath является строковым параметром. Мне все еще интересно узнать, каков рекомендуемый способ обработки путей к файлам, которые передаются в качестве параметров.
РЕДАКТИРОВАТЬ 2: Это лучше, так что вы не должны связываться с текущим каталогом пользователей, вы должны установить его обратно.
string current = Directory.GetCurrentDirectory();
Directory.SetCurrentDirectory(ss.Path.CurrentFileSystemLocation.Path);
LiteralPath = Path.GetFullPath(LiteralPath);
Directory.SetCurrentDirectory(current);