about_Prompts

Breve descrição

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 PowerShell tem uma função interna Prompt . Você pode definir sua própria função personalizada Prompt em seu script de perfil do PowerShell.

Sobre a função Prompt

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

A Prompt função tem a seguinte sintaxe:

function Prompt { <function-body> }

A Prompt função 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 a seguir Prompt retorna uma cadeia de caracteres "Olá, Mundo" seguida por um colchete angular reto (>).

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

Obtendo a função Prompt

Para obter a Prompt função, use o Get-Command cmdlet ou use o Get-Item cmdlet 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 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 , 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 Prompt função como $null, que é inválida. Como resultado, o prompt padrão aparece.

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

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

Prompt integrado

O PowerShell inclui uma função interna Prompt .

function prompt {
  "PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) ";
  # .Link
  # https://go.microsoft.com/fwlink/?LinkID=225750
  # .ExternalHelp System.Management.Automation.dll-help.xml
}

A função usa o Test-Path cmdlet para testar se a $PSDebugContext variável automática tem um valor. Se $PSDebugContext tiver um valor, você está executando no modo de depuração e [DBG]: é adicionado ao prompt, da seguinte maneira:

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

Se $PSDebugContext não estiver preenchida, a função será adicionada PS ao prompt. Além disso, a função usa o Get-Location cmdlet para obter o local atual do diretório do sistema de arquivos. Em seguida, adiciona um colchete angular reto (>).

Por exemplo:

PS C:\ps-test>

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

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

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

Alterações ao prompt

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

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

Outros aplicativos de 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$NestedPromptLevel , consulte about_Automatic_Variables.

Como personalizar o prompt

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

Para escrever uma Prompt função, 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 seguinte prompt inclui o nome do computador:

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

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

PS [Server01] >

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

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

O prompt é semelhante ao seguinte prompt:

03/15/2012 17:49:47>

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

Por exemplo, a função modificada Prompt a seguir adiciona [ADMIN]: ao prompt interno do PowerShell quando executado em uma sessão elevada.

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 você inicia o PowerShell usando a opção Executar como administrador , um prompt semelhante ao seguinte prompt aparece:

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

A função a seguir Prompt exibe a ID do histórico do próximo comando. Para exibir o histórico de comandos, 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 prompt a seguir usa os Write-Host cmdlets e Get-Random para criar um prompt que muda de 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 Prompt função existe apenas na sessão atual. Para salvar a Prompt função para sessões futuras, adicione-a aos seus perfis do PowerShell. Para obter mais informações sobre perfis, consulte about_Profiles.

Consulte também