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