it-swarm.it

Come posso chiamare un altro script PowerShell con un percorso relativo?

Ho il seguente albero di directory:

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

e ora mi piacerebbe chiamare uno script chiamato "Premere un tasto per continuare.ps1" che si trova nella cartella "utils" da uno script che ho nella cartella "services". Come lo faccio? Non riesco a capire il percorso relativo.

Ho provato a farlo in questo modo:

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

ma non ha funzionato.

15
t3chb0t

In base a ciò che stavi facendo, dovrebbe funzionare quanto segue:

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

o

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

(cerca la differenza tra usare & e . e decidere quale usare)

Questo è il modo in cui gestisco tali situazioni (e una leggera variazione rispetto a quanto menzionato da @Shay):

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

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

Inserire la seguente funzione nello script chiamante per ottenere il suo percorso di directory e unirsi al percorso utils insieme al nome dello 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

Grazie mille. Ho avuto un problema simile, potrei farlo funzionare in questo modo, per chiamare altri script dalla cartella genitore.

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