about_Special_Characters

Descripción breve

Describe las secuencias de caracteres especiales que controlan cómo PowerShell interpreta los siguientes caracteres de la secuencia.

Descripción larga

PowerShell admite un conjunto de secuencias de caracteres especiales que se usan para representar caracteres que no forman parte del conjunto de caracteres estándar. Las secuencias se conocen normalmente como secuencias de escape.

Las secuencias de escape comienzan con el carácter de retroceso, conocido como énfasis grave (ASCII 96) y distinguen mayúsculas de minúsculas. El carácter de barra trasera también se puede denominar carácter de escape.

Las secuencias de escape solo se interpretan cuando se incluyen en cadenas entre comillas dobles (").

PowerShell reconoce estas secuencias de escape:

Secuencia Descripción
`0 Null
`a Alerta
`b Retroceso
`e Escape (agregado en PowerShell 6)
`f Avance de página
`n Nueva línea
`r Retorno de carro
`t Tabulación horizontal
`u{x} Secuencia de escape Unicode (agregada en PowerShell 6)
`v Tabulación vertical

PowerShell también tiene un token especial para marcar dónde desea que se detenga el análisis. Todos los caracteres que siguen este token se usan como valores literales que no se interpretan.

Tokens de análisis especiales:

Secuencia Descripción
-- Tratar los valores restantes como argumentos no parámetros
--% Dejar de analizar todo lo que sigue

Null ('0)

El carácter null (`0) aparece como un espacio vacío en la salida de PowerShell. Esta funcionalidad le permite usar PowerShell para leer y procesar archivos de texto que usan caracteres NULL, como indicadores de terminación de cadena o finalización de registros. El carácter especial null no es equivalente a la $null variable , que almacena un valor NULL .

Alerta ('a)

El carácter de alerta (`a) envía una señal de pitido al altavoz del equipo. Puede usar este carácter para advertir a un usuario sobre una acción inminente. En el ejemplo siguiente se envían dos señales de sonido al altavoz del equipo local.

for ($i = 0; $i -le 1; $i++){"`a"}

Retroceso ('b)

El carácter de retroceso (`b) mueve el cursor hacia atrás un carácter, pero no elimina ningún carácter.

En el ejemplo se escribe la palabra backup y, a continuación, se vuelve a mover el cursor dos veces. A continuación, en la nueva posición, escribe un espacio seguido de la palabra out.

"backup`b`b out"
back out

Escape ('e)

Nota:

Este carácter especial se agregó en PowerShell 6.0.

El carácter de escape (`e) se usa normalmente para especificar una secuencia de terminal virtual (secuencia de escape ANSI) que modifica el color del texto y otros atributos de texto, como negrita y subrayado. Estas secuencias también se pueden usar para el posicionamiento y el desplazamiento del cursor. El host de PowerShell debe admitir secuencias de terminal virtual. Puede comprobar el valor booleano de $Host.UI.SupportsVirtualTerminal para determinar si se admiten estas secuencias ANSI.

Para obtener más información sobre las secuencias de escape ANSI, consulte el artículo sobre el código de escape ANSI en Wikipedia.

En el ejemplo siguiente se genera texto con un color de primer plano verde.

$fgColor = 32 # green
"`e[${fgColor}mGreen text`e[0m"
Green text

Fuente de formularios ('f)

El carácter de fuente de formularios (`f) es una instrucción de impresión que expulsa la página actual y continúa imprimiendo en la página siguiente. El carácter de fuente de formularios solo afecta a los documentos impresos. No afecta a la salida de la pantalla.

Nueva línea ('n)

El nuevo carácter de línea (`n) inserta un salto de línea inmediatamente después del carácter.

En este ejemplo se muestra cómo usar el nuevo carácter de línea para crear saltos de línea en un Write-Host comando.

"There are two line breaks to create a blank line`n`nbetween the words."
There are two line breaks to create a blank line

between the words.

Retorno de carro ('r)

El carácter de retorno de carro (`r) mueve el cursor de salida al principio de la línea actual y continúa escribiendo. Los caracteres de la línea actual se sobrescriben.

En este ejemplo, se sobrescribe el texto antes de que se sobrescriba el retorno de carro.

Write-Host "These characters are overwritten.`rI want this text instead "

Observe que el texto antes de que el `r carácter no se elimine, se sobrescribe.

I want this text instead written.

Pestaña Horizontal (no)

El carácter de tabulación horizontal (`t) avanza hasta la siguiente tabulación y continúa escribiendo en ese punto. De forma predeterminada, la consola de PowerShell tiene una tabulación en cada octavo espacio.

En este ejemplo se insertan dos pestañas entre cada columna.

"Column1`t`tColumn2`t`tColumn3"
Column1         Column2         Column3

Carácter Unicode ('u{x})

Nota:

Este carácter especial se agregó en PowerShell 6.0.

La secuencia de escape Unicode (`u{x}) permite especificar cualquier carácter Unicode mediante la representación hexadecimal de su punto de código. Esto incluye caracteres Unicode situados encima del plano multilingüe básico (>0xFFFF) que incluye caracteres emoji, como el carácter de los pulgares arriba (`u{1F44D}). La secuencia de escape Unicode requiere al menos un dígito hexadecimal y admite hasta seis dígitos hexadecimales. El valor hexadecimal máximo de la secuencia es 10FFFF.

En este ejemplo se genera el símbolo de flecha arriba (↕).

"`u{2195}"

Pestaña Vertical ('v)

El carácter de tabulación vertical (`v) avanza hasta la siguiente tabulación vertical y escribe el resultado restante en ese punto. La representación de la pestaña vertical depende del dispositivo y del terminal.

Write-Host "There is a vertical tab`vbetween the words."

En los ejemplos siguientes se muestra la salida representada de la pestaña vertical en algunos entornos comunes.

La aplicación host de consola de Windows interpreta (`v) como un carácter especial sin espacio adicional agregado.

There is a vertical tab♂between the words.

El Terminal Windows representa el carácter de tabulación vertical como retorno de carro y avance de línea. El resto de la salida se imprime al principio de la línea siguiente.

There is a vertical tab
between the words.

En impresoras o en consolas basadas en Unix, el carácter de tabulación vertical avanza a la siguiente línea y escribe el resultado restante en ese punto.

There is a vertical tab
                       between the words.

Continuación de línea

El carácter de barra trasera también se puede usar al final de una línea como señal para el analizador de PowerShell que el comando continúa en la línea siguiente. Para obtener más información, consulte about_Parsing.

Token de fin de parámetros (--)

El token de fin de parámetros (--) indica que todos los argumentos que siguen deben pasarse en su forma real como si las comillas dobles se colocaran alrededor de ellos. Por ejemplo, el uso -- de puede generar la cadena -InputObject sin usar comillas ni interpretarla como parámetro:

Write-Output -- -InputObject
-InputObject

Se trata de una convención especificada en la especificación de utilidades y shell de POSIX.

Token de detención del análisis (--%)

El token de detención del análisis (--%) impide que PowerShell interprete cadenas como comandos y expresiones de PowerShell. Esto permite que esas cadenas se pasen a otros programas para su interpretación.

Coloque el token de detención del análisis después del nombre del programa y antes de los argumentos del programa que podrían provocar errores.

En este ejemplo, el Icacls comando usa el token de detención del análisis.

icacls X:\VMS --% /grant Dom\HVAdmin:(CI)(OI)F

PowerShell envía la siguiente cadena a Icacls.

X:\VMS /grant Dom\HVAdmin:(CI)(OI)F

En este segundo ejemplo, pasamos la variable $HOME al cmd.exe /c echo comando dos veces.

cmd.exe /c echo $HOME --% $HOME

La salida muestra que PowerShell interpreta la primera instancia de $HOME para que el valor de la variable se pase a cmd. La segunda instancia de $HOME viene después del token de detención del análisis, por lo que se pasa como una cadena literal.

C:\Users\username  $HOME

Para obtener más información sobre el token de detención del análisis, consulte about_Parsing.

Consulte también