about_Prompts

Breve descrição

Descreve a Prompt função e demonstra como criar uma função personalizada Prompt .

Longa descrição

O pedido de comando PowerShell indica que a PowerShell está pronta para executar um comando:

PS C:\>

A solicitação PowerShell é determinada pela função incorporada Prompt . Pode personalizar o pedido criando a sua própria Prompt função e guardando-a no seu perfil PowerShell.

Sobre a função Prompt

A Prompt função determina o aparecimento da solicitação PowerShell. O PowerShell vem com uma função incorporada, mas pode sobrepor-se Prompt definindo a sua própria Prompt função.

A Prompt função tem a seguinte sintaxe:

function Prompt { <function-body> }

A Prompt função deve devolver um objeto. Como uma boa prática, devolva uma corda ou um objeto que é formatado como uma corda. O comprimento máximo recomendado é de 80 caracteres.

Por exemplo, a seguinte Prompt função devolve uma corda "Olá, Mundo" seguida de um suporte de ângulo reto (>).

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

Obtenção da função Prompt

Para obter a Prompt função, utilize o Get-Command cmdlet ou utilize o Get-Item cmdlet na unidade Função.

Por exemplo:

PS C:\> Get-Command Prompt

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

Para obter o script que define o valor do pedido, use o método do ponto para obter a propriedade ScriptBlock da Prompt função.

Por exemplo:

(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

Como todas as funções, a Prompt função é armazenada na Function: unidade. Para exibir o script que cria a função atual Prompt , escreva:

(Get-Item function:prompt).ScriptBlock

A solicitação padrão

A indicação de predefinição só aparece quando a Prompt função gera um erro ou não devolve um objeto.

A solicitação padrão do PowerShell é:

PS>

Por exemplo, o seguinte comando define a Prompt função para $null, que é inválida. Como resultado, aparece a solicitação por defeito.

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

Como o PowerShell vem com uma solicitação incorporada, normalmente não se vê a padrão.

Solicitação incorporada

PowerShell inclui uma função incorporada Prompt .

function prompt {
    $(if (Test-Path variable:/PSDebugContext) { '[DBG]: ' }
      else { '' }) + 'PS ' + $(Get-Location) +
        $(if ($NestedPromptLevel -ge 1) { '>>' }) + '> '
}

A função utiliza o Test-Path cmdlet para determinar se a $PSDebugContext variável automática está povoada. Se $PSDebugContext estiver povoado, está em modo de depurar e [DBG]: é adicionado ao pedido, da seguinte forma:

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

Se $PSDebugContext não estiver povoada, a função adiciona-se PS ao pedido. E, a função usa o Get-Location cmdlet para obter a localização do diretório do sistema de ficheiros atual. Em seguida, adiciona um suporte de ângulo reto (>).

Por exemplo:

PS C:\ps-test>

Se estiver num ponto aninhado, a função adiciona dois suportes angulares (>>) à solicitação. Você está em um pedido aninhado se o valor da $NestedPromptLevel variável automática for maior que 0.

Por exemplo, quando estiver a depurar num pedido aninhado, o pedido assemelha-se ao seguinte aviso:

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

Alterações na solicitação

O Enter-PSSession cmdlet prepara o nome do computador remoto para a função atual Prompt . Quando utiliza o Enter-PSSession cmdlet para iniciar uma sessão com um computador remoto, o comando solicita alterações para incluir o nome do computador remoto. Por exemplo:

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

Outras aplicações de anfitriões PowerShell e conchas alternativas podem ter as suas próprias indicações de comando personalizadas.

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

Como personalizar o pedido

Para personalizar o pedido, escreva uma nova Prompt função. A função não está protegida, por isso pode sobrepor-se.

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

function prompt { }

Em seguida, entre os aparelhos, introduza os comandos ou a corda que cria o seu pedido.

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

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

No computador Server01, o pedido assemelha-se ao seguinte pedido:

PS [Server01] >

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

function prompt {"$(Get-Date)> "}

A solicitação assemelha-se ao seguinte pedido:

03/15/2012 17:49:47>

Também pode alterar a função predefinida Prompt :

Por exemplo, a seguinte função modificada Prompt adiciona-se [ADMIN]: à solicitação powerShell incorporada quando o PowerShell é aberto utilizando a opção Executar como administrador :

function prompt {
  $identity = [Security.Principal.WindowsIdentity]::GetCurrent()
  $principal = [Security.Principal.WindowsPrincipal] $identity
  $adminRole = [Security.Principal.WindowsBuiltInRole]::Administrator

  $(if (Test-Path variable:/PSDebugContext) { '[DBG]: ' }
    elseif($principal.IsInRole($adminRole)) { "[ADMIN]: " }
    else { '' }
  ) + 'PS ' + $(Get-Location) +
    $(if ($NestedPromptLevel -ge 1) { '>>' }) + '> '
}

Quando inicia o PowerShell utilizando a opção Run como administrador , aparece uma indicação que se assemelha à seguinte mente:

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

A seguinte Prompt função mostra o ID histórico do comando seguinte. Para ver o histórico de comando, use o Get-History cmdlet.

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 >"
}

O seguinte pedido utiliza os Write-Host cmdlets e Get-Random os cmdlets para criar um pedido que muda de cor aleatoriamente. Porque Write-Host escreve para a aplicação atual do anfitrião mas não devolve um objeto, esta função inclui uma Return declaração. Sem isso, a PowerShell utiliza a padrão, PS>.

function prompt {
    $color = Get-Random -Min 1 -Max 16
    Write-Host ("PS " + $(Get-Location) +">") -NoNewLine `
     -ForegroundColor $Color
    return " "
}

Guardar a função 'Solicitação'

Como qualquer função, a Prompt função existe apenas na sessão atual. Para guardar a Prompt função para futuras sessões, adicione-a aos perfis PowerShell. Para mais informações sobre perfis, consulte about_Profiles.

Ver também