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.