À propos des invites
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:\>
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 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. Il est recommandé de renvoyer une chaîne ou un objet mis en forme en tant que 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 de Get-Command
commande ou utilisez l’applet de Get-Item
commande dans le lecteur function.
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 :
PS>
Par exemple, la commande suivante définit la fonction sur Prompt
$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 intégrée Prompt
.
function prompt {
$(if (Test-Path variable:/PSDebugContext) { '[DBG]: ' }
else { '' }) + 'PS ' + $(Get-Location) +
$(if ($NestedPromptLevel -ge 1) { '>>' }) + '> '
}
La fonction utilise l’applet de Test-Path
commande pour déterminer si la $PSDebugContext
variable automatique est remplie. Si $PSDebugContext
est renseigné, vous êtes en mode débogage et [DBG]:
est ajouté à l’invite, comme suit :
[DBG]: PS C:\ps-test>
Si $PSDebugContext
n’est pas renseigné, la fonction s’ajoute PS
à l’invite.
De plus, la fonction utilise l’applet de Get-Location
commande pour obtenir l’emplacement actuel du répertoire du système de fichiers. 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 à 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 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 commandes personnalisées.
Pour plus d’informations sur les $PSDebugContext
variables automatiques et $NestedPromptLevel
, consultez about_Automatic_Variables.
Comment personnaliser l’invite
Pour personnaliser l’invite, écrivez une nouvelle Prompt
fonction. La fonction n’étant pas protégée, vous pouvez 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 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 suivante Prompt
affiche l’ID d’historique de la commande suivante. Pour afficher l’historique des commandes, utilisez l’applet de Get-History
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 Write-Host
commande et Get-Random
pour créer une invite qui change de couleur de manière aléatoire. Étant donné que Write-Host
écrit dans l’application hôte actuelle mais ne retourne pas d’objet, cette fonction inclut une Return
instruction. Sans elle, 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 Prompt
Comme toute fonction, la fonction n’existe Prompt
que dans la session active. Pour enregistrer la Prompt
fonction pour les sessions futures, ajoutez-la à vos profils PowerShell. Pour plus d'informations sur les profils, consultez about_Profiles.