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




Tabla de contenido