Partager via


À propos des invites

Brève description

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:\>

L’invite PowerShell est déterminée par la fonction intégrée Prompt . Vous pouvez personnaliser l’invite en créant votre propre Prompt fonction et en l’enregistrant dans votre profil PowerShell.

À propos de la fonction Prompt

La fonction Prompt détermine l’apparence de l’invite PowerShell. 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 a la syntaxe suivante :

function Prompt { <function-body> }

La fonction Prompt doit retourner un objet. Il est recommandé de retourner une chaîne ou un objet au format chaîne. La longueur maximale recommandée est de 80 caractères.

Par exemple, la fonction Prompt suivante 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 fonction Prompt, utilisez l’applet de commande Get-Command ou utilisez l’applet de commande Get-Item 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 fonction Prompt.

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 fonction Prompt est stockée dans le lecteur Function:. Pour afficher le script qui crée la fonction Prompt actuelle, tapez :

(Get-Item function:prompt).ScriptBlock

Invite par défaut

L’invite par défaut n’apparaît que lorsque la Prompt fonction génère une erreur ou ne renvoie pas d’objet.

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

PS>

Par exemple, la commande suivante définit la fonction Prompt sur $null, ce 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 Prompt intégrée.

function prompt {
    $(if (Test-Path variable:/PSDebugContext) { '[DBG]: ' }
      else { '' }) + 'PS ' + $(Get-Location) +
        $(if ($NestedPromptLevel -ge 1) { '>>' }) + '> '
}

La fonction utilise l’applet Test-Path de commande pour déterminer si la $PSDebugContext variable automatique est renseignée. Si $PSDebugContext est renseigné, vous êtes en mode de débogage et [DBG]: est ajouté à l’invite, comme suit :

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

S’il $PSDebugContext n’est pas renseigné, la fonction ajoute PS à l’invite. Et la fonction utilise l’applet de commande Get-Location 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 angle (>>) à l’invite. (Vous êtes dans une invite imbriquée si la valeur de la $NestedPromptLevel variable automatique est supérieure à 1.)

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 de commande Enter-PSSession ajoute le nom de l’ordinateur distant à la fonction Prompt actuelle. 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 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 $PSDebugContext et $NestedPromptLevel, consultez about_Automatic_Variables.

Comment personnaliser l’invite

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

Pour écrire une fonction Prompt, 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 Prompt suivante 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 de Prompt par défaut :

Par exemple, la fonction modifiée Prompt suivante s’ajoute [ADMIN]: à l’invite PowerShell intégrée lorsque 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]
      "Administrator")) { "[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 qui ressemble à l’invite suivante s’affiche :

[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 {
   # 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 Write-Host et Get-Random pour créer une invite qui change de couleur de manière aléatoire. Étant donné qu’elle Write-Host écrit dans l’application hôte actuelle mais ne renvoie 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 fonction Prompt existe uniquement dans la session active. Pour enregistrer la fonction Prompt pour les sessions futures, ajoutez-la à vos profils PowerShell. Pour plus d’informations sur les profils, consultez about_Profiles.

Voir aussi

Localisation d’obtention

Enter-PSSession

Get-History

obtenir un aléatoire

Hôte d’écriture

about_Profiles

about_Functions

about_Scopes

about_Debuggers

about_Automatic_Variables