Set-Location

Establece la ubicación de trabajo actual en una ubicación especificada.

Syntax

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

Description

El Set-Location cmdlet establece la ubicación de trabajo en una ubicación especificada. Esa ubicación podría ser un directorio, un subdirectorio, una ubicación del Registro o cualquier ruta de acceso del proveedor.

PowerShell 6.2 agregó compatibilidad con - y + como valores para el parámetro Path . PowerShell mantiene un historial de las últimas 20 ubicaciones a las que se puede acceder con - y +. Esta lista es independiente de la pila de ubicaciones a la que se accede mediante el parámetro StackName .

Ejemplos

Ejemplo 1: Establecer la ubicación actual

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

Este comando establece la ubicación actual en la raíz de la HKLM: unidad.

Ejemplo 2: Establecer la ubicación actual y mostrar esa ubicación

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

Path
----
Env:\

PS Env:\>

Este comando establece la ubicación actual en la raíz de la Env: unidad. Usa el parámetro PassThru para dirigir PowerShell para devolver un objeto PathInfo que representa la Env:\ ubicación.

Ejemplo 3: Establecer la ubicación en la ubicación actual en la unidad C:

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

El primer comando establece la ubicación en la raíz de la HKLM: unidad en el proveedor del Registro. El segundo comando establece la ubicación en la ubicación actual de la C: unidad en el proveedor FileSystem. Cuando se especifica el nombre de la unidad en el formulario <DriveName>: (sin barra diagonal inversa), el cmdlet establece la ubicación en la ubicación actual de PSDrive. Para obtener la ubicación actual en el comando PSDrive use Get-Location -PSDrive <DriveName> .

Ejemplo 4: Establecer la ubicación actual en una pila con nombre

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:\

El primer comando agrega la ubicación actual a la pila Rutas de acceso. El segundo comando hace que la pila de ubicaciones rutas de acceso sea la pila de ubicación actual. El tercer comando muestra las ubicaciones de la pila de ubicaciones actual.

Los *-Location cmdlets usan la pila de ubicación actual a menos que se especifique una pila de ubicación diferente en el comando . Para obtener información sobre las pilas de ubicación, vea las notas.

Ejemplo 5: Navegar por el historial de ubicaciones mediante '+' 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:\>

El uso del alias cd - o cd + es una manera fácil de navegar por el historial de ubicaciones mientras está en el terminal. Para obtener más información sobre cómo navegar con -/+, consulte el parámetro Path.

Parámetros

-LiteralPath

Especifica una ruta de acceso de la ubicación. El valor del parámetro LiteralPath se usa exactamente como se escribe. Ningún carácter se interpreta como carácter comodín. Si la ruta de acceso contiene caracteres de escape, escríbalos entre comillas simples. Las comillas simples indican a PowerShell que no interprete ningún carácter como secuencias de escape.

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

-PassThru

Devuelve un objeto PathInfo que representa la ubicación. De forma predeterminada, este cmdlet no genera ningún resultado.

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

-Path

Especifique la ruta de acceso de una nueva ubicación de trabajo. Si no se proporciona ninguna ruta de acceso, Set-Location el valor predeterminado es el directorio principal del usuario actual. Cuando se usan caracteres comodín, el cmdlet elige el contenedor (directorio, clave del Registro, almacén de certificados) que coincide con el patrón de caracteres comodín. Si el patrón de caracteres comodín coincide con más de un contenedor, el cmdlet devuelve un error.

PowerShell mantiene un historial de las últimas 20 ubicaciones que ha establecido. Si el valor del parámetro Path es el - carácter , la nueva ubicación de trabajo será la ubicación de trabajo anterior en el historial (si existe). Del mismo modo, si el valor es el + carácter, la nueva ubicación de trabajo será la siguiente ubicación de trabajo del historial (si existe). Esto es similar al uso Pop-Location y Push-Location , salvo que el historial es una lista, no una pila, y se realiza un seguimiento implícito, no se controla manualmente. No hay ninguna manera de ver la lista de historial.

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

-StackName

