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