TEMA
about_Prompts
DESCRIPCIÓN BREVE
Describe la función Prompt y muestra cómo crear una función
Prompt personalizada.
DESCRIPCIÓN DETALLADA
El símbolo del sistema de Windows PowerShell indica que Windows
PowerShell está listo para ejecutar un comando:
PS C:\>
La función Prompt determina el símbolo del sistema de Windows
PowerShell. Puede personalizar el símbolo del sistema creando su
propia función Prompt. A continuación, podrá guardar esta función
en su perfil de Windows PowerShell.
Función Prompt
La función Prompt determina la apariencia del símbolo del
sistema de Windows PowerShell. Windows PowerShell incluye una
función Prompt integrada, pero puede invalidarla definiendo su
propia función Prompt.
La función Prompt tiene la sintaxis siguiente:
function prompt { <cuerpo de la función> }
La función Prompt debe devolver un objeto, normalmente una
cadena. Se recomienda que devuelva una cadena o un objeto con
formato de cadena. La cadena debe caber en una línea de 80
caracteres.
Por ejemplo:
PS C:\> function prompt {"Hola a todos > "}
Hola a todos >
Al igual que todas las funciones, la función Prompt se almacena
en la unidad Function:. Para mostrar el código en la función
Prompt actual, escriba:
(get-item function:prompt).definition
Este comando utiliza el cmdlet Get-Item para mostrar el
elemento Prompt en la unidad Function:. A continuación, utiliza
la notación de puntos para mostrar el valor de la propiedad
Definition de la función Prompt.
Símbolo del sistema predeterminado
El símbolo del sistema predeterminado de Windows PowerShell es:
PS>
Este símbolo del sistema aparece únicamente cuando la función
Prompt genera un error o no devuelve una cadena u objeto.
PS C:\> function prompt {$null}
PS>
Dado que Windows PowerShell incluye un símbolo del sistema
integrado, normalmente no se ve el símbolo del sistema
predeterminado hasta que se escriba una función Prompt
personalizada.
Símbolo del sistema integrado
Windows PowerShell incluye una función Prompt integrada que
crea los símbolos del sistema que resultan familiares. La
función Prompt integrada es:
function prompt
{
$(if (test-path variable:/PSDebugContext) { '[DBG]: ' }
else { '' }) + 'PS ' + $(Get-Location) `
+ $(if ($nestedpromptlevel -ge 1) { '>>' }) + '> '
}
La función utiliza el cmdlet Test-Path para determinar si se ha
rellenado la variable automática $PSDebugContext. En caso
afirmativo, se está en modo de depuración y se agrega "[DBG]"
al símbolo del sistema:
[DBG] PS C:\ps-test>
Si no se ha rellenado la variable $PSDebugContext, la función
agrega "PS" al símbolo del sistema. Además, la función usa el
cmdlet Get-Location para obtener la ubicación actual del
directorio del sistema de archivos. A continuación, agrega un
corchete angular de cierre (>). Por ejemplo:
PS C:\ps-test>
En el caso de un símbolo del sistema anidado, la función agrega
dos corchetes angulares (>>) al símbolo del sistema. (En el
caso de un símbolo del sistema anidado, el valor de la variable
automática $NestedPromptLevel es mayor que 1.)
Por ejemplo, cuando está depurando en un símbolo del sistema
anidado, el símbolo del sistema es similar al que figura a
continuación:
[DBG] PS C:\ps-test>>>
El cmdlet Enter-PSSession antepone el nombre del equipo remoto
a la función Prompt actual. Cuando se usa el cmdlet
Enter-PSSession para iniciar una sesión con un equipo remoto,
el símbolo del sistema cambia de modo que incluya el nombre del
equipo remoto. Por ejemplo:
PS Hola a todos> Enter-PSSession Servidor01
[Servidor01]: PS Hola a todos>
Es posible que otras aplicaciones host de Windows PowerShell y
shells alternativos tengan sus propios símbolos del sistema
personalizados.
Para obtener más información sobre las variables automáticas
$PSDebugContext y $NestedPromptLevel, vea about_Automatic_Variables.
Personalizar el símbolo del sistema
Para personalizar el símbolo del sistema, escriba una nueva
función Prompt. La función no está protegida, por lo que puede
sobrescribirla.
Para escribir una función Prompt, escriba:
function prompt { }
A continuación, entre las llaves, escriba los comandos o la
cadena que cree el símbolo del sistema.
Por ejemplo, el siguiente símbolo del sistema incluye el nombre
del equipo:
function prompt {"PS [$env:COMPUTERNAME]> "}
En el equipo Servidor01, el símbolo del sistema es similar al
que figura a continuación:
PS [Servidor01] >
La siguiente función Prompt incluye la fecha y la hora actuales:
function prompt {"$(get-date)> "}
El símbolo del sistema es similar al que figura a continuación:
01/01/2008 17:49:47>
Asimismo, puede modificar la función Prompt predeterminada:
function prompt
{
$(if (test-path variable:/PSDebugContext) { '[DBG]: ' }
else { '' }) + "$(get-date)" `
+ $(if ($nestedpromptlevel -ge 1) { '>>' }) + '> '
}
Por ejemplo, la siguiente función Prompt modificada agrega
"[ADMIN]:" al símbolo del sistema integrado de Windows
PowerShell cuando se abre Windows PowerShell con la opción
"Ejecutar como administrador":
function prompt
{
$identity = [Security.Principal.WindowsIdentity]::GetCurrent()
$principal = [Security.Principal.WindowsPrincipal] $identity
$(if (test-path variable:/PSDebugContext) { '[DBG]: ' }
elseif($principal.IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
{ "[ADMIN]: " }
else { '' }) + 'PS ' + $(Get-Location) + $(if ($nestedpromptlevel -ge 1) { '>>' }) + '> '
}
Cuando se inicia Windows PowerShell con la opción "Ejecutar
como administrador", aparece un símbolo del sistema similar al
siguiente:
[ADMIN]: PS C:\ps-test>
La siguiente función Prompt muestra el identificador de
historial del siguiente comando. Para ver el historial de
comandos, use el cmdlet Get-History.
function prompt
{
# El signo arroba crea una matriz en caso de que exista
solo un elemento de historial.
$history = @(get-history)
if($history.Count -gt 0)
{
$lastItem = $history[$history.Count - 1]
$lastId = $lastItem.Id
}
$nextCommand = $lastId + 1
$currentDirectory = get-location
"PS: $nextCommand $currentDirectory >"
}
La siguiente función Prompt usa los cmdlets Write-Host y
Get-Random para crear un símbolo del sistema que cambia
aleatoriamente de color. Dado que Write-Host escribe en la
aplicación host actual pero no devuelve ningún objeto, esta
función incluye una instrucción Return. Sin ella, Windows
PowerShell usa el símbolo del sistema predeterminado, "PS>".
function prompt
{
$color = get-random -min 1 -max 16
write-host ("PS " + $(get-location) +">") -nonewline -foregroundcolor $color
return " "
}
Guardar el símbolo del sistema
Al igual que todas las funciones, la función Prompt se aplica
únicamente en la sesión actual. Si desea guardar la función
Prompt para las sesiones futuras, agréguela a sus perfiles de
Windows PowerShell. Para obtener más información sobre los
perfiles, vea about_Profiles.
VEA TAMBIÉN
Get-Location
Enter-PSSession
Get-History
Get-Random
Write-Host
about_Profiles
about_Functions
about_Scopes
about_Debuggers
about_Automatic_Variables