Compartilhar via


Sobre prompts

Descrição curta

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

Descrição longa

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

PS C:\>

O prompt do PowerShell é determinado pela função interna Prompt . Você pode personalizar o prompt criando sua própria Prompt função e salvando-a em seu perfil do PowerShell.

Sobre a função Prompt

A função Prompt determina a aparência do prompt do PowerShell. O 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 { <function-body> }

A função Prompt deve retornar um objeto. Como prática recomendada, retorne uma cadeia de caracteres ou um objeto formatado como uma cadeia de caracteres. O comprimento máximo recomendado é de 80 caracteres.

Por exemplo, a função Prompt a seguir retorna uma cadeia de caracteres "Olá, Mundo" seguida por um colchete de ângulo reto (>).

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

Obtendo a função Prompt

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

Por exemplo:

PS C:\> Get-Command Prompt

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

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

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 função Prompt é armazenada na unidade Function:. Para exibir o script que cria a função Prompt atual, digite:

(Get-Item function:prompt).ScriptBlock

O prompt padrão

O prompt padrão aparece somente quando a Prompt função gera um erro ou não retorna um objeto.

O prompt padrão do PowerShell é:

PS>

Por exemplo, o comando a seguir define a função Prompt como $null, o que é inválido. Como resultado, o prompt padrão é exibido.

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

Como o PowerShell vem com um prompt interno, você geralmente não vê o prompt padrão.

Prompt interno

O PowerShell inclui uma função de Prompt interna.

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

A função usa o Test-Path cmdlet para determinar se a $PSDebugContext variável automática está preenchida. Se $PSDebugContext for preenchido, você estará no modo de depuração e [DBG]: será adicionado ao prompt, da seguinte maneira:

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

Se $PSDebugContext não for preenchido, a função será adicionada PS ao prompt. Além disso, a função usa o cmdlet Get-Location para obter o local atual do diretório do sistema de arquivos. 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 se o valor da $NestedPromptLevel variável automática for maior que 1.)

Por exemplo, quando você está depurando em um prompt aninhado, o prompt se assemelha ao seguinte prompt:

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

Alterações no prompt

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

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

Outros aplicativos host do PowerShell e shells alternativos 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.

Como personalizar o prompt

Para personalizar o prompt, escreva uma nova função Prompt. A função não está protegida, portanto, você pode substituí-la.

Para gravar 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 prompt.

Por exemplo, o prompt a seguir inclui o nome do computador:

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

No computador Server01, o prompt é semelhante ao seguinte prompt:

PS [Server01] >

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

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

O prompt se assemelha ao seguinte prompt:

03/15/2012 17:49:47>

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

Por exemplo, a seguinte função modificada Prompt é adicionada [ADMIN]: ao prompt interno do PowerShell quando o PowerShell é aberto usando 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 PowerShell usando a opção Executar como administrador , um prompt semelhante ao seguinte prompt é exibido:

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

A função Prompt a seguir exibe a ID do histórico do próximo comando. Para exibir o histórico de comandos, use o 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 >"
}

O prompt a seguir usa os cmdlets Write-Host e Get-Random para criar um prompt que altera a cor aleatoriamente. Como Write-Host grava no aplicativo host atual, mas não retorna um objeto, essa função inclui uma Return instrução. Sem ele, o 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 a função Prompt

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

Consulte também

Obter localização

Enter-PSSession

de Histórico de Obtenção

Obter aleatório

Write-Host

about_Profiles

about_Functions

about_Scopes

about_Debuggers

about_Automatic_Variables