Compartir a través de


Acerca de las indicaciones

Descripción breve

Describe la Prompt función y muestra cómo crear una función personalizada Prompt .

Descripción larga

El símbolo del sistema de PowerShell indica que PowerShell está listo para ejecutar un comando:

PS C:\>

El símbolo del sistema de PowerShell viene determinado por la función integrada Prompt . Puede personalizar el mensaje creando su propia Prompt función y guardándola en su perfil de PowerShell.

Acerca de la función Prompt

La función Prompt determina la apariencia del símbolo del sistema de PowerShell. PowerShell incluye una función Prompt integrada, pero puede invalidarla definiendo su propia función de Prompt.

La función Prompt tiene la sintaxis siguiente:

function Prompt { <function-body> }

La función Prompt debe devolver un objeto . Como práctica recomendada, devuelva una cadena o un objeto con formato de cadena. La longitud máxima recomendada es de 80 caracteres.

Por ejemplo, la siguiente función Prompt devuelve una cadena "Hello, World" seguida de un corchete angular derecho (>).

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

Obtención de la función Prompt

Para obtener la función Prompt, use el cmdlet Get-Command o use el cmdlet Get-Item en la unidad de función.

Por ejemplo:

PS C:\> Get-Command Prompt

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

Para obtener el script que establece el valor del símbolo del sistema, use el método dot para obtener la propiedad ScriptBlock de la función Prompt.

Por ejemplo:

(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

Al igual que todas las funciones, la función Prompt se almacena en la unidad Function:. Para mostrar el script que crea la función Prompt actual, escriba:

(Get-Item function:prompt).ScriptBlock

El símbolo del sistema predeterminado

La solicitud predeterminada solo aparece cuando la Prompt función genera un error o no devuelve un objeto.

El símbolo del sistema de PowerShell predeterminado es:

PS>

Por ejemplo, el comando siguiente establece la función Prompt en $null, que no es válida. Como resultado, aparece el símbolo del sistema predeterminado.

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

Dado que PowerShell viene con un mensaje integrado, normalmente no se ve el mensaje predeterminado.

Mensaje integrado

PowerShell incluye una función Prompt integrada.

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

La función usa el Test-Path cmdlet para determinar si se rellena la $PSDebugContext variable automática. Si $PSDebugContext se rellena, está en modo de depuración y [DBG]: se agrega al símbolo del sistema, como se indica a continuación:

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

Si $PSDebugContext no se rellena, la función se agrega PS a la solicitud. Además, la función usa el cmdlet Get-Location para obtener la ubicación actual del directorio del sistema de archivos. A continuación, agrega un corchete angular derecho (>).

Por ejemplo:

PS C:\ps-test>

Si está en un símbolo del sistema anidado, la función agrega dos corchetes angulares (>>) al símbolo del sistema. (Se encuentra en una solicitud anidada si el valor de la $NestedPromptLevel variable automática es mayor que 1).

Por ejemplo, cuando se depura en un símbolo del sistema anidado, el mensaje es similar al siguiente:

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

Cambios en el símbolo del sistema

El cmdlet Enter-PSSession antepone el nombre del equipo remoto a la función Prompt actual. Cuando se usa el cmdlet Enter-PSSession para iniciar una sesión con un equipo remoto, el símbolo del sistema cambia para incluir el nombre del equipo remoto. Por ejemplo:

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

Otras aplicaciones host de PowerShell y shells alternativos pueden tener sus propios símbolos del sistema personalizados.

Para obtener más información sobre las variables automáticas de $PSDebugContext y $NestedPromptLevel, consulte about_Automatic_Variables.

Personalización del mensaje

Para personalizar el símbolo del sistema, escriba una nueva función Prompt. La función no está protegida, por lo que puede sobrescribirla.

Para escribir una función Prompt, escriba lo siguiente:

function prompt { }

A continuación, entre las llaves, escriba los comandos o la cadena que crea el símbolo del sistema.

Por ejemplo, el siguiente mensaje incluye el nombre del equipo:

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

En el equipo Server01, el símbolo del sistema es similar al siguiente:

PS [Server01] >

La siguiente función Prompt incluye la fecha y hora actuales:

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

El mensaje es similar al siguiente símbolo del sistema:

03/15/2012 17:49:47>

También puede cambiar la función de Prompt predeterminada:

Por ejemplo, la siguiente función modificada Prompt se agrega [ADMIN]: al símbolo del sistema de PowerShell integrado cuando PowerShell se abre mediante la opción Ejecutar 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) { '>>' }) + '> '
}

Al iniciar PowerShell mediante la opción Ejecutar como administrador , aparece un mensaje similar al siguiente mensaje:

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

La siguiente función Prompt muestra el identificador de historial del comando siguiente. Para ver el historial de comandos, use el 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 >"
}

En el símbolo del sistema siguiente se usan los cmdlets Write-Host y Get-Random para crear un mensaje que cambie el color de forma aleatoria. Dado que Write-Host escribe en la aplicación host actual pero no devuelve un objeto, esta función incluye una Return instrucción. Sin él, PowerShell usa el símbolo del sistema predeterminado, PS>.

function prompt {
    $color = Get-Random -Min 1 -Max 16
    Write-Host ("PS " + $(Get-Location) +">") -NoNewLine `
     -ForegroundColor $Color
    return " "
}

Guardar la función Prompt

Al igual que cualquier función, la función Prompt solo existe en la sesión actual. Para guardar la función Prompt para futuras sesiones, agréguela a los perfiles de PowerShell. Para obtener más información sobre los perfiles, vea about_Profiles.

Consulte también

Obtener-Ubicación

Enter-PSSession

get-history

get-random

Host de escritura

about_Profiles

about_Functions

about_Scopes

about_Debuggers

about_Automatic_Variables