Подтвердить что ты не робот

Как вызвать другой PowerShell script с относительным путем?

У меня есть следующее дерево каталогов:

e:\powershell\services\This-Script-Here-Should-Call-Press any key to continue.ps1
e:\powershell\utils\Press any key to continue.ps1

и теперь я хотел бы назвать script с именем "Нажмите любую клавишу для продолжения .ps1", которая находится в папке "utils" из script, которая есть в папке "services". Как мне это сделать? Я не могу определить относительный путь.

Я попытался сделать это следующим образом:

"$ '.\..\utils\Press any key to continue.ps1'"

но это не сработало.

4b9b3361

Ответ 1

Основываясь на том, что вы делали, должно работать следующее:

& "..\utils\Press any key to continue.ps1"

или

. "..\utils\Press any key to continue.ps1"

(найдите разницу между использованием & и . и определите, какой из них использовать)

Вот как я отношусь к таким ситуациям (и небольшая вариация к тому, что сказал @Shay):

$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
$utilsDir  = Join-Path -Path $scriptDir -ChildPath ..\utils

& "$utilsDir\Press any key to continue.ps1"

Ответ 2

Выполните следующую функцию в вызывающем script, чтобы получить свой путь к каталогу и присоединиться к пути utils вместе с именем script:

# create this function in the calling script
function Get-ScriptDirectory { Split-Path $MyInvocation.ScriptName }

# generate the path to the script in the utils directory:
$script = Join-Path (Get-ScriptDirectory) 'utils\Press any key to continue.ps1'

# execute the script
& $script