Share via


Set-Location

Imposta il percorso di lavoro corrente su un percorso specificato.

Sintassi

Set-Location
   [[-Path] <String>]
   [-PassThru]
   [<CommonParameters>]
Set-Location
   -LiteralPath <String>
   [-PassThru]
   [<CommonParameters>]
Set-Location
   [-PassThru]
   [-StackName <String>]
   [<CommonParameters>]

Descrizione

Il Set-Location cmdlet imposta la posizione di lavoro su una posizione specificata. Tale percorso può essere una directory, una sottodirectory, un percorso del Registro di sistema o qualsiasi percorso del provider.

PowerShell 6.2 ha aggiunto il supporto per - e + come valori per il parametro Path . PowerShell gestisce una cronologia degli ultimi 20 percorsi a cui è possibile accedere con - e +. Questo elenco è indipendente dallo stack di percorsi a cui si accede usando il parametro StackName .

Esempio

Esempio 1: Impostare la posizione corrente

PS C:\> Set-Location -Path "HKLM:\"
PS HKLM:\>

Questo comando imposta la posizione corrente sulla radice dell'unità HKLM: .

Esempio 2: Impostare la posizione corrente e visualizzare tale posizione

PS C:\> Set-Location -Path "Env:\" -PassThru

Path
----
Env:\

PS Env:\>

Questo comando imposta la posizione corrente sulla radice dell'unità Env: . Usa il parametro PassThru per indirizzare PowerShell a restituire un oggetto PathInfo che rappresenta la Env:\ posizione.

Esempio 3: Impostare la posizione sul percorso corrente nell'unità C:

PS C:\Windows\> Set-Location HKLM:\
PS HKLM:\> Set-Location C:
PS C:\Windows\>

Il primo comando imposta il percorso sulla radice dell'unità HKLM: nel provider del Registro di sistema. Il secondo comando imposta il percorso sul percorso corrente dell'unità C: nel provider FileSystem. Quando il nome dell'unità viene specificato nel modulo <DriveName>: (senza barra rovesciata), il cmdlet imposta la posizione sul percorso corrente in PSDrive. Per ottenere il percorso corrente nel comando PSDrive use Get-Location -PSDrive <DriveName> .

Esempio 4: Impostare la posizione corrente su uno stack denominato

PS C:\> Push-Location -Path 'C:\Program Files\PowerShell\' -StackName "Paths"
PS C:\Program Files\PowerShell\> Set-Location -StackName "Paths"
PS C:\Program Files\PowerShell\> Get-Location -Stack

Path
----
C:\

Il primo comando aggiunge la posizione corrente allo stack Percorsi. Il secondo comando rende lo stack di percorsi percorsi corrente. Il terzo comando visualizza le posizioni nello stack di posizioni corrente.

I *-Location cmdlet usano lo stack di percorsi corrente, a meno che non venga specificato uno stack di percorsi diverso nel comando . Per informazioni sugli stack di posizioni, vedere le note.

Esempio 5: Esplorare la cronologia delle posizioni usando '+' o '-'

PS C:\> Set-Location -Path $env:SystemRoot
PS C:\Windows> Set-Location -Path Cert:\
PS Cert:\> Set-Location -Path HKLM:\
PS HKLM:\>

# Navigate back through the history using "-"
PS HKLM:\> Set-Location -Path -
PS Cert:\> Set-Location -Path -
PS C:\Windows>

# Navigate using the Set-Location alias "cd" and the implicit positional Path parameter
PS C:\Windows> cd -
PS C:\> cd +
PS C:\Windows> cd +
PS Cert:\>

L'uso dell'alias cd - o cd + è un modo semplice per spostarsi nella cronologia delle posizioni nel terminale. Per altre informazioni sull'esplorazione con -/+, vedere il parametro Path.

Parametri

-LiteralPath

Specifica un percorso della posizione. Il valore del parametro LiteralPath viene usato esattamente come viene tipizzato. Nessun carattere viene interpretato come carattere jolly. Se il percorso include caratteri di escape, racchiuderlo tra virgolette singole. Le virgolette singole indicano a PowerShell di non interpretare alcun carattere come sequenze di escape.

Type:String
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-PassThru

Restituisce un oggetto PathInfo che rappresenta la posizione. Per impostazione predefinita, il cmdlet non genera alcun output.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Path

Specificare il percorso di una nuova posizione di lavoro. Se non viene specificato alcun percorso, Set-Location l'impostazione predefinita è la home directory dell'utente corrente. Quando si usano caratteri jolly, il cmdlet sceglie il contenitore (directory, chiave del Registro di sistema, archivio certificati) che corrisponde al modello con caratteri jolly. Se il criterio con caratteri jolly corrisponde a più contenitori, il cmdlet restituisce un errore.

