Вы можете попробовать это вместо этого, CurrentLocation.Path также может указывать на другие пути поставщиков, такие как регистрация.
this.SessionState.Path.CurrentFileSystemLocation.Path
Вопрос
Я пишу командлет PowerShell. Внутри моего метода cmdlet beginprocessing () я хочу иметь возможность получить каталог, который был каталогом по умолчанию во время использования командлета.
Пример: если пользователь делает это:
cd \myDirectory
invoke-mycmdlet
Я хочу, чтобы мой код знал, что каталог оболочек по умолчанию был C: mydirectory. Когда я получаю доступ к Environment.currentDirectory, это всегда C: Windows System32
Я видел аналогичный пост, поэтому, где плакат, необходимый для установки среды :: текущий каталог изнутри оболочки, используя GET-Location. Это не сработает для меня.
По сути, мой командный директор делает некоторые материалы файловой системы, и я хочу, чтобы пользователь мог просто просто CD в каталог и выполнил мой Cmdlet, причем он работает в каталоге, в который они переключились - так же, как вы ожидаете Работа из старой командной консоли.
Решение
Вы можете попробовать это вместо этого, CurrentLocation.Path также может указывать на другие пути поставщиков, такие как регистрация.
this.SessionState.Path.CurrentFileSystemLocation.Path
Другие советы
Знаете, я всегда, кажется, нахожу это сразу после публикации - независимо от того, как долго я потратил, прежде чем достичь этого!
Итак, мой командлет наследует от pscmdlet. Я обнаружил, что могу получить путь, который хотел
this.SessionState.Path.CurrentLocation.Path
(Где «это» - класс CMDLET, который наследует от PSCMDLE)
Попробуйте Get-Location
Комдлет. Это должно быть текущее местоположение выполнения сценария, а не папку запуска Host PowerShell.