Cómo personalizar nuestro perfil de PowerShell

Cada vez que abrimos una consola de PowerShell ésta inicia con un perfil asociado a nuestro usuario. En la entrada de hoy veremos cómo modificar nuestro perfil de PowerShell y repasaremos algunas de las modificaciones que tenemos disponibles para hacer “un poco más nuestra” la terminal.

Cómo personalizar el perfil de PowerShell

PowerShell carga las personalizaciones de nuestro perfil a través de un archivo .ps1 que se ejecuta cada vez que iniciamos un terminal de PowerShell. Dicho archivo no es más que un script de PowerShell con una serie de comandos, alias o funciones.

Como se puede intuir lo primero que necesitamos es saber qué archivo es el responsable de dichas modificaciones. Para ello podemos valernos de la variable $profile, que nos indica la ubicación del mismo:

Personalizar perfil de PowerShell

Este archivo por defecto no existe, por lo que antes que nada deberemos crearlo:

Creación archivo profile

Una vez hecho podemos pasar a editarlo con, por ejemplo, PowerShell ISE y añadirle algo de contenido:

Editar perfil de PowerShell

Ahora, si abrimos una nueva consola de PowerShell, podemos ver nuestra primera personalización:

Mensaje de perfil de PowerShell

Personalizaciones disponibles en nuestro perfil de PowerShell

La realidad es que podemos realizar cualquier personalización que deseemos en nuestro perfil de PowerShell puesto que las personalizaciones se realizan a través de un archivo .ps1. Voy a enumerar unas cuantas que pienso que pueden ser útiles y que yo personalmente uso.

Crear alias

PowerShell incorpora por defecto una serie de alias que pueden ser consultados mediante el comando Get-Alias. No obstante, es muy probable que pensemos que esta lista es escueta y queramos ampliarla. Crear un alias es muy sencillo con New-Alias, pero el gran problema es que cuando cerramos nuestra sesión de PowerShell dichos alias desaparecen. Una buena forma de hacerlos permanentes es declararlos en nuestro perfil de PowerShell:

# Alias consola VMs de VMware
New-Alias ovc Open-VMConsoleWindow

# Alias Get-VM
New-Alias gvm Get-VM

Conectarnos a una infraestructura remota

Es posible que en nuestro día a día requiramos conectarnos siempre a un mismo sistema remoto como podría ser un cluster vCenter. Existe la opción de que cada vez que abramos nuestra terminal de PowerShell piquemos la cadena de conexión, pero es mucho más cómodo añadirlo a nuestro perfil y que lo haga de forma automática:

# Conexión a vCenter
Connect-VIServer vcsa.lab.local -WarningAction SilentlyContinue | Out-Null

Si esto además lo combinamos con la gestión de credenciales de forma segura en PowerShell que vimos unos post atrás la conexión se realizará de forma que no se nos pidan ni las credenciales del sistema remoto:

# Conexión a vCenter
$credenciales = Import-Clixml -Path C:\credenciales.xml
Connect-VIServer -Server vcsa.lab.local -Credential $credenciales -WarningAction SilentlyContinue | Out-Null

Crear funciones

Otra de las posibilidades de las que disponemos con nuestro perfil de PowerShell es añadir funciones que serán cargadas en cada sesión de PowerShell. El concepto es similar a la precarga de módulos de PowerShell que vimos en entradas anteriores pero copiando directamente el contenido de la función.

Modificar el prompt

Si queremos añadir información extra o personalizar nuestro prompt podemos hacerlo, enlazando con el punto anterior, creando una función especial llamada prompt en la que lo podremos construir a nuestro gusto:

function prompt {
    # Añadimos al prompt la hora y cambiamos el color a verde. Mantenemos la ubicación del prompt por defecto.
    Write-Host ("PS $((Get-Location).Path) $((get-date).ToShortTimeString())>") -nonewline -foregroundcolor Green
    return " "
}

Y el resultado quedaría como este:

Prompt personalizado

Modificar la consola de PowerShell

Si nos gusta la personalización puede que queramos darle un toque distinto a nuestra consola de PowerShell. Aquí van algunas modificaciones simples que podemos realizar:

## Modificaciones de consola de PowerShell
# Cambio título de la ventana
$Host.UI.RawUI.WindowTitle = "Sobrebits.com"
# Cambio de color fondo
$Host.UI.RawUI.BackgroundColor = "black"
# Cambio de color de letra
.ForegroundColor = "green"
# Limpiamos la pantalla para aplicar cambios
Clear-Host

Y este sería el resultado:
Consola de PowerShell modificada

Cambiar la ubicación de inicio

Por defecto las sesiones de PowerShell inician en la home de nuestro usuario. Si queremos cambiar nuestro directorio de trabajo por defecto a otra ubicación como, por ejemplo, una carpeta donde ubiquemos nuestros scripts o donde tengamos nuestros repositorios de Git creados también podemos hacerlo:

# Cambio de ubicación por defecto
Set-Location C:\Scripts

Conclusión

Como decía al principio podemos realizar prácticamente cualquier modificación que se nos ocurra, se trata de hacer que nuestra experiencia desde la terminal sea más práctica y sacarle un poco más de jugo a la terminal.

Deja un comentario