Compartir a través de


Set-Location

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

Sintaxis

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

Description

El cmdlet Set-Location 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 ha agregado 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 unidad HKLM:.

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 unidad Env:. Usa el parámetro PassThru para dirigir PowerShell para devolver un objeto pathInfo de que representa la ubicación del Env:\.

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 unidad HKLM: en el proveedor del Registro. El segundo comando establece la ubicación en la ubicación actual de la unidad C: 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 psDrive, use Get-Location -PSDrive <DriveName> comando.

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 cmdlets de *-Location 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 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 de.

Parámetros

-LiteralPath

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

Tipo:String
Alias:PSPath, LP
Posición:Named
Valor predeterminado:None
Requerido:True
Aceptar entrada de canalización:True
Aceptar caracteres comodín:False

-PassThru

Devuelve un objeto PathInfo que representa la ubicación. De forma predeterminada, este cmdlet no genera ninguna salida.

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:False
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín: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 ruta de acceso 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 de Pop-Location y Push-Location, excepto 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.

Tipo:String
Posición:0
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:True
Aceptar caracteres comodín: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 ubicación. 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 cmdlets de *-Location. Los cmdlets *-Location 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.

Tipo:String
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:True
Aceptar caracteres comodín: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 cmdlet Set-Location 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, vea about_Providers.

Una pila es una lista en la que solo se puede acceder al elemento agregado más recientemente. Agregue elementos a una pila en el orden en que los use y, a continuación, los recupere para usarlos 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 cmdlet Set-Location para cambiar la pila de ubicación actual.

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

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

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

  • Para mostrar las ubicaciones en la pila de ubicaciones actual, use el parámetro stack de del cmdlet Get-Location. 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 ubicación predeterminada sin nombre solo es totalmente accesible cuando es la pila de ubicación actual. Si crea una pila de ubicación con nombre en la pila de ubicaciones actual, ya no puede usar los cmdlets Push-Location o Pop-Location para agregar o obtener elementos de la pila predeterminada o usar el cmdlet Get-Location 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 cmdlet Set-Location con un valor de $null o una cadena vacía ("").