Partilhar via


Sobre solicitações

Breve descrição

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

Longa descrição

O pedido de comando PowerShell indica que o PowerShell está pronto para executar um comando:

PS C:\>

A solicitação PowerShell é determinada pela Prompt função incorporada. 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 Prompt função incorporada, mas pode sobrepor-se 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 'Solicitação'

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 Prompt função atual, escreva:

(Get-Item function:prompt).ScriptBlock

A solicitação predefinido

A indicação por defeito 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 Prompt a função para $null , o que é inválido. 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 Prompt função incorporada.

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 PS adiciona-se 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 >> () à indicação. (Está numa solicitação aninhada se o valor da variável automática for superior a $NestedPromptLevel 1.)

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 Prompt função atual. 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 substituir-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)> "}

O pedido assemelha-se ao seguinte pedido:

03/15/2012 17:49:47>

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

Por exemplo, a seguinte função modificada Prompt [ADMIN]: adiciona-se à solicitação powerShell incorporada quando o PowerShell é aberto utilizando a opção Run 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 inicia o PowerShell utilizando a opção Run como administrador, aparece uma indicação que se assemelha ao seguinte pedido:

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

A Prompt seguinte 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 Get-Random cmdlets e os cmdlets para criar um pedido que muda de cor aleatoriamente. Porque Write-Host escreve para a aplicação do anfitrião atual mas não devolve um objeto, esta função inclui uma Return declaração. Sem isso, o PowerShell utiliza a origem 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 sessões futuras, adicione-a aos perfis PowerShell. Para obter mais informações sobre perfis, consulte about_Profiles.

Ver também

Obter Localização

In-PSSession

Obter História

Get-Random

Write-Host

about_Profiles

about_Functions

about_Scopes

about_Debuggers

about_Automatic_Variables