Cómo personalizar fondo y texto en PowerShell: guía completa

Última actualización: 03/10/2025
Autor: Isaac
  • PSReadLine y $PSStyle permiten paletas completas para tokens y salida formateada.
  • El ISE expone $psISE.Options para colores, tipografías y restauración rápida.
  • La accesibilidad exige contraste 4.5:1; ajusta Selection, Keyword y String.
  • Haz persistentes los cambios en el perfil y usa Write-Host para avisos puntuales.

Personalizar colores en PowerShell

Si trabajas a diario con la consola, seguro que te has planteado ajustar los colores para ver el texto con más claridad o, simplemente, para que el entorno te resulte más agradable. PowerShell permite personalizar fondo, colores de texto y estilos tanto desde la propia consola como mediante módulos y objetos específicos, e incluso guardar esa configuración para que sea permanente.

Además de los ajustes rápidos desde la interfaz, PowerShell incorpora PSReadLine y, desde 7.2, la variable $PSStyle para colorear tokens de sintaxis y la salida formateada. Si usas temas claros, conviene redefinir colores porque la paleta por defecto está pensada para fondos oscuros y algunos tonos pueden volverse ilegibles.

Ver y entender tu configuración actual con PSReadLine

Antes de tocar nada, es buena idea inspeccionar qué está activo. Get-PSReadLineOption muestra el modo de edición, historial y la paleta aplicada a cada tipo de token de PSReadLine, entre otras opciones.

Get-PSReadLineOption

El resultado incluye muchísimos detalles. Entre lo más útil están los colores por token y las secuencias ANSI vigentes para un terminal con fondo oscuro (valores típicos por defecto):

EditMode                : Windows
AddToHistoryHandler     : System.Func`2
HistoryNoDuplicates     : True
HistorySavePath         : C:\Users\user1\AppData\Roaming\Microsoft\Wind...
HistorySaveStyle        : SaveIncrementally
HistorySearchCaseSensitive : False
HistorySearchCursorMovesToEnd : False
MaximumHistoryCount     : 4096
ContinuationPrompt      : >>
ExtraPromptLineCount    : 0
PromptText              : {> }
BellStyle               : Audible
DingDuration            : 50
DingTone                : 1221
CommandsToValidateScriptBlockArguments : {ForEach-Object, %, Invoke-Command, icm...}
CompletionQueryItems    : 100
MaximumKillRingCount    : 10
ShowToolTips            : True
ViModeIndicator         : None
WordDelimiters          : ;:,.[]{}()/\|^&*-=+'"-—―
AnsiEscapeTimeout       : 100
PredictionSource        : HistoryAndPlugin
PredictionViewStyle     : Inline
ViewCommandColor        : "`e    = "`e = "`e   = "`e   = "`e = 'red'
$psISE.Options.RestoreDefaultConsoleTokenColors()
  • RestoreDefaults() (ISE 2.0+): devuelve a fábrica todas las opciones del panel Consola y restablece avisos.
    # Cambia el fondo de la Consola y restaura
    $psISE.Options.ConsolePaneBackgroundColor = 'orange'
    $psISE.Options.RestoreDefaults()
    
  • RestoreDefaultTokenColors() (ISE 2.0+): restablece colores de tokens del panel Script.
    # Cambia el color de comentarios y restaura
    $psISE.Options.TokenColors = 'red'
    $psISE.Options.RestoreDefaultTokenColors()
    
  • RestoreDefaultXmlTokenColors() (ISE 3.0+): restaura colores de tokens para XML mostrado en el ISE.
    # Cambia comentarios en XML y restaura
    $psISE.Options.XmlTokenColors = 'red'
    $psISE.Options.RestoreDefaultXmlTokenColors()
    

Propiedades clave para colores, tipografía y comportamiento