Especifica un nombre de pila de ubicación existente que este cmdlet convierte la pila de ubicación actual. Escriba un nombre de pila de ubicaciones. Para indicar la pila de ubicación predeterminada sin nombre, escriba $null o una cadena vacía ("").

El uso de este parámetro no cambia la ubicación actual. Solo cambia la pila usada por los *-Location cmdlets. Los *-Location cmdlets actúan en la pila actual a menos que use el parámetro StackName para especificar una pila diferente. Para obtener más información sobre las pilas de ubicación, vea notas.

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

Entradas

String

Puede canalizar una cadena que contenga una ruta de acceso, pero no una ruta de acceso literal, a este cmdlet.

Salidas

None

De forma predeterminada, este cmdlet no devuelve ninguna salida.

PathInfo

Cuando se usa el parámetro PassThru con Path o LiteralPath, este cmdlet devuelve un objeto PathInfo que representa la nueva ubicación.

PathInfoStack

Cuando se usa el parámetro PassThru con StackName, este cmdlet devuelve un objeto PathInfoStack que representa el nuevo contexto de pila.

Notas

PowerShell incluye los siguientes alias para Set-Location:

  • Todas las plataformas:
    • cd
    • chdir
    • sl

PowerShell admite varios espacios de ejecución por proceso. Cada espacio de ejecución tiene su propio directorio actual. Esto no es lo mismo que [System.Environment]::CurrentDirectory. Este comportamiento puede ser un problema al llamar a las API de .NET o ejecutar aplicaciones nativas sin proporcionar rutas de acceso de directorio explícitas.

Incluso si los cmdlets de ubicación establecieron el directorio actual de todo el proceso, no puede depender de él porque otro espacio de ejecución podría cambiarlo en cualquier momento. Debe usar los cmdlets de ubicación para realizar operaciones basadas en rutas de acceso mediante el directorio de trabajo actual específico del espacio de ejecución actual.

El Set-Location cmdlet está diseñado para trabajar con los datos expuestos por cualquier proveedor. Para enumerar los proveedores disponibles en la sesión, escriba Get-PSProvider. Para obtener más información, consulte about_Providers.

Una pila es una lista en la que solo se puede acceder al elemento agregado más recientemente. Los elementos se agregan en el orden en que se utilizan y luego se recuperan para su uso en el orden inverso. PowerShell le permite almacenar ubicaciones de proveedor en pilas de ubicaciones. PowerShell crea una pila de ubicación predeterminada sin nombre. Puede crear varias pilas de ubicación con nombre. Si no especifica un nombre de pila, PowerShell usa la pila de ubicación actual. De forma predeterminada, la ubicación predeterminada sin nombre es la pila de ubicaciones actual, pero puede usar el Set-Location cmdlet para cambiar la pila de ubicación actual.

Para administrar las pilas de ubicación, use los *-Location cmdlets, como se indica a continuación:

  • Para agregar una ubicación a una pila de ubicaciones, use el Push-Location cmdlet .

  • Para obtener una ubicación desde una pila de ubicaciones, use el Pop-Location cmdlet .

  • Para mostrar las ubicaciones en la pila de ubicaciones actual, use el parámetro Stack del Get-Location cmdlet . Para mostrar las ubicaciones en una pila de ubicaciones con nombre, use el parámetro StackName de Get-Location.

  • Para crear una nueva pila de ubicación, use el parámetro StackName de Push-Location. Si especifica una pila que no existe, Push-Location crea la pila.

  • Para que una pila de ubicación sea la pila de ubicación actual, use el parámetro StackName de Set-Location.

La pila de ubicaciones predeterminada sin nombre sólo es accesible en su totalidad cuando es la pila de ubicaciones actual. Si crea una pila de ubicación con nombre en la pila de ubicaciones actual, ya no puede usar los Push-Location cmdlets o Pop-Location para agregar o obtener elementos de la pila predeterminada o usar el Get-Location cmdlet para mostrar las ubicaciones en la pila sin nombre. Para que la pila sin nombre sea la pila actual, use el parámetro StackName del Set-Location cmdlet con un valor de $null o una cadena vacía ("").