Acerca de los mensajesAbout Prompts

Descripción breveShort description

Describe la Prompt función y muestra cómo crear una función personalizada Prompt .Describes the Prompt function and demonstrates how to create a custom Prompt function.

Descripción largaLong description

El símbolo del sistema de PowerShell indica que PowerShell está listo para ejecutar un comando:The PowerShell command prompt indicates that PowerShell is ready to run a command:

PS C:\>

La función integrada determina el símbolo del sistema de PowerShell Prompt .The PowerShell prompt is determined by the built-in Prompt function. Puede personalizar el símbolo del sistema mediante la creación de su propia Prompt función y guardarla en el perfil de PowerShell.You can customize the prompt by creating your own Prompt function and saving it in your PowerShell profile.

Acerca de la función promptAbout the Prompt function

La Prompt función determina la apariencia del símbolo del sistema de PowerShell.The Prompt function determines the appearance of the PowerShell prompt. PowerShell incluye una Prompt función integrada, pero puede invalidarla definiendo su propia Prompt función.PowerShell comes with a built-in Prompt function, but you can override it by defining your own Prompt function.

La Prompt función tiene la siguiente sintaxis:The Prompt function has the following syntax:

function Prompt { <function-body> }

La Prompt función debe devolver un objeto.The Prompt function must return an object. Como procedimiento recomendado, devuelva una cadena o un objeto con formato de cadena.As a best practice, return a string or an object that is formatted as a string. La longitud máxima recomendada es 80 caracteres.The maximum recommended length is 80 characters.

Por ejemplo, la Prompt función siguiente devuelve una cadena "Hello, World" seguida de un corchete angular de cierre ( > ).For example, the following Prompt function returns a "Hello, World" string followed by a right angle bracket (>).

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

Obtener la función promptGetting the Prompt function

Para obtener la Prompt función, use el Get-Command cmdlet o use el Get-Item cmdlet en la unidad de función.To get the Prompt function, use the Get-Command cmdlet or use the Get-Item cmdlet in the Function drive.

Por ejemplo:For example:

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 de punto para obtener la propiedad ScriptBlock de la Prompt función.To get the script that sets the value of the prompt, use the dot method to get the ScriptBlock property of the Prompt function.

Por ejemplo:For example:

