Búsqueda de sitios web

Ubicación de PowerShell | ¿Cómo funciona la ubicación en PowerShell?


Definición de ubicación de PowerShell

Los cmdlets de ubicaciones de PowerShell Get-Location, Set-Location, Push-Location y Pop-Location se utilizan para obtener la ubicación actual de la consola de PowerShell, establecer la ubicación en el directorio, registro o ruta del certificado, moverse a la nueva ubicación, y conservar la ubicación anterior mediante la pila y el script utiliza estos cmdlets para establecer la ubicación de la carpeta de origen para que todos los archivos de origen que residen en la carpeta se puedan ejecutar fácilmente.

Sintaxis:

Get-Location Syntax:

Get-Location [-PSProvider <String[]>] [-PSDrive <String[]>] [<CommonParameters>]
Get-Location
[-Stack]
[-StackName <String[]>]
[<CommonParameters>]
Set-Location Syntax:

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

Push-Location [[-Path] <String>] [-PassThru] [-StackName <String>] [<CommonParameters>]
Push-Location
[-LiteralPath <String>]
[-PassThru]
[-StackName <String>]
[<CommonParameters>]
Pop-Location Syntax:

Pop-Location [-PassThru] [-StackName <String>] [<CommonParameters>]

En lo anterior, en todas las sintaxis múltiples, podemos usar solo un conjunto a la vez para el cmdlet en particular. Por ejemplo, en el cmdlet Push-Location, podemos usar -Path o -LiteralPath, pero no podemos usar ambos juntos.

¿Cómo funciona la ubicación en PowerShell?

También hay otros cmdlets de ubicación en PowerShell con diferentes módulos, pero PowerShell se envía de forma predeterminada con los 4 cmdlets para ubicación (Push-Location, Pop-Location, Set-Location, Get-Location) y son del módulo de PowerShell Microsoft.PowerShell .Management.
Podemos comprobar los cmdlets mencionados con el comando,

Get-Command -Name *location* -Module Microsoft.PowerShell.Management

Salida:

Cuando usamos el comando Obtener-Ubicación, muestra la ruta de la ubicación actual.

PS C:\Temp> Get-Location

Salida:

Con el comando Set-Location, podemos cambiar el directorio a otro directorio, registro o ubicación de almacén de certificados. Este comando es el alias del comando cmd "cd", lo que significa que puede usar ambos comandos alternativamente.

Cuando usamos Set-Location, podemos enviar la ubicación actual a la nueva pila para poder recuperarla más tarde. El siguiente comando cambiará la ubicación del registro.

PS C:\Temp\Temp1> Set-Location HKLM:\HARDWARE\

Salida:

Los comandos Push-Location y Pop-Location funcionan de manera un poco diferente a Set-Location y Get-Location. El comando Push-Location envía la ubicación actual a la pila y luego cambia a la ubicación actual mientras que el comando Pop-Location se usa para recuperar la ubicación enviada de la pila como se muestra a continuación.

PS C:\Temp> Push-Location -Path C:\Test1\

Salida:

Cuando revisamos la pila, debería mostrar C:\Temp.

PS C:\Test1> Get-Location -Stack

Salida:

Empujemos la otra ubicación y revisemos la pila.

PS C:\Test1> Push-Location -Path C:\Test2\
PS C:\Test2> Get-Location -Stack

Salida:

Cuando usamos el comando Pop-Location, recuperará la salida almacenada en el orden LIFO (Último en entrar, primero en salir).

PS C:\Test2> Pop-Location
PS C:\Test1> Pop-Location

Salida:

Ejemplos

Ejemplo #1: Configuración de la ubicación de la variable de entorno.

Podemos usar el comando Set-Location para cambiar el directorio a la ubicación de la variable de entorno. A continuación utilizamos la variable de entorno del directorio raíz de Windows.

PS C:\> Set-Location $env:windir

Salida:

