Gajus - Fotolia

Administration : trouvez et personnalisez votre profil PowerShell

Un profil permet à l’administrateur système de configurer PowerShell pour gagner en efficacité dans l’exécution des commandes et des scripts. Cet article explique comment.

Si vous exécutez les mêmes commandes à chaque fois que vous lancez la console PowerShell, il est probablement temps de personnaliser votre profil PowerShell pour une expérience de script plus fluide. Lorsque vous développez un profil dans PowerShell, vous définissez vos paramètres en tant que script PowerShell afin de faciliter le processus. Cet article explique le profil PowerShell, comment le modifier pour n’importe quelle console PowerShell – PowerShell 7, Windows PowerShell 5.1, Visual Studio (VS) Code et PowerShell Integrated Script Environment (ISE) – et indique plusieurs ajouts pratiques pour un profil.

Qu’est-ce que le profil PowerShell ?

Le profil PowerShell est un script PowerShell qui s’exécute à chaque fois que vous lancez PowerShell, sauf lorsque vous utilisez l’option -NoProfile. L’emplacement du profil PowerShell varie en fonction de plusieurs conditions :

  • La version de PowerShell : Windows PowerShell ou PowerShell 7 ?
  • Le profil est-il destiné à tous les utilisateurs ou à l’utilisateur actuel ?
  • Le profil est-il spécifique à l’application hôte ?

Les listes suivantes sont des répertoires. Les noms des scripts de profil dépendent de l’application hôte.

Pour tous les utilisateurs, le profil se trouve aux emplacements suivants :

  • Windows PowerShell : $PSHOME\
  • PowerShell 7 sur Windows : $PSHOME\
  • PowerShell 7 sur Linux : /usr/local/Microsoft/powershell/7/
  • PowerShell 7 sur macOS : /usr/local/Microsoft/powershell/7/

Pour les utilisateurs spécifiques, le profil est situé ici :

  • Windows PowerShell : $HOME\Documents\WindowsPowerShell\
  • PowerShell 7 sur Windows : $HOME\Documents\PowerShell\N
  • PowerShell 7 sur Linux : ~/.config/powershell/
  • PowerShell 7 sur macOS : ~/.config/powershell/

Les répertoires peuvent contenir plusieurs fichiers de profil valides. La différence entre les profils est basée sur l’application hôte qui lance PowerShell. Nous utilisons ISE et VS Code comme exemples d’hôtes :

  • Tous les hôtes : profile.ps1
  • ISE : Microsoft.PowerShellISE_profile.ps1
  • VS Code : Microsoft.VSCode_profil.ps1

Si un utilisateur lance VS Code, les profils suivants peuvent être exécutés sur Windows :

  • Tous les utilisateurs, tous les hôtes : $PSHOME\profile.ps1
  • Tous les utilisateurs, VS Code : $PSHOME\Microsoft.VSCode_profile.ps1
  • Utilisateur actuel, tous les hôtes : $HOME\profile.ps1
  • Utilisateur actuel, VS Code : $HOME\Microsoft.VSCode_profile.ps1

Si l’un de ces fichiers n’existe pas, PowerShell ignore ce profil.

Comment accéder à votre profil PowerShell ?

La manière la plus simple de récupérer le profil PowerShell est d’utiliser PowerShell lui-même. Vous n’avez pas besoin de vous souvenir des chemins d’accès au profil, car ils sont stockés dans la variable $Profile.

Capture d'écran pour trouver l'emplacement du profil PowerShell
La variable $Profile indique l'emplacement du profil PowerShell.

Le seul chemin affiché est le profil de l’application hôte PowerShell de l’utilisateur actuel. La variable $Profile possède des propriétés supplémentaires pour afficher les autres chemins d’accès, que l’on trouve en ajoutant la variable à la cmdlet Get-Member :

$Profile | Get-Member -MemberType NoteProperty
Capture d'écran pour trouver les chemins d'accès multiples au profil PowerShell
Recherchez les autres emplacements du profil PowerShell sur le système.

Pour trouver le chemin d’accès au profil « tous les utilisateurs, tous les hôtes », exécutez la commande suivante :

$Profile.AllUsersAllHosts
Capture d'écran pour trouver le profil « tous les utilisateurs, tous les hôtes » dans le dossier PowerShell 7.
Repérez le profil « tous les utilisateurs, tous les hôtes » dans le dossier PowerShell 7.

Le fichier de profil d’hôte se trouve dans la hiérarchie Program Files et ne peut être modifié sans autorisations administratives. Concentrez-vous plutôt sur le profil de l’utilisateur et de l’hôte actuels, que vous trouverez à l’aide de la commande suivante :