(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 Prompt función se almacena en la Function: unidad.Like all functions, the Prompt function is stored in the Function: drive. Para mostrar el script que crea la Prompt función actual, escriba:To display the script that creates the current Prompt function, type:

(Get-Item function:prompt).ScriptBlock

El mensaje predeterminadoThe default prompt

El mensaje predeterminado solo aparece cuando la Prompt función genera un error o no devuelve un objeto.The default prompt appears only when the Prompt function generates an error or does not return an object.

El símbolo del sistema de PowerShell predeterminado es:The default PowerShell prompt is:

PS>

Por ejemplo, el comando siguiente establece la Prompt función en $null , que no es válido.For example, the following command sets the Prompt function to $null, which is invalid. Como resultado, aparece el mensaje predeterminado.As a result, the default prompt appears.

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

Dado que PowerShell incluye un mensaje integrado, normalmente no se muestra el mensaje predeterminado.Because PowerShell comes with a built-in prompt, you usually do not see the default prompt.

Mensaje integradoBuilt-in prompt

PowerShell incluye una Prompt función integrada.PowerShell includes a built-in Prompt function.

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 $PSDebugContext se rellena la variable automática.The function uses the Test-Path cmdlet to determine whether the $PSDebugContext automatic variable is populated. Si $PSDebugContext está rellenado, se encuentra en modo de depuración y [DBG]: se agrega al símbolo del sistema, como se indica a continuación:If $PSDebugContext is populated, you are in debugging mode, and [DBG]: is added to the prompt, as follows:

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

Si $PSDebugContext no se rellena, la función agrega PS al símbolo del sistema.If $PSDebugContext is not populated, the function adds PS to the prompt. Y la función usa el Get-Location cmdlet para obtener la ubicación del directorio del sistema de archivos actual.And, the function uses the Get-Location cmdlet to get the current file system directory location. A continuación, agrega un corchete angular de cierre ( > ).Then, it adds a right angle bracket (>).

Por ejemplo:For example:

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.If you are in a nested prompt, the function adds two angle brackets (>>) to the prompt. (Se encuentra en un símbolo del sistema anidado si el valor de la $NestedPromptLevel variable automática es mayor que 1).(You are in a nested prompt if the value of the $NestedPromptLevel automatic variable is greater than 1.)

Por ejemplo, al depurar en un símbolo del sistema anidado, el símbolo del sistema es similar al siguiente:For example, when you are debugging in a nested prompt, the prompt resembles the following prompt:

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

Cambios en el símbolo del sistemaChanges to the prompt

El Enter-PSSession cmdlet antepone el nombre del equipo remoto a la función actual Prompt .The Enter-PSSession cmdlet prepends the name of the remote computer to the current Prompt function. Cuando se usa el Enter-PSSession cmdlet para iniciar una sesión con un equipo remoto, el símbolo del sistema cambia para incluir el nombre del equipo remoto.When you use the Enter-PSSession cmdlet to start a session with a remote computer, the command prompt changes to include the name of the remote computer. Por ejemplo:For example:

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

Otras aplicaciones de host de PowerShell y shells alternativos podrían tener sus propios símbolos del sistema personalizados.Other PowerShell host applications and alternate shells might have their own custom command prompts.

Para obtener más información sobre $PSDebugContext las $NestedPromptLevel variables automáticas y, vea about_Automatic_Variables.For more information about the $PSDebugContext and $NestedPromptLevel automatic variables, see about_Automatic_Variables.

Cómo personalizar el símbolo del sistemaHow to customize the prompt

Para personalizar el símbolo del sistema, escriba una nueva Prompt función.To customize the prompt, write a new Prompt function. La función no está protegida, por lo que se puede sobrescribir.The function is not protected, so you can overwrite it.

Para escribir una Prompt función, escriba lo siguiente:To write a Prompt function, type the following:

function prompt { }

Después, entre las llaves, escriba los comandos o la cadena que crea el símbolo del sistema.Then, between the braces, enter the commands or the string that creates your prompt.

Por ejemplo, el siguiente mensaje incluye el nombre del equipo:For example, the following prompt includes your computer name:

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

En el equipo Server01, el símbolo del sistema se parece al siguiente:On the Server01 computer, the prompt resembles the following prompt:

PS [Server01] >

La Prompt función siguiente incluye la fecha y hora actuales:The following Prompt function includes the current date and time:

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

El símbolo del sistema es similar al siguiente:The prompt resembles the following prompt:

03/15/2012 17:49:47>

También puede cambiar la función predeterminada Prompt :You can also change the default Prompt function:

Por ejemplo, la siguiente función modificada Prompt agrega [ADMIN]: al símbolo del sistema integrado de PowerShell cuando se abre PowerShell mediante la opción Ejecutar como administrador :For example, the following modified Prompt function adds [ADMIN]: to the built-in PowerShell prompt when PowerShell is opened by using the Run as administrator option:

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) { '>>' }) + '> '
}

Al iniciar PowerShell mediante la opción Ejecutar como administrador , aparece un mensaje similar al siguiente:When you start PowerShell by using the Run as administrator option, a prompt that resembles the following prompt appears:

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

La siguiente Prompt función muestra el ID. de historial del comando siguiente.The following Prompt function displays the history ID of the next command. Para ver el historial de comandos, use el Get-History cmdlet.To view the command history, use the 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 >"
}

En el siguiente símbolo del sistema se usan los Write-Host Get-Random cmdlets y para crear un mensaje que cambia de color aleatoriamente.The following prompt uses the Write-Host and Get-Random cmdlets to create a prompt that changes color randomly. Como Write-Host escribe en la aplicación host actual pero no devuelve un objeto, esta función incluye una Return instrucción.Because Write-Host writes to the current host application but does not return an object, this function includes a Return statement. Sin él, PowerShell usa el símbolo del sistema predeterminado, PS> .Without it, PowerShell uses the default prompt, PS>.

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

Guardar la función promptSaving the Prompt function

Al igual que cualquier función, la Prompt función solo existe en la sesión actual.Like any function, the Prompt function exists only in the current session. Para guardar la Prompt función para futuras sesiones, agréguela a los perfiles de PowerShell.To save the Prompt function for future sessions, add it to your PowerShell profiles. Para obtener más información sobre los perfiles, consulte about_Profiles.For more information about profiles, see about_Profiles.

Consulte tambiénSee also

Get-LocationGet-Location

Enter-PSSessionEnter-PSSession

Get-HistoryGet-History

Get-RandomGet-Random

Write-HostWrite-Host

about_Profilesabout_Profiles

about_Functionsabout_Functions

about_Scopesabout_Scopes

about_Debuggersabout_Debuggers

about_Automatic_Variablesabout_Automatic_Variables