2011-04-20 23 views

Respuesta

75

Sólo hay que poner una función prompt en su perfil de Powershell (notepad $PROFILE), por ejemplo:

function prompt {"PS: $(get-date)>"} 

o coloreadas:

function prompt 
{ 
    Write-Host ("PS " + $(get-date) +">") -nonewline -foregroundcolor White 
    return " " 
} 
+0

'libreta $ PROFILE' no funciona en Windows 7 desde un administrador PowerShell pedirá – jcollum

+16

Ahh, veo que usted necesita para crear el perfil primero:' ítems nuevo archivo -itemtype -path $ perfil force ' – jcollum

+2

Nota: Puede pegar la función de solicitud en powershell para cambiar la ruta de solicitud en lugar de guardar la función en su perfil, pero deberá hacerlo cada vez que inicie powershell. –

14

En relación con el comentario anterior, lo siguiente es necesario para Windows Server 2012 y Win7:

new-item -itemtype file -path $profile -force 
notepad $PROFILE 

Sugeriría lo siguiente como un aviso si se ejecuta con varios nombres de usuario (p. + ti mismo un inicio de sesión de producción):

function Global:prompt {"PS [$Env:username]$PWD`n>"} 

(crédito a David I. McIntosh para éste)

+0

También debe ejecutar Powershell como administrador y hacer' Set-ExecutionPolicy RemoteSigned'. – qed

3

Si desea hacerlo usted mismo, entonces Ocaso Protal's answer es el camino a seguir. Pero si eres flojo como yo y solo quiero algo para ti, recomiendo Luke Sampson's Pshazz package.

Solo para mostrarte lo flojo que puedes estar, te daré un tutorial rápido.

  • Instalar Pshazz con Scoop (scoop install pshazz)
  • Usar un buen tema predefinido (pshazz use msys)
  • bebida (raíz) de cerveza

Pshazz también le permite crear sus propios temas, que es tan simple como configurar un archivo JSON. Check out mine para ver qué fácil es!

0

En el aviso, me gusta una marca de tiempo actual y letras de unidad resueltas para unidades de red. Para hacerlo más legible, lo puse en dos líneas, y jugué un poco con colores.

Con CMD, que terminó con

PROMPT=$E[33m$D$T$H$H$H$S$E[37m$M$_$E[1m$P$G 

Para PS, me dieron el mismo resultado con:

function prompt { 
    $dateTime = get-date -Format "dd.MM.yyyy HH:mm:ss" 
    $currentDirectory = $(Get-Location) 
    $UncRoot = $currentDirectory.Drive.DisplayRoot 

    write-host "$dateTime" -NoNewline -ForegroundColor White 
    write-host " $UncRoot" -ForegroundColor Gray 
    # Convert-Path needed for pure UNC-locations 
    write-host "PS $(Convert-Path $currentDirectory)>" -NoNewline -ForegroundColor Yellow 
    return " " 
} 

que es un poco más fácil de leer :-)

Por cierto:

  • Prefiero powershell_ise.exe $PROFILE en lugar de bloc de notas (tonto)
  • Si desea depurar su solicitud() con puntos de interrupción, debe cambiar el nombre de la función de solicitud a cualquier otra cosa (o inténtelo en otro archivo).De lo contrario, podría terminar en un bucle: cuando detenga la depuración, se llama de nuevo a prompt() y se detiene en el punto de interrupción, nuevamente. Bastante irritante, al principio ...
0

Esta versión de Warren Stevens' answer evita el ruido "Microsoft.PowerShell.Core \ FileSystem" en la ruta si Set-Location a recursos compartidos de red.

function prompt {"PS [$Env:[email protected]$Env:computername]$($PWD.ProviderPath)`n> "} 
Cuestiones relacionadas