$Profile.CurrentUserCurrentHost
Capture d'écran pour trouvez le profil PowerShell de l'utilisateur et de l'hôte actuels afin de le personnaliser.
Trouvez le profil PowerShell de l'utilisateur et de l'hôte actuels afin de le personnaliser.

Pour modifier ce script, exécutez la commande suivante pour lancer VS Code et ouvrir ce fichier :

code $Profile.CurrentUserCurrentHost

Comment personnaliser le profil PowerShell ?

Grâce à la flexibilité du profil PowerShell, vous disposez d’un large éventail d’options de personnalisation pour adapter le fonctionnement de PowerShell à vos besoins.

Personnaliser votre invite PowerShell. Nous pourrions consacrer un article entier à ce sujet sans pour autant couvrir toutes les possibilités de modification de l’invite PowerShell. Si vous n’êtes pas familier avec la personnalisation de votre invite PowerShell, vous pouvez trouver de nombreux exemples d’invites sympas pour voir ce qui est possible. Cet article couvre un exemple de base.

Par exemple, pour placer le curseur sur la ligne en dessous du chemin et afficher le symbole # si nous fonctionnons en tant qu’administrateur sous Windows, vous pouvez faire ce qui suit :

Function Prompt {
    $endChar = '>'
    # check if running as admin
    If
(([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
        $endChar = '#'
    }
    @"
$PWD
PS$endChar
"@
}

Pour que cette fonction soit exécutée à chaque chargement de PowerShell, placez-la dans votre profil.

Charger un module PowerShell et définir les valeurs par défaut. Une erreur régulièrement commise est d’utiliser un module qui demande une authentification avant de s’être authentifié. Certains modules ont des contrôles qui vous rappellent de vous authentifier, tandis que d’autres lancent une erreur absconse. Si ce problème survient pour un module que vous utilisez fréquemment, pensez à ajouter les étapes d’authentification à votre profil.

Pour cet exemple, nous utilisons le module Microsoft.Graph, qui vous permet de vous authentifier à l’aide d’informations d’identification mises en cache. Une fois que vous vous êtes authentifié, vous pouvez ajouter la commande suivante à votre profil :

Connect-Graph

Il existe une bizarrerie dans Microsoft.Graph.Users qui vous oblige à spécifier les propriétés par défaut pour renvoyer plusieurs propriétés d’utilisateurs. Vous pouvez contourner ce problème en créant une variable dans votre profil PowerShell :

$graphUserProps = @(
    'BusinessPhones',
    'DisplayName',
    'GivenName',
    'Id',
    'Mail',
    'PreferredLanguage',
    'Surname',
    'UserPrincipalName'
)

Si vous avez besoin d’ajouter d’autres propriétés pour un utilisateur Microsoft Graph, vous pouvez faire référence à cette variable et ajouter des propriétés supplémentaires :

Get-MgUser -UserId <upn> -Select ($graphUserProps + 'AccountEnabled','UsageLocation')

Ajouter des alias et des compléments d’argument. Une autre excellente utilisation d’un profil PowerShell est l’ajout d’un alias. Si vous travaillez de manière interactive avec PowerShell, les alias peuvent vous permettre d’économiser beaucoup de temps de frappe. En reprenant l’exemple précédent de Microsoft.Graph, vous pourriez abréger Get-MgUser en gmu :

New-Alias -Name gmu -Value Get-MgUser

Et pourquoi ne pas utiliser la lettre k comme alias à kubectl, l'outil de ligne de commande de Kubernetes pour travailler avec les clusters ?

New-Alias -Name k -Value kubectl

L’un des avantages de kubectl est qu’il inclut une autocomplétion pour PowerShell. Si vous utilisez fréquemment kubectl, vous pouvez suivre les instructions de ce lien pour ajouter cette fonctionnalité à votre profil.

Ajouter des fonctions personnalisées à votre profil PowerShell. Au fur et à mesure que vous développez vos compétences en PowerShell, il se peut que vous écriviez des fonctions ponctuelles pour vous aider dans votre travail. Mais il se peut que vous ne jugiez pas utile d’ajouter ce code à un module. Après avoir placé votre code dans une plateforme de contrôle de source, telle que GitHub, vous pouvez utiliser dot sourcing pour charger le code lors de l’exécution de PowerShell :

. C:\path\to\Function.ps1

Ce n’est que le début de ce qui est possible. Commencez à réfléchir aux commandes que vous exécutez fréquemment et envisagez d’autres façons de personnaliser votre profil PowerShell pour vous faciliter la vie.

Pour approfondir sur Administration de systèmes