TÓPICO
    about_Prompts

DESCRIÇÃO RESUMIDA
    Descreve a função Prompt e demonstra como criar uma função Prompt 
    personalizada.

  
DESCRIÇÃO LONGA
    O prompt de comando do Windows PowerShell indica que o Windows 
    PowerShell está pronto para executar um comando: 

	PS C:\>


    O prompt do Windows PowerShell é determinado pela função Prompt. 
    Você pode personalizar o prompt criando sua própria função 
    Prompt. Em seguida, você pode salvar essa função em seu perfil do 
    Windows PowerShell.

   
  A Função Prompt

      A função Prompt determina a aparência do prompt do Windows 
      PowerShell. O Windows PowerShell vem com uma função Prompt 
      interna, mas você pode substituí-la definindo sua própria 
      função Prompt.


      A função Prompt tem a seguinte sintaxe:

	  function prompt { <corpo_da_função> }


      A função Prompt deve retornar um objeto, normalmente uma cadeia 
      de caracteres. Recomendamos que ela retorne uma cadeia de 
      caracteres ou um objeto que seja formatado como uma cadeia de 
      caracteres. A cadeia de caracteres deve ter no máximo 80 caracteres.


      Por exemplo:

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

  
      Como todas as funções, a função Prompt é armazenada na unidade 
      Função:. Para exibir o código na função Prompt atual, digite:

	  (get-item function:prompt).definition


      Esse comando usa o cmdlet Get-Item para exibir o item Prompt na 
      unidade Função:. Em seguida, ele usa a notação de ponto para 
      exibir o valor da propriedade Definition da função Prompt. 

    
  O Prompt Padrão 

      O prompt padrão do Windows PowerShell é:

	  PS>


      Esse prompt só aparece quando a função Prompt gera um erro ou 
      quando ela não retorna uma cadeia de caracteres ou objeto.

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


      Como o Windows PowerShell vem com um prompt interno, você 
      normalmente não vê o prompt padrão até que escreva sua própria 
      função prompt.


  O Prompt Interno
    
 
      O Windows PowerShell inclui uma função Prompt interna que cria 
      os prompts familiares. A função prompt interna é:

          function prompt
          {
              $(if (test-path variable:/PSDebugContext) { '[DBG]: ' } 

              else { '' }) + 'PS ' + $(Get-Location) `

              + $(if ($nestedpromptlevel -ge 1) { '>>' }) + '> ' 
          } 


      A função usa o cmdlet Test-Path para determinar se a variável 
      automática $PSDebugContext está populada. Se $PSDebugContext 
      estiver populada, é sinal de que você está no modo de depuração 
      e" [DBG]" será adicionado ao prompt, como a seguir.

	  [DBG] PS C:\ps-test>
	
     
      Se a variável $PSDebugContext não estiver populada, a função 
      adicionará "PS" ao prompt. E a função usa o cmdlet Get-Location 
      para obter o local do diretório do sistema de arquivos atual. 
      Em seguida, ele adiciona um colchete de ângulo reto (>). 
      Por exemplo: 

	  PS C:\ps-test>	


      Se você estiver em um prompt aninhado, a função adicionará dois 
      colchetes angulares (>>) ao prompt. (Você está em um prompt 
      aninhado quando o valor da variável automática $NestedPromptLevel 
      é maior que 1.)


      Por exemplo, quando você estiver depurando em um prompt 
      aninhado, o prompt terá o seguinte formato:

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


      O cmdlet Enter-PSSession adiciona o nome do computador remoto à 
      função Prompt atual. Quando você usar o cmdlet Enter-PSSession 
      para iniciar uma sessão com um computador remoto, o prompt de 
      comando incluirá o nome do computador remoto. Por exemplo:

          PS Hello, World> Enter-PSSession Server01

          [Server01]: PS Hello, World>


      Outros aplicativos host e shells alternativos do Windows 
      PowerShell podem ter seus próprios prompts de comando 
      personalizados.


      Para obter mais informações sobre as variáveis automáticas 
      $PSDebugContext e $NestedPromptLevel, 
      consulte about_Automatic_Variables.
 	

  Personalizando o Prompt

      Para personalizar o prompt, escreva uma nova função Prompt. 
      A função não é protegida, assim você poderá substituí-la. 
 

      Para escrever uma função prompt, digite o seguinte:

	  function prompt { }


      Em seguida, entre as chaves, insira os comandos ou a cadeia de 
      caracteres que cria o seu prompt.


      Por exemplo, o seguinte prompt inclui o nome do seu computador:

	  function prompt {"PS [$env:COMPUTERNAME]> "}


      No computador Server01, o prompt tem o seguinte formato:

	  PS [Server01] >


      A seguinte função Prompt inclui a data e a hora atuais:

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


      O prompt tem o seguinte formato:

	  01/01/2008 17:49:47>


      Você também pode modificar a função Prompt padrão:


          function prompt
          {
              $(if (test-path variable:/PSDebugContext) { '[DBG]: ' } 

              else { '' }) + "$(get-date)" `

              + $(if ($nestedpromptlevel -ge 1) { '>>' }) + '> ' 
          } 

  
      Por exemplo, a seguinte função Prompt modificada adiciona 
      "[ADMIN]:" ao prompt interno do Windows PowerShell quando o 
      Windows PowerShell é aberto com a opção "Executar 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) 
              { '>>' }) + '> ' 
          }



      Quando você inicia o Windows PowerShell usando a opção 
      "Executar como administrador", aparece um prompt com o seguinte 
      formato:
                
	  [ADMIN]: PS C:\ps-test>


      A função Prompt a seguir exibe a ID de histórico do próximo 
      comando. Para exibir o histórico de comandos, use o cmdlet 
      Get-History.  

          function prompt
          {
             # O sinal de arroba cria uma matriz caso haja apenas um 
             único item de histórico.
             $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 >"
          }



      O prompt a seguir usa os cmdlets Write-Host e Get-Random para 
      criar um prompt que altera as cores aleatoriamente. Pelo fato 
      de o Write-Host gravar no aplicativo host atual mas não 
      retornar um objeto, essa função inclui uma instrução Return. 
      Sem isso, o Windows PowerShell usa o prompt padrão "PS>".

          function prompt
          {
              $color = get-random -min 1 -max 16
              write-host ("PS " + $(get-location) +">") -nonewline 
              -foregroundcolor $color
              return " "
          }


  Salvando o Prompt
	
      Como qualquer outra função, a função Prompt só se aplica à 
      sessão atual. Para salvar a função Prompt para sessões futuras, 
      adicione-a aos perfis do Windows PowerShell. Para obter mais 
      informações sobre perfis, consulte about_Profiles.


CONSULTE TAMBÉM
    Get-Location
    Enter-PSSession
    Get-History
    Get-Random
    Write-Host
    about_Profiles
    about_Functions
    about_Scopes
    about_Debuggers
    about_Automatic_Variables




Sumário