about_Prompts

Se aplica a: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

TEMA

about_Prompts

DESCRIPCIÓN BREVE

Describe la función Prompt y muestra cómo crear una función Prompt personalizada.

DESCRIPCIÓN LARGA

El símbolo del sistema de Windows PowerShell indica que Windows PowerShell está listo para ejecutar un comando:

        PS C:\>

El símbolo del sistema de Windows PowerShell viene determinado por la función Prompt integrada. Puede personalizar el símbolo del sistema creando su propia función Prompt y guardándola en su perfil de Windows PowerShell.

SOBRE LA FUNCIÓN PROMPT

La función Prompt determina la apariencia del símbolo del sistema de Windows PowerShell. Windows PowerShell tiene una función Prompt integrada, pero se puede reemplazar si define su propia función Prompt.

La función Prompt tiene la siguiente sintaxis:

        function Prompt { <function-body> }

La función Prompt debe devolver un objeto. Como procedimiento recomendado, se devuelve una cadena o un objeto con el formato de una cadena. La longitud máxima recomendada es de 80 caracteres.

Por ejemplo, la siguiente función Prompt devuelve la cadena "Hello, World" seguida de un operador exponencial (>).

        PS C:\> function prompt {"Hello, World > "}
        Hello, World > 

INTRODUCCIÓN A LA FUNCIÓN PROMPT

Para obtener la función Prompt, use el cmdlet Get-Command o Get-Item en la unidad Function.

Las funciones son comandos. Por lo tanto, puede usar el cmdlet Get-Command para obtener funciones, incluida la función Prompt.

Por ejemplo:

        PS C:\>Get-Command Prompt

        CommandType     Name                                               ModuleName
        -----------     ----                                               ----------
        Function        prompt
        

Para obtener el script que establece el valor del símbolo del sistema, use el método de punto para obtener la propiedad ScriptBlock de la función Prompt.

Por ejemplo:

        PS C:\>(Get-Command Prompt).ScriptBlock

        "PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) "
        # .Link
        # https://go.microsoft.com/fwlink/?LinkID=225750
        # .ExternalHelp System.Management.Automation.dll-help.xml

Al igual que todas las funciones, la función Prompt se almacena en la unidad Function:. Para mostrar el script que crea la función Prompt actual, escriba:

        (Get-Item function:prompt).ScriptBlock

SÍMBOLO DEL SISTEMA PREDETERMINADO

El símbolo del sistema predeterminado solo aparece cuando la función Prompt genera un error o no devuelve ningún objeto.

El símbolo del sistema predeterminado de Windows PowerShell es:

        PS>

Por ejemplo, el siguiente comando establece la función Prompt en $null, lo cual no es válido. Como resultado, se muestra el símbolo del sistema predeterminado.

        PS C:\> function prompt {$null}
        PS>

Dado que Windows PowerShell tiene un símbolo del sistema integrado, normalmente no verá el símbolo del sistema predeterminado.

SÍMBOLO DEL SISTEMA INTEGRADO

Windows PowerShell incluye una función de símbolo del sistema integrado.

En Windows PowerShell 3.0, la función de símbolo del sistema integrado es:

        function prompt
        {
            "PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) "
        }

Este símbolo del sistema simplificado comienza por "PS" seguido de la ubicación actual y un ">" por cada nivel de símbolo del sistema anidado.

En Windows PowerShell 2.0, la función de símbolo del sistema integrado es:

        function prompt
        {
            $(if (test-path variable:/PSDebugContext) { '[DBG]: ' } 
            else { '' }) + 'PS ' + $(Get-Location) `
            + $(if ($nestedpromptlevel -ge 1) { '>>' }) + '> '
        } 

La función usa el cmdlet Test-Path para determinar si se ha rellenado la variable automática $PSDebugContext. Si se rellena $PSDebugContext, se encuentra en el modo de depuración y "[DBG]" se agrega al símbolo del sistema, como sigue:

        [DBG] PS C:\ps-test>

Si no se rellena $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 del directorio de sistema de archivos actual. A continuación, agrega un corchete angular de cierre (>).

    For example:        
        PS C:\ps-test>

Si se encuentra en un símbolo del sistema anidado, la función agrega dos corchetes angulares (>>) al símbolo del sistema. (Se encuentra en un símbolo del sistema anidado si el valor de la variable automática $NestedPromptLevel es mayor que 1).

Por ejemplo, durante la depuración en un símbolo del sistema anidado, el símbolo del sistema es similar al siguiente:

        [DBG] PS C:\ps-test>>>

CAMBIOS EN EL SÍMBOLO DEL SISTEMA

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 para incluir el nombre del equipo remoto. Por ejemplo:

          PS Hello, World> Enter-PSSession Server01
          [Server01]: PS Hello, World>

Otras aplicaciones host de Windows PowerShell y shells alternativos pueden tener sus propios símbolos personalizados.

Para más información sobre las variables automáticas $PSDebugContext y $NestedPromptLevel, consulte about_Automatic_Variables.

CÓMO PERSONALIZAR EL SÍMBOLO DEL SISTEMA

Para personalizar el símbolo del sistema, escriba una función Prompt nueva. La función no está protegida, por lo que se puede sobrescribirla.

Para escribir una función Prompt, escriba lo siguiente:

        function prompt { }

A continuación, entre las llaves, escriba los comandos o la cadena que crea 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 Server01, el símbolo del sistema es similar al siguiente:

        PS [Server01] >

La siguiente función Prompt incluye la fecha y hora actuales:

        function prompt {"$(get-date)> "}

El símbolo del sistema es similar al siguiente:

        03/15/2012 17:49:47>

También puede cambiar la función Prompt predeterminada:

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) { '>>' }) + '> '
        }

Al iniciar Windows PowerShell con la opción "Ejecutar como administrador", se muestra un símbolo del sistema similar al siguiente:

        [ADMIN]: PS C:\ps-test>

La siguiente función Prompt muestra el identificador del historial del siguiente comando. Para ver el historial del comando, use el cmdlet Get-History.

          function prompt
          {
             # The at sign creates an array in case only one history item exists.
             $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 >"
          }

El símbolo del sistema siguiente usa los cmdlets Write-Host y Get-Random para crear un símbolo del sistema que cambia de color aleatoriamente. 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 LA FUNCIÓN PROMPT

Al igual que cualquier función, la función Prompt solo existe en la sesión actual. Para guardar la función Prompt para sesiones futuras, agréguela a sus perfiles de Windows PowerShell. Para obtener más información acerca de los perfiles, consulte 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