También podemos configurar la ubicación de la variable de entorno como directorio de destino como se muestra a continuación.

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

Salida:

Ejemplo #2: Configuración de la ubicación del directorio en el registro y la ruta del certificado.

Podemos configurar la ubicación del registro como se muestra a continuación.

PS C:\> Set-Location HKLM:\

Salida:

O la ruta secundaria del registro.

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

Salida:

De manera similar, también podemos configurar la ruta del administrador de certificados.

PS C:\> Set-Location Cert:\LocalMachine\

Salida:

Ejemplo #3: Obtener la ubicación de ejecución del script.

Para obtener la ubicación del script que se está ejecutando podemos usar el comando MyInvocation.

MyCommand muestra el nombre del script e InvocationName muestra la ruta del script.

$MyInvocation.InvocationName

Ejemplo #4: Obtener la ubicación de la ruta de PowerShellModule.

La ruta del módulo de PowerShell se almacena en la ubicación $env: PsModulePath
Puede utilizar el siguiente comando para obtener la ruta del nódulo PS.

$env:PSModulePath -split ';'

Salida:

Ejemplo n.º 5: uso de los comandos Push-Location y Pop-Location en un script.

Supongamos que tenemos un script que usa un comando Push-Location para obtener los datos de una ubicación particular y luego usa un comando Pop-Location para volver a la ubicación original para que el script pueda reanudar la ejecución con la referencia a la ruta anterior.

Write-Output "Current Directory Location: $(Get-Location)"
Write-Output "Retrieve the files/folders from the C:\temp"
Push-Location C:\Test1
dir
Write-Output "Returning to the original location"
Pop-Location
Write-Output "Lastest Location: $(Get-Location)"

Salida:

Ejemplo #6: Inserte las ubicaciones en la nueva pila de nombres.

Podemos usar la pila de nombres diferente para enviar la ubicación a la nueva pila, de modo que cuando estemos trabajando en el script específico, no necesitemos ingresar nuestras ubicaciones en la pila de nombres predeterminada.

Push-Location C:\Windows\System32\drivers\etc\ -StackName 'MyStack' -PassThru

Salida:

Podemos recuperar la ubicación anterior de la pila de nombres específica usando el siguiente comando.

Pop-Location -StackName 'MyStack'

Salida:

Ejemplo #7: Establecer la ubicación usando otra pila.

Aquí podemos configurar la ubicación usando una pila de nombres diferente. Primero crearemos la nueva pila empujando la ubicación a la nueva pila y estableceremos la ubicación de esa pila y luego volveremos a nuestra ubicación anterior.

Push-Location $env:windir\System32\drivers\etc\ -StackName 'MyStack' -PassThru
Set-Location -StackName 'MyStack'

Los comandos anteriores envían la ubicación a la pila y Set-Location establece esa ubicación específica de la pila.

Salida:

Podemos verificar las ubicaciones almacenadas dentro de la pila usando,

Get-Location -StackName 'MyStack'

Salida:

Ejemplo #8: Navegue por la ubicación usando '+' o '-'.

Podemos navegar por la ubicación usando los signos '+' y '-' en Set-Location o el comando cd.

PS C:\> Set-Location $env:CommonProgramFiles
PS C:\Program Files\Common Files> Set-Location HKLM:\HARDWARE\
PS HKLM:\HARDWARE\> Set-Location Cert:\CurrentUser\

Hemos navegado por las carpetas anteriores ahora. Usaremos el signo '-' y '+' para pasar a la ruta anterior y a la siguiente.

Set-Location -Path '-'
Set-Location -Path '+'

Salida:

Conclusión

Los comandos de ubicación de PowerShell son muy útiles dentro del script para configurar la ruta del directorio para los archivos fuente y regresar a la ruta original para que no sea necesaria la intervención humana cuando un script necesita la ubicación deseada para ejecutar archivos dependientes.

Artículos relacionados