web-dev-qa-db-fra.com

Comment appeler un autre script PowerShell avec un chemin relatif?

J'ai l'arbre de répertoire suivant:

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

et maintenant, j'aimerais appeler un script nommé "Appuyez sur une touche pour continuer.ps1" situé dans le dossier "utils" à partir d'un script que j'ai dans le dossier "services". Comment je fais ça? Je ne peux pas comprendre le chemin relatif.

J'ai essayé de le faire de cette façon:

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

mais cela n'a pas fonctionné.

15
t3chb0t

Selon ce que vous faisiez, ce qui suit devrait fonctionner:

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

ou

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

(Cherchez la différence entre utiliser & et . et décider lequel utiliser)

Voici comment je gère de telles situations (et une légère variation par rapport à ce que @Shay a mentionné):

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

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

Placez la fonction suivante dans le script appelant pour obtenir son chemin de répertoire et joignez le chemin utils avec le nom du 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 
7
Shay Levy

Merci très instructif ... J'ai eu un problème similaire, je pourrais le faire fonctionner comme ceci, pour appeler d'autres scripts à partir de parentfolder.

$CommandPath = (Get-Location).Path | Split-Path -Parent; $script = "$CommandPath\Logins\Login_SSI_SST_exch2010_DKSUND_Exchange365.ps1"; & $script
0
King Rustamus