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