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é.
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"
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
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