Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Un profil PowerShell est un script qui s’exécute au démarrage de PowerShell. Vous pouvez utiliser le profil pour personnaliser l’environnement. Vous pouvez:
- Ajouter des alias, des fonctions et des variables
- Charger des modules
- Créer des lecteurs PowerShell
- Exécuter des commandes arbitraires
- Modifier les paramètres de préférence
Le fait de placer ces paramètres dans votre profil garantit qu’ils sont disponibles chaque fois que vous démarrez PowerShell sur votre système.
Remarque
Pour exécuter des scripts dans Windows, la stratégie d’exécution PowerShell doit être définie RemoteSigned
au minimum. Les stratégies d’exécution ne s’appliquent pas à macOS et Linux. Pour plus d’informations, consultez about_Execution_Policy.
Variable $PROFILE
La variable automatique $PROFILE
stocke les chemins d’accès aux profils PowerShell disponibles dans la session active.
Il existe quatre profils possibles pour prendre en charge différentes étendues utilisateur et différents hôtes PowerShell. Les chemins complets de chaque script de profil sont stockés dans les propriétés membres suivantes de $PROFILE
.
- AllUsersAllHosts
- AllUsersCurrentHost
- CurrentUserAllHosts
- CurrentUserCurrentHost
Vous pouvez créer des scripts de profil qui s’exécutent pour tous les utilisateurs ou un seul utilisateur, CurrentUser. Les profils CurrentUser sont stockés sous le chemin du répertoire d’accueil de l’utilisateur. L’emplacement varie en fonction du système d’exploitation et de la version de PowerShell que vous utilisez.
Par défaut, le référencement de la $PROFILE
variable retourne le chemin d’accès au profil « Utilisateur actuel, Hôte actuel ». Le chemin d’accès aux autres profils est accessible via les propriétés de la $PROFILE
variable.
La commande suivante montre les emplacements de profil par défaut sur Windows.
PS> $PROFILE | Select-Object *
AllUsersAllHosts : C:\Program Files\PowerShell\7\profile.ps1
AllUsersCurrentHost : C:\Program Files\PowerShell\7\Microsoft.PowerShell_profile.ps1
CurrentUserAllHosts : C:\Users\username\Documents\PowerShell\profile.ps1
CurrentUserCurrentHost : C:\Users\username\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
Length : 69
La commande suivante montre les emplacements de profil par défaut sur Ubuntu Linux.
$PROFILE | Select-Object *
AllUsersAllHosts : /opt/microsoft/powershell/7/profile.ps1
AllUsersCurrentHost : /opt/microsoft/powershell/7/Microsoft.PowerShell_profile.ps1
CurrentUserAllHosts : /home/username/.config/powershell/profile.ps1
CurrentUserCurrentHost : /home/username/.config/powershell/Microsoft.PowerShell_profile.ps1
Length : 67
Il existe également des profils qui s’exécutent pour tous les hôtes PowerShell ou des hôtes spécifiques. Le script de profil pour chaque hôte PowerShell a un nom unique pour cet hôte. Par exemple, le nom de fichier de l’hôte de console standard sur Windows ou l’application terminale par défaut sur d’autres plateformes est Microsoft.PowerShell_profile.ps1
. Pour Visual Studio Code (VS Code), le nom de fichier est Microsoft.VSCode_profile.ps1
.
Pour plus d’informations, consultez about_Profiles.
Comment créer votre profil personnel
Lorsque vous installez PowerShell pour la première fois sur un système, les fichiers de script de profil et les répertoires auxquels ils appartiennent n’existent pas. La commande suivante crée le fichier de script de profil « Utilisateur actuel, Hôte actuel » s’il n’existe pas.
if (!(Test-Path -Path $PROFILE)) {
New-Item -ItemType File -Path $PROFILE -Force
}
Le paramètre Force de l’applet de New-Item
commande crée les dossiers nécessaires lorsqu’ils n’existent pas.
Après avoir créé le fichier de script, vous pouvez utiliser votre éditeur favori pour personnaliser votre environnement shell.
Ajout de personnalisations à votre profil
Les articles précédents ont parlé de l’utilisation de la saisie semi-automatique des onglets, des prédictions de commandes et des alias. Ces articles ont montré les commandes utilisées pour charger les modules requis, créer des complets personnalisés, définir des liaisons de clés et d’autres paramètres. Il s’agit des types de personnalisations que vous souhaitez avoir disponibles dans chaque session interactive PowerShell. Le script de profil est l’emplacement de ces paramètres.
La façon la plus simple de modifier votre script de profil consiste à ouvrir le fichier dans votre éditeur de code favori. Par exemple, la commande suivante ouvre le profil dans VS Code.
code $PROFILE
Vous pouvez également utiliser notepad.exe
windows, vi
sur Linux ou tout autre éditeur de texte.
Le script de profil suivant contient des exemples pour la plupart des personnalisations mentionnées dans les articles précédents. Vous pouvez utiliser l’un de ces paramètres dans votre propre profil.
## Map PSDrives to other registry hives
if (!(Test-Path HKCR:)) {
$null = New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT
$null = New-PSDrive -Name HKU -PSProvider Registry -Root HKEY_USERS
}
## Customize the prompt
function prompt {
$identity = [Security.Principal.WindowsIdentity]::GetCurrent()
$principal = [Security.Principal.WindowsPrincipal] $identity
$adminRole = [Security.Principal.WindowsBuiltInRole]::Administrator
$prefix = if (Test-Path Variable:/PSDebugContext) { '[DBG]: ' } else { '' }
if ($principal.IsInRole($adminRole)) {
$prefix = "[ADMIN]:$prefix"
}
$body = 'PS ' + $PWD.path
$suffix = $(if ($NestedPromptLevel -ge 1) { '>>' }) + '> '
"${prefix}${body}${suffix}"
}
## Create $PSStyle if running on a version older than 7.2
## - Add other ANSI color definitions as needed
if ($PSVersionTable.PSVersion.ToString() -lt '7.2.0') {
# define escape char since "`e" may not be supported
$esc = [char]0x1b
$PSStyle = [pscustomobject]@{
Foreground = @{
Magenta = "${esc}[35m"
BrightYellow = "${esc}[93m"
}
Background = @{
BrightBlack = "${esc}[100m"
}
}
}
## Set PSReadLine options and keybindings
$PSROptions = @{
ContinuationPrompt = ' '
Colors = @{
Operator = $PSStyle.Foreground.Magenta
Parameter = $PSStyle.Foreground.Magenta
Selection = $PSStyle.Background.BrightBlack
InLinePrediction = $PSStyle.Foreground.BrightYellow + $PSStyle.Background.BrightBlack
}
}
Set-PSReadLineOption @PSROptions
Set-PSReadLineKeyHandler -Chord 'Ctrl+f' -Function ForwardWord
Set-PSReadLineKeyHandler -Chord 'Enter' -Function ValidateAndAcceptLine
## Add argument completer for the dotnet CLI tool
$scriptblock = {
param($wordToComplete, $commandAst, $cursorPosition)
dotnet complete --position $cursorPosition $commandAst.ToString() |
ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
}
}
Register-ArgumentCompleter -Native -CommandName dotnet -ScriptBlock $scriptblock
Ce script de profil fournit des exemples pour la personnalisation suivante :
- Ajoute deux nouveaux PSDrives pour les autres ruches de Registre racine.
- Crée une invite personnalisée qui change si vous exécutez une session avec élévation de privilèges.
- Configure PSReadLine et ajoute la liaison de clé. Les paramètres de couleur utilisent la fonctionnalité $PSStyle pour définir les paramètres de couleur ANSI.
- Ajoute la saisie semi-automatique de tabulation pour l’outil CLI dotnet . L’outil fournit des paramètres pour aider à résoudre les arguments de ligne de commande. Le bloc de script pour Register-ArgumentCompleter utilise cette fonctionnalité pour fournir la saisie semi-automatique de tabulation.