Partager via


about_Prompts

Description courte

Décrit la Prompt fonction et montre comment créer une fonction personnalisée Prompt .

Description longue

L’invite de commandes PowerShell indique que PowerShell est prêt à exécuter une commande :

PS C:\>

PowerShell a une fonction intégrée Prompt . Vous pouvez définir votre propre fonction personnalisée Prompt dans votre script de profil PowerShell.

À propos de la fonction Prompt

La Prompt fonction détermine l’apparence de l’invite PowerShell. PowerShell est fourni avec une fonction intégrée, mais vous pouvez la remplacer en Prompt définissant votre propre Prompt fonction.

La Prompt fonction a la syntaxe suivante :

function Prompt { <function-body> }

La Prompt fonction doit retourner un objet. En guise de meilleure pratique, retournez une chaîne ou un objet mis en forme sous forme de chaîne. La longueur maximale recommandée est de 80 caractères.

Par exemple, la fonction suivante Prompt retourne une chaîne « Hello, World » suivie d’un crochet à angle droit (>).

PS C:\> function prompt {"Hello, World > "}
Hello, World >

Obtention de la fonction Prompt

Pour obtenir la Prompt fonction, utilisez l’applet Get-Command de commande ou utilisez l’applet Get-Item de commande dans le lecteur de fonction.

Par exemple :

PS C:\> Get-Command Prompt

CommandType     Name      ModuleName
-----------     ----      ----------
Function        prompt

Pour obtenir le script qui définit la valeur de l’invite, utilisez la méthode dot pour obtenir la propriété ScriptBlock de la Prompt fonction.

Par exemple :

(Get-Command Prompt).ScriptBlock
"PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) "
# .Link
# https://go.microsoft.com/fwlink/?LinkID=225750
# .ExternalHelp System.Management.Automation.dll-help.xml

Comme toutes les fonctions, la Prompt fonction est stockée dans le Function: lecteur. Pour afficher le script qui crée la fonction actuelle Prompt , tapez :

(Get-Item function:prompt).ScriptBlock

Invite par défaut

L’invite par défaut s’affiche uniquement lorsque la Prompt fonction génère une erreur ou ne retourne pas d’objet.

L’invite PowerShell par défaut est la suivante :

PS>

Par exemple, la commande suivante définit la Prompt fonction $nullsur , qui n’est pas valide. Par conséquent, l’invite par défaut s’affiche.

PS C:\> function prompt {$null}
PS>

Étant donné que PowerShell est fourni avec une invite intégrée, vous ne voyez généralement pas l’invite par défaut.

Invite intégrée

PowerShell inclut une fonction intégrée Prompt .

function prompt {
  "PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) ";
  # .Link
  # https://go.microsoft.com/fwlink/?LinkID=225750
  # .ExternalHelp System.Management.Automation.dll-help.xml
}

La fonction utilise l’applet Test-Path de commande pour tester si la $PSDebugContext variable automatique a une valeur. Si $PSDebugContext elle a une valeur, vous exécutez en mode débogage et [DBG]: est ajoutée à l’invite, comme suit :

[DBG]: PS C:\ps-test>

Si $PSDebugContext elle n’est pas remplie, la fonction ajoute PS à l’invite. Et la fonction utilise l’applet Get-Location de commande pour obtenir l’emplacement du répertoire du système de fichiers actuel. Ensuite, il ajoute un crochet à angle droit (>).

Par exemple :

PS C:\ps-test>

Si vous êtes dans une invite imbriquée, la fonction ajoute deux crochets>> () à l’invite. Vous êtes dans une invite imbriquée si la valeur de la $NestedPromptLevel variable automatique est supérieure à 0.

Par exemple, lorsque vous déboguez dans une invite imbriquée, l’invite ressemble à l’invite suivante :

[DBG] PS C:\ps-test>>>

Modifications apportées à l’invite

L’applet Enter-PSSession de commande ajoute le nom de l’ordinateur distant à la fonction actuelle Prompt . Lorsque vous utilisez l’applet Enter-PSSession de commande 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 Hello, World> Enter-PSSession Server01
[Server01]: PS Hello, World>

D’autres applications hôtes PowerShell et d’autres interpréteurs de commandes peuvent avoir leurs propres invites de commande personnalisées.

Pour plus d’informations sur les variables automatiques et $NestedPromptLevel les $PSDebugContext variables, consultez about_Automatic_Variables.

Comment personnaliser l’invite

Pour personnaliser l’invite, écrivez une nouvelle Prompt fonction. La fonction n’est pas protégée. Vous pouvez donc la remplacer.

Pour écrire une Prompt fonction, tapez ce qui suit :

function prompt { }

Ensuite, entre les accolades, entrez les commandes ou la chaîne qui crée votre invite.

Par exemple, l’invite suivante inclut le nom de votre ordinateur :

function prompt {"PS [$env:COMPUTERNAME]> "}

Sur l’ordinateur Server01, l’invite ressemble à l’invite suivante :

PS [Server01] >

La fonction suivante Prompt inclut la date et l’heure actuelles :

function prompt {"$(Get-Date)> "}

L’invite ressemble à l’invite suivante :

03/15/2012 17:49:47>

Vous pouvez également modifier la fonction par défaut Prompt :

Par exemple, la fonction modifiée Prompt suivante ajoute [ADMIN]: à l’invite PowerShell intégrée lors de l’exécution dans une session avec élévation de privilèges.

function prompt {
  $identity = [Security.Principal.WindowsIdentity]::GetCurrent()
  $principal = [Security.Principal.WindowsPrincipal] $identity
  $adminRole = [Security.Principal.WindowsBuiltInRole]::Administrator

  $(if (Test-Path variable:/PSDebugContext) { '[DBG]: ' }
    elseif($principal.IsInRole($adminRole)) { "[ADMIN]: " }
    else { '' }
  ) + 'PS ' + $(Get-Location) +
    $(if ($NestedPromptLevel -ge 1) { '>>' }) + '> '
}

Lorsque vous démarrez PowerShell à l’aide de l’option Exécuter en tant qu’administrateur , une invite semblable à l’invite suivante s’affiche :

[ADMIN]: PS C:\ps-test>

La fonction suivante Prompt affiche l’ID d’historique de la commande suivante. Pour afficher l’historique des commandes, utilisez l’applet Get-History de commande.

function prompt {
   # The at sign creates an array in case only one history item exists.
   $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 et Get-Random les Write-Host applets de commande pour créer une invite qui change de couleur de manière aléatoire. Étant donné que Write-Host les écritures dans l’application hôte actuelle, mais ne retournent pas d’objet, cette fonction inclut une Return instruction. Sans cela, 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 la fonction d’invite

Comme n’importe quelle fonction, la Prompt fonction existe uniquement dans la session active. Pour enregistrer la fonction pour les sessions futures, ajoutez-la Prompt à vos profils PowerShell. Pour plus d'informations sur les profils, consultez about_Profiles.

Voir aussi