Путем изменения местоположения
В своем скрипте вы можете указать местоположение для папки скрипта. Внутри вашего скрипта будет работать любой из следующих методов:
# PowerShell 3+
cd $PSScriptRoot
# PowerShell 2
cd ( Split-Path -Parent $MyInvocation.MyCommand.Definition )
Изменение на $PSScriptRoot
работает во всех поддерживаемых в настоящее время версиях PowerShell, но с использованием Split-Path
для получения Каталог скриптов полезен, если у вас по какой-то причине все еще есть узлы, на которых работает PowerShell 2.
Если вы хотите вернуться к предыдущему каталогу после того, как ваш скрипт завершил выполнение (вероятно, хороший ход), вы также можете использовать Push-Location
и Pop-Location
вместо cd
или Set-Location
:
# Also aliased to pushd
Push-Location $PSScriptRoot
# My script stuff
# Also aliased to popd
Pop-Location
Эти два командлета обрабатывают местоположения как стек - Push-Location
изменяет ваше местоположение и добавляет каталог в стек расположений, тогда как Pop-Location
удаляет текущий каталог из стека и возвращает вас в предыдущее местоположение. Он работает так же, как pu sh и операции pop с массивами.
Путем добавления префиксов относительных путей
Вы также можете добавить префикс относительных путей в сценарии либо с помощью $PSScriptRoot
, либо ( Split-Path -Parent $MyInvocation.MyCommand.Definition )
как показано в предыдущем разделе. Если мы добавим префикс к относительному пути file1.txt
:
$filepath1 = "${PSScriptRoot}\file1.txt"
Теперь у вас есть абсолютный путь к file1.txt
. Обратите внимание, что этот метод будет работать с любым относительным путем от до $PSScriptRoot
, он не обязательно должен находиться в той же папке, что и ваш ps1
скрипт.