Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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:\>
La función integrada determina el símbolo del sistema de PowerShell Prompt . Puede personalizar el símbolo del sistema mediante la creación de su propia Prompt función y guardarla en el perfil de PowerShell.
Acerca de la función prompt
La Prompt función determina la apariencia del símbolo del sistema de PowerShell.
PowerShell incluye una Prompt función integrada, pero puede invalidarla definiendo su propia Prompt función.
La Prompt función tiene la siguiente sintaxis:
function Prompt { <function-body> }
La Prompt función debe devolver un objeto. Como procedimiento recomendado, devuelva una cadena o un objeto con formato de cadena. La longitud máxima recomendada es 80 caracteres.
Por ejemplo, la Prompt función siguiente devuelve una cadena "Hello, World" seguida de un corchete angular de cierre ( > ).
PS C:\> function prompt {"Hello, World > "}
Hello, World >
Obtener la función prompt
Para obtener la Prompt función, use el Get-Command cmdlet o use el Get-Item cmdlet 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 de punto para obtener la propiedad ScriptBlock de la Prompt función.
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 Prompt función se almacena en la Function: unidad.
Para mostrar el script que crea la Prompt función actual, escriba:
(Get-Item function:prompt).ScriptBlock
El mensaje predeterminado
El mensaje predeterminado 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 Prompt función en $null , que no es válido. Como resultado, aparece el mensaje predeterminado.
PS C:\> function prompt {$null}
PS>
Dado que PowerShell incluye un mensaje integrado, normalmente no se muestra el mensaje predeterminado.
Mensaje integrado
PowerShell incluye una Prompt función 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 $PSDebugContext se rellena la variable automática. 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:
[DBG]: PS C:\ps-test>
Si $PSDebugContext no se rellena, la función agrega PS al símbolo del sistema.
Y la función usa el Get-Location cmdlet para obtener la ubicación del directorio del sistema de archivos actual. A continuación, agrega un corchete angular de cierre ( > ).
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 un símbolo del sistema anidado si el valor de la $NestedPromptLevel variable automática es mayor que 1).
Por ejemplo, al depurar en un símbolo del sistema anidado, el símbolo del sistema es similar al siguiente:
[DBG] PS C:\ps-test>>>
Cambios en el símbolo del sistema
El Enter-PSSession cmdlet antepone el nombre del equipo remoto a la función actual Prompt . 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. Por ejemplo:
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.
Para obtener más información sobre $PSDebugContext las $NestedPromptLevel variables automáticas y, vea about_Automatic_Variables.
Cómo personalizar el símbolo del sistema
Para personalizar el símbolo del sistema, escriba una nueva Prompt función. La función no está protegida, por lo que se puede sobrescribir.
Para escribir una Prompt función, escriba lo siguiente:
function prompt { }
Después, 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 se parece al siguiente:
PS [Server01] >
La Prompt función siguiente incluye la fecha y hora actuales:
function prompt {"$(Get-Date)> "}
El símbolo del sistema es similar al siguiente:
03/15/2012 17:49:47>
También puede cambiar la función predeterminada Prompt :
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 :
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:
[ADMIN]: PS C:\ps-test>
La siguiente Prompt función muestra el ID. de historial del comando siguiente. Para ver el historial de comandos, use el 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. Como 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 Prompt función solo existe en la sesión actual. Para guardar la Prompt función para futuras sesiones, agréguela a los perfiles de PowerShell. Para obtener más información sobre los perfiles, consulte about_Profiles.