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