A continuación tienes una selección completa de propiedades de ISEOptions para controlar la apariencia y la experiencia. Puedes asignar nombres de color, hex o System.Windows.Media.Color según el caso:

  • AutoSaveMinuteInterval (ISE 3.0+): minutos entre guardados automáticos. Por defecto 2.
    $psISE.Options.AutoSaveMinuteInterval = 3
    
  • CommandPaneBackgroundColor (ISE 2.0): color del fondo del panel Comando.
    $psISE.Options.CommandPaneBackgroundColor = 'orange'
    
  • CommandPaneUp (ISE 2.0): sitúa el panel Comandos arriba o no.
    $psISE.Options.CommandPaneUp = $true
    
  • ConsolePaneBackgroundColor (ISE 3.0+): fondo del panel Consola.
    $psISE.Options.ConsolePaneBackgroundColor = 'red'
    
  • ConsolePaneForegroundColor (ISE 3.0+): color del texto del panel Consola.
    $psISE.Options.ConsolePaneForegroundColor = 'yellow'
    
  • ConsolePaneTextBackgroundColor (ISE 3.0+): fondo del texto de la Consola.
    $psISE.Options.ConsolePaneTextBackgroundColor = 'pink'
    
  • ConsoleTokenColors (ISE 3.0+): diccionario token-color para IntelliSense en la Consola; tokens como Attribute, Command, Keyword, String, Variable, etc.
    $psISE.Options.ConsoleTokenColors = 'green'
    $psISE.Options.ConsoleTokenColors = 'magenta'
    
  • DebugBackgroundColor (ISE 2.0+): fondo del texto de depuración.
    $psISE.Options.DebugBackgroundColor = '#0000FF'
    
  • DepurarForegroundColor (ISE 2.0+): primer plano del texto de depuración.
    $psISE.Options.DebugForegroundColor = 'yellow'
    
  • DefaultOptions (ISE 2.0+): colección con valores por defecto; útil para inspección.
    $psISE.Options.DefaultOptions
    
  • ErrorBackgroundColor (ISE 2.0+): fondo del texto de error en Consola.
    $psISE.Options.ErrorBackgroundColor = 'black'
    
  • ErrorForegroundColor (ISE 2.0+): color de texto de error en Consola.
    $psISE.Options.ErrorForegroundColor = 'green'
    
  • FontName (ISE 2.0+): tipografía usada en Script y Consola. Para recomendaciones sobre tipografías, consulta elegir la mejor fuente.
    $psISE.Options.FontName = 'Courier New'
    
  • FontSize (ISE 2.0+): tamaño de fuente (8–32) para Script, Comandos y Salida.
    $psISE.Options.FontSize = 20
    
  • IntellisenseTimeoutInSeconds (ISE 3.0+): segundos de espera para resolver IntelliSense (por defecto 3).
    $psISE.Options.IntellisenseTimeoutInSeconds = 5
    
  • MruCount (ISE 3.0+): número de archivos recientes en el menú Abrir (por defecto 10).
    $psISE.Options.MruCount = 5
    
  • OutputPaneBackgroundColor (ISE 2.0): color del fondo del panel Salida.
    $psISE.Options.OutputPaneForegroundColor = 'gold'
    
  • OutputPaneTextForegroundColor (ISE 2.0): primer plano del texto en Salida.
    $psISE.Options.OutputPaneTextForegroundColor = 'blue'
    
  • OutputPaneTextBackgroundColor (ISE 2.0): fondo del texto en Salida.
    $psISE.Options.OutputPaneTextBackgroundColor = 'pink'
    
  • ScriptPaneBackgroundColor (ISE 2.0+): fondo del panel Script.
    $psISE.Options.ScriptPaneBackgroundColor = 'yellow'
    
  • ScriptPaneForeGroundColor (ISE 2.0+): primer plano en archivos no-script del panel Script.
    $psISE.Options.ScriptPaneBackgroundColor = 'green'
    
  • SelectedScriptPaneState (ISE 2.0+): posición del panel Script: «Top», «Right» o «Maximized».
    $psISE.Options.SelectedScriptPaneState = 'Top'
    $psISE.Options.SelectedScriptPaneState = 'Right'
    $psISE.Options.SelectedScriptPaneState = 'Maximized'
    
  • ShowDefaultSnippets (ISE 3.0+): mostrar u ocultar snippets por defecto en Ctrl+J.
    $psISE.Options.ShowDefaultSnippets = $false
    
  • ShowIntellisenseInConsolePane (ISE 3.0+): habilitar sugerencias IntelliSense en Consola.
    $psISE.Options.ShowIntellisenseInConsolePane = $false
    
  • ShowIntellisenseInScriptPane (ISE 3.0+): habilitar IntelliSense en Script.
    $psISE.Options.ShowIntellisenseInScriptPane = $false
    
  • ShowLineNumbers (ISE 3.0+): números de línea en el panel Script.
    $psISE.Options.ShowLineNumbers = $false
    
  • ShowOutlining (ISE 3.0+): plegado/desplegado de código en Script.
    $psISE.Options.ShowOutlining = $false
    
  • ShowToolBar (ISE 2.0+): mostrar la barra de herramientas del ISE.
    $psISE.Options.ShowToolBar = $true
    
  • ShowWarningBeforeSavingOnRun (ISE 2.0+): aviso antes de guardar al ejecutar.
    $psISE.Options.ShowWarningBeforeSavingOnRun = $true
    
  • ShowWarningForDuplicateFiles (ISE 2.0+): aviso al abrir el mismo archivo en varias pestañas.
    $psISE.Options.ShowWarningForDuplicateFiles = $true
    
  • TokenColors (ISE 2.0+): diccionario token-color para IntelliSense en Script (Attribute, Command, Keyword, etc.).
    $psISE.Options.TokenColors = 'green'
    $psISE.Options.TokenColors = 'magenta'
    
  • UseEnterToSelectInConsolePaneIntellisense (ISE 3.0+): usar Enter para seleccionar en IntelliSense de Consola.
    $psISE.Options.UseEnterToSelectInConsolePaneIntellisense = $false
    
  • UseEnterToSelectInScriptPaneIntellisense (ISE 3.0+): usar Enter para seleccionar en IntelliSense de Script.
    $psISE.Options.UseEnterToSelectInConsolePaneIntellisense = $true
    
  • UseLocalHelp (ISE 3.0+): F1 abre ayuda local u online.
    $psISE.Options.UseLocalHelp = $false
    $psISE.Options.UseLocalHelp = $true
    
  • VerboseBackgroundColor (ISE 2.0+): fondo del texto Verbose.
    $psISE.Options.VerboseBackgroundColor = '#0000FF'
    
  • VerboseForegroundColor (ISE 2.0+): primer plano del texto Verbose.
    $psISE.Options.VerboseForegroundColor = 'yellow'
    
  • WarningBackgroundColor (ISE 2.0+): fondo del texto de advertencia.
    $psISE.Options.WarningBackgroundColor = '#0000FF'
    
  • WarningForegroundColor (ISE 2.0+): primer plano del texto de advertencia.
    $psISE.Options.WarningForegroundColor = 'yellow'
    
  • XmlTokenColors (ISE 3.0+): diccionario token-color para contenido XML.
    $psISE.Options.XmlTokenColors = 'green'
    $psISE.Options.XmlTokenColors = 'magenta'
    
  • Zoom (ISE 3.0+): tamaño relativo del texto (20–400; por defecto 100).
    $psISE.Options.Zoom = 200
    