PowerShell mantiene una cronologia degli ultimi 20 percorsi impostati. Se il valore del parametro Path è il - carattere, la nuova posizione di lavoro sarà la posizione di lavoro precedente nella cronologia (se esistente). Analogamente, se il valore è il + carattere, la nuova posizione di lavoro sarà la posizione di lavoro successiva nella cronologia (se esistente). È simile all'uso Pop-Location e Push-Location , ad eccezione del fatto che la cronologia è un elenco, non uno stack, e viene monitorato in modo implicito, non controllato manualmente. Non è possibile visualizzare l'elenco della cronologia.

Type:String
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:True

-StackName

Specifica un nome dello stack di percorsi esistente che questo cmdlet rende lo stack di percorsi corrente. Immettere un nome per lo stack di percorsi. Per indicare lo stack di percorsi predefinito senza nome, digitare $null o una stringa vuota ("").

L'uso di questo parametro non modifica la posizione corrente. Modifica solo lo stack usato dai *-Location cmdlet. I *-Location cmdlet agiscono sullo stack corrente a meno che non si usi il parametro StackName per specificare uno stack diverso. Per altre informazioni sugli stack di posizioni, vedere le note.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

Input

String

È possibile inviare tramite pipe una stringa contenente un percorso, ma non un percorso letterale, a questo cmdlet.

Output

None

Per impostazione predefinita, questo cmdlet non restituisce alcun output.

PathInfo

Quando si usa il parametro PassThru con Path o LiteralPath, questo cmdlet restituisce un oggetto PathInfo che rappresenta la nuova posizione.

PathInfoStack

Quando si usa il parametro PassThru con StackName, questo cmdlet restituisce un oggetto PathInfoStack che rappresenta il nuovo contesto dello stack.

Note

PowerShell include gli alias seguenti per Set-Location:

  • Tutte le piattaforme:
    • cd
    • chdir
    • sl

PowerShell supporta più spazi di esecuzione per processo. Ogni spazio di esecuzione ha la propria directory corrente. Non è uguale [System.Environment]::CurrentDirectorya . Questo comportamento può essere un problema quando si chiamano le API .NET o si eseguono applicazioni native senza fornire percorsi di directory espliciti.

Anche se i cmdlet location hanno impostato la directory corrente a livello di processo, non è possibile dipendere da esso perché un altro spazio di esecuzione potrebbe modificarlo in qualsiasi momento. È consigliabile usare i cmdlet location per eseguire operazioni basate sul percorso usando la directory di lavoro corrente specifica dello spazio di esecuzione corrente.

Il Set-Location cmdlet è progettato per lavorare con i dati esposti da qualsiasi provider. Per elencare i provider disponibili nella sessione, digitare Get-PSProvider. Per altre informazioni, vedere about_Providers.

Uno stack è un elenco first-out ultimo in cui è possibile accedere solo all'elemento aggiunto più di recente. È possibile aggiungere elementi a uno stack nell'ordine in cui vengono usati e quindi recuperarli per l'uso in ordine inverso. PowerShell consente di archiviare i percorsi del provider negli stack di posizioni. PowerShell crea uno stack di percorsi predefinito senza nome. È possibile creare più stack di percorsi denominati. Se non si specifica un nome dello stack, PowerShell usa lo stack di percorsi corrente. Per impostazione predefinita, il percorso predefinito senza nome è lo stack di percorsi corrente, ma è possibile usare il Set-Location cmdlet per modificare lo stack di percorsi corrente.

Per gestire gli stack di percorsi, usare i *-Location cmdlet, come indicato di seguito:

  • Per aggiungere una posizione a uno stack di percorsi, usare il Push-Location cmdlet .

  • Per ottenere una posizione da uno stack di posizioni, usare il Pop-Location cmdlet .

  • Per visualizzare i percorsi nello stack di percorsi corrente, usare il parametro Stack del Get-Location cmdlet . Per visualizzare i percorsi in uno stack di percorsi denominato, usare il parametro StackName di Get-Location.

  • Per creare un nuovo stack di percorsi, usare il parametro StackName di Push-Location. Se si specifica uno stack che non esiste, Push-Location crea lo stack.

  • Per creare uno stack di posizioni nello stack di percorsi corrente, usare il parametro StackName di Set-Location.

Lo stack di percorsi predefinito senza nome è pienamente accessibile solo quando è lo stack di percorsi corrente. Se si crea uno stack di percorsi denominato nello stack di percorsi corrente, non è più possibile usare i Push-Location cmdlet o Pop-Location per aggiungere o ottenere elementi dallo stack predefinito oppure usare il Get-Location cmdlet per visualizzare i percorsi nello stack senza nome. Per rendere lo stack senza nome lo stack corrente, usare il parametro StackName del Set-Location cmdlet con un valore di $null o una stringa vuota ("").