2013-07-04 7 views
35

Eseguo uno script PowerShell. Come posso ottenere il percorso della directory di questo script che eseguo?Come posso ottenere la directory dello script di PowerShell che eseguo?

Come fare questo?

+0

vuoi di directory di lavoro corrente del processo? – Bill

+0

No, voglio sapere quale directory contiene questo script. – user2131116

+0

se conosci il nome del file, puoi usare 'get-ChildItem' per trovare il suo percorso. http://stackoverflow.com/questions/8677628/recursive-file-search-using-powershell – Bill

risposta

109

PowerShell 3 ha la $PSScriptRootautomatic variable:

contiene la directory da cui uno script è in esecuzione.

In Windows PowerShell 2.0, questa variabile è valida solo nei moduli di script (.psm1). A partire da Windows PowerShell 3.0, è valido in tutti gli script.

Non lasciatevi ingannare dalle parole povere. PSScriptRoot è la directory del file corrente.

In PowerShell 2, è possibile calcolare il valore di $PSScriptRoot te stesso:

# PowerShell v2 
$PSScriptRoot = Split-Path -Parent -Path $MyInvocation.MyCommand.Definition 
+10

Perché il voto negativo? Aiutami a migliorare la mia risposta. Si prega di fornire un feedback! –

+2

Sono un po 'nuovo in PowerShell, potresti espandere su $ MyInvocation.MyCommand.Definition? Lo vedo in molti post e sembra un segnaposto, ma per cosa? – Sinaesthetic

+0

concordato: è "MyCommand.Definition" qualcosa che devo digitare o sostituire con il mio nome di script? Ho appena provato al prompt dei comandi e non ottengo nulla da questo? – monojohnny

Problemi correlati