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:
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:
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 " "
}
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 + ")"
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:
Happy scripting!
Comments