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




Table des matières