web-dev-qa-db-fra.com

Windows PowerShell: modification de l'invite de commande

À l'aide de Windows PowerShell, comment puis-je modifier l'invite de commande?

Par exemple, l'invite par défaut indique

PS C:\Documents and Settings\govendes\My Documents>

Je veux personnaliser cette chaîne.

74
sashang

Mettez simplement la fonction Prompt dans votre profil PowerShell (notepad $PROFILE), par exemple.:

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

ou coloré:

function Prompt
{
    Write-Host ("PS " + $(get-date) +">") -nonewline -foregroundcolor White
    return " "
}
93
Ocaso Protal

Lié à un commentaire à réponse d'Ocaso Protal , les éléments suivants sont nécessaires pour Windows Server 2012 ainsi que Windows 7 (dans une fenêtre PowerShell):

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

Je suggérerais ce qui suit comme invite si vous exécutez avec plusieurs noms d'utilisateur (par exemple, vous-même + une connexion de production):

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

(Nous remercions David I. McIntosh pour celui-ci.)

19
Warren Stevens

Si vous voulez le faire vous-même, alors la réponse d'Ocaso Protal est la voie à suivre. Mais si vous êtes paresseux comme moi et que vous voulez juste que quelque chose le fasse pour vous, alors je recommande fortement Paquet Pshazz de Luke Sampson .

Juste pour vous montrer à quel point vous pouvez être paresseux, je vous fournirai un rapide tutoriel.

  • Installez Pshazz avec Scoop (scoop install pshazz)
  • Utilisez un joli thème prédéfini (pshazz use msys)
  • Boire de la bière (racine)

Pshazz vous permet également de créer vos propres thèmes, ce qui est aussi simple que de configurer un fichier JSON. Découvrez le mien pour voir comme c'est facile!

7
Fomentia

À l'invite, j'aime un horodatage actuel et des lettres de lecteur résolues pour les lecteurs réseau. Pour le rendre plus lisible, je l'ai mis en deux lignes, et joué un peu avec les couleurs.

Avec CMD, je me suis retrouvé avec

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

Pour PowerShell, j'ai obtenu le même résultat avec:

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 " "
}

Ce qui est un peu plus lisible :-)

BTW:

  • Je préfère powershell_ise.exe $PROFILE au lieu de (idiot) Bloc-notes .
  • Si vous aimez déboguer votre Prompt () avec des points d'arrêt, vous devez renommer la fonction Prompt en autre chose (ou l'essayer dans un autre fichier). Sinon, vous pourriez vous retrouver dans une boucle: lorsque vous arrêtez le débogage, Prompt () est à nouveau appelé et vous vous arrêtez à nouveau au point d'arrêt. Assez agaçant, au début ...
5
Trivia Coder

Cette version de réponse de Warren Stevens évite le "Microsoft.PowerShell.Core\FileSystem" bruyant dans le chemin si vous Set-Location aux partages réseau.

function Prompt {"PS [$Env:username@$Env:computername]$($PWD.ProviderPath)`n> "} 
4
nudl

Pour afficher simplement la lettre de lecteur que j'utilise:

            function Prompt {(get-location).drive.name+"\...>"}

Ensuite, pour revenir au chemin que j'utilise:

            function Prompt {"$pwd>"}
3
Chris Horan