RUBRIQUE
about_Prompts
DESCRIPTION COURTE
Décrit la fonction Prompt et montre comment créer une fonction
Prompt personnalisée.
DESCRIPTION LONGUE
L'invite de commandes de Windows PowerShell indique que Windows
PowerShell est prêt à exécuter une commande :
PS C:\>
L'invite de Windows PowerShell est déterminée par la fonction
Prompt. Vous pouvez personnaliser l'invite en créant votre propre
fonction Prompt. Ensuite, vous pouvez enregistrer cette fonction
dans votre profil Windows PowerShell.
Fonction Prompt
La fonction Prompt détermine l'apparence de l'invite de Windows
PowerShell. Windows PowerShell est fourni avec une fonction
Prompt intégrée, mais vous pouvez la remplacer en définissant
votre propre fonction Prompt.
La fonction Prompt présente la syntaxe suivante :
function prompt { <corps-fonction> }
La fonction Prompt doit retourner un objet, généralement une
chaîne. Nous recommandons qu'elle retourne une chaîne ou un
objet mis en forme comme une chaîne. La chaîne doit rentrer
sur une ligne de 80 caractères.
Par exemple :
PS C:\> function prompt {"Bonjour le monde > "}
Bonjour le monde >
Comme toutes les fonctions, la fonction Prompt est stockée sur
le lecteur Function:. Pour afficher le code de la fonction
Prompt active, tapez :
(get-item function:prompt).definition
Cette commande utilise l'applet de commande Get-Item pour
afficher l'élément Prompt du lecteur Function:. Ensuite,
elle utilise la notation par points pour afficher la valeur
de la propriété Definition de la fonction Prompt.
Invite par défaut
L'invite Windows PowerShell par défaut est :
PS>
Cette invite apparaît uniquement lorsque la fonction Prompt
génère une erreur ou lorsqu'elle ne retourne pas de chaîne,
ni d'objet.
PS C:\> function prompt {$null}
PS>
Étant donné que Windows PowerShell est fourni avec une invite
intégrée, vous ne voyez généralement pas l'invite par défaut
tant que vous n'avez pas écrit votre propre fonction Prompt.
Invite intégrée
Windows PowerShell inclut une fonction Prompt intégrée qui crée
les invites courantes. La fonction Prompt intégrée est :
function prompt
{
$(if (test-path variable:/PSDebugContext) { '[DBG]: ' }
else { '' }) + 'PS ' + $(Get-Location) `
+ $(if ($nestedpromptlevel -ge 1) { '>>' }) + '> '
}
La fonction utilise l'applet de commande Test-Path pour
déterminer si la variable automatique $PSDebugContext est
remplie. Si $PSDebugContext est remplie, vous êtes en mode
Débogage, et la valeur " [DBG] " est ajoutée à l'invite,
comme suit :
[DBG] PS C:\ps-test>
Si $PSDebugContext n'est pas remplie, la fonction ajoute la
valeur " PS " à l'invite. Ensuite, elle utilise l'applet de
commande Get-Location pour obtenir l'emplacement du répertoire
de système de fichiers actuel, puis ajoute un signe supérieur (>).
Par exemple :
PS C:\ps-test>
Si vous êtes dans une invite imbriquée, la fonction ajoute
deux crochets pointus (>>) à l'invite. (Vous êtes dans une
invite imbriquée si la valeur de la variable automatique
$NestedPromptLevel est supérieure à 1.)
Par exemple, lorsque vous effectuez un débogage dans une invite
imbriquée, l'invite ressemble à la suivante :
[DBG] PS C:\ps-test>>>
L'applet de commande Enter-PSSession ajoute le nom de
l'ordinateur distant comme préfixe à la fonction Prompt active.
Lorsque vous utilisez l'applet de commande Enter-PSSession pour
démarrer une session avec un ordinateur distant, l'invite de
commandes change pour inclure le nom de l'ordinateur distant.
Par exemple :
PS Bonjour le monde> Enter-PSSession Server01
[Server01]: PS Bonjour le monde>
D'autres applications hôtes Windows PowerShell et d'autres
interpréteurs de commandes peuvent avoir leurs propres invites
de commandes personnalisées.
Pour plus d'informations sur les variables automatiques $PSDebugContext
et $NestedPromptLevel, consultez about_Automatic_Variables.
Personnalisation de l'invite
Pour personnaliser l'invite, écrivez une nouvelle fonction Prompt.
La fonction n'est pas protégée, donc vous pouvez la remplacer.
Pour écrire une fonction Prompt, tapez les éléments suivants :
function prompt { }
Ensuite, entre les accolades, entrez les commandes ou la chaîne
servant à créer votre invite.
Par exemple, l'invite suivante inclut votre nom d'ordinateur :
function prompt {"PS [$env:COMPUTERNAME]> "}
Sur l'ordinateur Server01, l'invite ressemble à la suivante :
PS [Server01] >
La fonction Prompt suivante inclut la date et l'heure actuelles :
function prompt {"$(get-date)> "}
L'invite ressemble à la suivante :
01/01/2008 17:49:47>
Vous pouvez également modifier la fonction Prompt par défaut :
function prompt
{
$(if (test-path variable:/PSDebugContext) { '[DBG]: ' }
else { '' }) + "$(get-date)" `
+ $(if ($nestedpromptlevel -ge 1) { '>>' }) + '> '
}
Par exemple, la fonction Prompt modifiée suivante ajoute
" [ADMIN]: " à l'invite Windows PowerShell intégrée lorsque
Windows PowerShell est ouvert à l'aide de l'option " Exécuter
en tant qu'administrateur " :
function prompt
{
$identity = [Security.Principal.WindowsIdentity]::GetCurrent()
$principal = [Security.Principal.WindowsPrincipal] $identity
$(if (test-path variable:/PSDebugContext) { '[DBG]: ' }
elseif($principal.IsInRole([Security.Principal.WindowsBuiltInRole] "Administrateur"))
{ "[ADMIN]: " }
else { '' }) + 'PS ' + $(Get-Location) + $(if ($nestedpromptlevel -ge 1) { '>>' }) + '> '
}
Lorsque vous démarrez Windows PowerShell à l'aide de l'option
" Exécuter en tant qu'administrateur ", une invite qui ressemble
à la suivante apparaît :
[ADMIN]: PS C:\ps-test>
La fonction Prompt suivante affiche l'ID d'historique de la
commande suivante. Pour afficher l'historique des commandes,
utilisez l'applet de commande Get-History.
function prompt
{
# L'arobase crée un tableau au cas où un seul élément historique existe.
$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 >"
}
L'invite suivante utilise les applets de commande Write-Host et
Get-Random pour créer une invite qui change de couleur de façon
aléatoire. Étant donné que Write-Host écrit vers l'application
hôte active, mais ne retourne pas d'objet, cette fonction
inclut une instruction Return. Sans cela, Windows PowerShell
utilise l'invite par défaut, " PS> ".
function prompt
{
$color = get-random -min 1 -max 16
write-host ("PS " + $(get-location) +">") -nonewline -foregroundcolor $color
return " "
}
Enregistrement de l'invite
Comme toute fonction, la fonction Prompt s'applique uniquement
à la session active. Pour enregistrer la fonction Prompt pour
de futures sessions, ajoutez-la à vos profils Windows PowerShell.
Pour plus d'informations sur les profils, consultez about_Profiles.
VOIR AUSSI
Get-Location
Enter-PSSession
Get-History
Get-Random
Write-Host
about_Profiles
about_Functions
about_Scopes
about_Debuggers
about_Automatic_Variables