También puedes consultar una instantánea de la configuración por defecto del ISE. Te mostrará fuentes, colores y diccionarios de tokens tal y como vienen de serie, útil para comparar.

$psISE.Options.DefaultOptions

Cambiar colores desde la interfaz de Windows (CMD y PowerShell)

Si prefieres no tocar scripts, también puedes ajustar colores desde la propia ventana. Haz clic derecho en la barra de título de CMD o PowerShell, elige Propiedades y abre la pestaña Colores.

  3 mejores benchmarks para CPU: métodos, programas y consejos expertos

Configurar fondo de pantalla y pantalla de bloqueo con PowerShell

Más allá de los colores de la consola, es posible establecer el fondo de escritorio mediante script, incluso cambiar el fondo de inicio de sesión desde script. Existen guías para Windows Server 2012 R2/2016/2019 y Windows 10/7 que muestran cómo hacerlo desde PowerShell, lo que resulta útil para automatización.

En entornos gestionados (por ejemplo, con Intune), podrías empaquetar un script que fije una imagen o una presentación de diapositivas desde una carpeta (por ejemplo, C:\\temp\\slideshowtest). Es un escenario habitual y viable de automatizar vía distribución como aplicación.

Colorear mensajes rápidos con Write-Host

Para salidas rápidas, Write-Host permite dar color al vuelo al primer plano y al fondo. Es ideal para resaltar avisos o errores en scripts sin meterse en PSReadLine.

Write-Host "Operación completada" -ForegroundColor Green
Write-Host "Atención" -ForegroundColor Yellow -BackgroundColor DarkBlue
Write-Host "Error" -ForegroundColor Red -BackgroundColor Black

La lista de colores soportados es amplia (por ejemplo, Black, DarkBlue, DarkGreen, DarkCyan, DarkRed, DarkMagenta, DarkYellow, Gray, DarkGray, Blue, Green, Cyan, Red, Magenta, Yellow, White) y te permite un mínimo de coherencia visual sin más dependencias.

Consejos prácticos para una paleta usable

No te limites a “que quede bonito”. Prioriza la legibilidad. Evita combinar tonos saturados en ambos planos y verifica contraste con una herramienta fiable. El objetivo es que tu consola sea cómoda durante horas.

Revisa también el color de selección y el resaltado de predicciones/IntelliSense. Un Selection con buen contraste y un ListPredictionSelected que no “se coma” el texto marcan la diferencia en productividad.

¿Colores por proyecto o por máquina? Perfiles al rescate

Si alternas entre máquinas o perfiles de usuario, te compensa centralizar tu configuración. Guarda tu $ISETheme y ajustes $PSStyle en tu perfil y versiona el archivo (por ejemplo, con Git) para mantenerlos sincronizados.

En equipos compartidos o multiusuario, valora dividir entre perfil AllUsers y perfil de usuario. Así separas lo global de lo personal y evitas sorpresas cuando cambias de sesión.

  Organizar Fotos Ya No Será Un Problema, Conoce Los Software estrellas

Diagnóstico rápido: ¿por qué se ve mal en tema claro?

Recuerda que la paleta por defecto de PSReadLine y $PSStyle está pensada para fondos oscuros. En tema claro, muchos tonos claros en primer plano pasan desapercibidos. Revisa Comment, String, Keyword, Member y Variable, que suelen chocar en claros.

Si el problema es el color de salida de cmdlets nativos (por ejemplo, encabezados de tablas), revisa $PSStyle.Formatting.* y los colores definidos para directorios, enlaces simbólicos, ejecutables y extensiones en $PSStyle.FileInfo.

Configurar Windows Terminal con múltiples shells
Artículo relacionado:
Configurar Windows Terminal con múltiples shells: guía total