PowerShell: Получите каталог по умолчанию изнутри командлета

StackOverflow https://stackoverflow.com/questions/19826114

  •  05-07-2022
  •  | 
  •  

Вопрос

Я пишу командлет 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top