Modificar el prompt en PowerShell

PowerShell ofrece muchas maneras de hacernos felices y una de ellas es la customizaci贸n de la consola 馃檪

Hoy quiero compartir como modificar el prompt de nuestra consola para darle un toque m谩s personalizado y/o diferente.

As铆 es como se ve por defecto:

Consola de PowerShell

Primeros pasos

Lo primero que me gustar铆a compartir es c贸mo hacer para poder modificar nuestro perfil en PowerShell, para ello, debemos situarnos en la ruta de nuestro perfil dentro de la carpeta documentos, ah铆 van a encontrar la carpeta WindowsPowerShell y dentro de ella, el archivo Microsoft.PowerShell_profile.ps1

En mi caso la ruta completa es: C:\Users\Victor\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

Ahora bien, teniendo ubicado el archivo a modificar vamos a ver algunas cosas.

Primero debemos definir, por ejemplo, una funci贸n en donde poder ubicar nuestros cambios. Para ser consecuente, voy a generar una funci贸n llamada prompt, donde le voy a indicar que me devuelta (return) el s铆mbolo numeral (o sharp):

function Prompt {
    return "#"
}

Si guardamos los cambios y ejecutamos una nueva consola de PowerShell vamos a ver lo siguiente:

Consola con el # como prompt

Ya con esto podemos hacer algunas modificaciones, como: 鈥>鈥 o 鈥溾>鈥

O agregar una variable, de la siguiente manera utilizando la hora:

function Prompt {
    Write-Host ("[") -nonewline
    Write-Host (Get-Date -format HH:mm:ss) -nonewline
    Write-Host ("] #") -nonewline
    return " "
}

Dejando el s铆mbolo numeral, como separador (para que quede m谩s ordenado).

Agregando colores

Teniendo la base anterior, podemos tomar la funci贸n y agregarle un poco de color y alg煤n s铆mbolo m谩s:

function Prompt { 
    Write-Host ("[") -nonewline -foregroundcolor DarkGray 
    Write-Host (Get-Date -format HH:mm:ss) -nonewline 
    Write-Host ("] ") -nonewline -foregroundcolor DarkGray 
    Write-Host ($PWD) -nonewline -foregroundcolor Green 
    Write-Host (" | ") -nonewline -foregroundcolor DarkGray
    Write-Host ("#") -nonewline -foregroundcolor Yellow
    return " "
}

Prompt con hora, ubicaci贸n y #

Cambiando el t铆tulo de la ventana

Tambi茅n podemos hacerle cambios visuales al t铆tulo de la ventana, como en este ejemplo, agregando mi nombre y la versi贸n de PowerShell:

(Get-Host).UI.RawUI.WindowTitle =  "Victor" + " (v" + (Get-Host).Version + ")"

T铆tulo cambiado

Revisando privilegios

Adicional a lo anterior podemos realizar una comprobaci贸n de privilegios, comprobando si el usuario ejecut贸 la sesi贸n como administrador con la siguiente funci贸n:

function Test-Administrator {
    $user = [Security.Principal.WindowsIdentity]::GetCurrent()
    (New-Object Security.Principal.WindowsPrincipal $user).IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
}

Y agregando lo anterior a otro ejemplo de customizaci贸n del prompt:

function prompt {
    if (Test-Administrator) {  # Use different username if elevated
        Write-Host "[Adm] " -NoNewline -ForegroundColor White
    }

    Write-Host "$ENV:USERNAME" -NoNewline -ForegroundColor Green
    Write-Host "@" -NoNewline
    Write-Host "$ENV:COMPUTERNAME" -NoNewline -ForegroundColor Green

    Write-Host " : " -NoNewline
    Write-Host $($(Get-Location) -replace ($env:USERPROFILE).Replace('\','\\'), "~") -NoNewline
    Write-Host " : " -NoNewline
    Write-Host (Get-Date -Format G) -NoNewline -ForegroundColor Gray
    Write-Host " : " -NoNewline

    Write-Host ""

    return "> "
}

El resultado es:

Comprobaci贸n de elevaci贸n de permisos

Happy scripting!

Comments