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