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
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.
Cuando se usa el parámetro PassThru con Path o LiteralPath, este cmdlet devuelve un objeto PathInfo que representa la nueva ubicación.
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 deGet-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 (""
).