Profil PowerShell et astuces
Le profil PowerShell ($PROFILE)
Le profil PowerShell est un script qui s'exécute automatiquement à chaque ouverture d'une session PowerShell. C'est l'endroit idéal pour stocker vos fonctions personnalisées, alias et configurations.
Comprendre le problème
Quand vous créez une fonction directement dans le terminal :
function kill-port { param([int]$Port) ... }
Elle fonctionne immédiatement. Mais si vous fermez PowerShell, la fonction disparaît. C'est parce que les fonctions créées dans le terminal ne vivent que dans la session courante.
La solution : le fichier $PROFILE
Le fichier $PROFILE est chargé automatiquement à chaque session. Tout ce que vous y mettez est permanent.
# Voir le chemin de votre profil
$PROFILE
# Résultat typique : C:\Users\VotreNom\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
# Vérifier si le fichier existe
Test-Path $PROFILE
# Créer le fichier s'il n'existe pas
if (!(Test-Path $PROFILE)) {
New-Item -Path $PROFILE -ItemType File -Force
}
# Ouvrir le profil dans le Bloc-notes
notepad $PROFILE
Si le fichier n'existe pas encore, acceptez sa création quand on vous le demande.
Que mettre dans son profil ?
Voici un exemple de profil bien organisé :
# ============================================
# Mon profil PowerShell
# ============================================
# --- Fonctions utilitaires ---
# Tuer un processus par port
function kill-port {
param([int]$Port)
$connection = Get-NetTCPConnection -LocalPort $Port -ErrorAction SilentlyContinue
if ($connection) {
$processId = $connection.OwningProcess | Select-Object -First 1
$processName = (Get-Process -Id $processId).ProcessName
Write-Output "Port $Port utilisé par $processName (PID: $processId)"
Stop-Process -Id $processId -Force
Write-Output "Processus arrêté."
} else {
Write-Output "Aucun processus trouvé sur le port $Port."
}
}
# Raccourci pour ouvrir l'explorateur ici
function here { explorer . }
# Raccourci pour ouvrir VS Code ici
function c { code . }
# --- Alias personnalisés ---
Set-Alias -Name g -Value git
Set-Alias -Name n -Value npm
Set-Alias -Name open -Value explorer
# --- Message d'accueil ---
Write-Host "PowerShell prêt !" -ForegroundColor Green
Recharger le profil sans fermer PowerShell
Après avoir modifié votre profil, pas besoin de fermer et rouvrir le terminal :
# Recharger le profil
. $PROFILE
Le point (.) au début est le dot-sourcing : il exécute le script dans la session courante au lieu d'une sous-session.
Astuces de productivité
Copier-coller dans PowerShell
Le copier-coller dans le terminal peut être déroutant. Voici les méthodes :
Méthode rapide :
- Sélectionnez du texte avec la souris
- Faites Ctrl + C pour copier
- Dans PowerShell, faites clic droit pour coller (ou Ctrl + V si votre terminal le supporte)
- Appuyez sur Entrée pour exécuter
Si le collage ne fonctionne pas :
- Clic droit sur la barre de titre du terminal > Propriétés > cochez Mode d'édition rapide
- Ou mieux : utilisez Windows Terminal qui gère nativement Ctrl+C / Ctrl+V
Autocomplétion
# Tab pour autocompléter
Get-Pro[Tab] # → Get-Process
# Tab pour naviguer les options
Get-Process -[Tab] # Parcourt les paramètres disponibles
# Ctrl + Espace pour voir toutes les options
Get-Process -N[Ctrl+Space]
Historique des commandes
# Flèche haut/bas : naviguer dans l'historique
# Rechercher dans l'historique
Ctrl + R # Recherche inversée (comme en Bash)
# Voir tout l'historique
Get-History
# Réexécuter une commande par numéro
Invoke-History 42
# Voir le fichier d'historique
(Get-PSReadLineOption).HistorySavePath
Raccourcis clavier utiles
| Raccourci | Action |
|---|---|
| Tab | Autocomplétion |
| Ctrl + R | Recherche dans l'historique |
| Ctrl + C | Annuler la commande en cours |
| Ctrl + L | Effacer l'écran (comme cls) |
| F7 | Afficher l'historique en popup |
| Flèche haut | Commande précédente |
PSReadLine : améliorer l'expérience
PSReadLine est le module qui gère la saisie dans PowerShell. Vous pouvez le personnaliser dans votre $PROFILE :
# Prédiction basée sur l'historique (PowerShell 7+)
Set-PSReadLineOption -PredictiveViewSource History
# Style de prédiction en liste
Set-PSReadLineOption -PredictionViewStyle ListView
# Couleurs personnalisées
Set-PSReadLineOption -Colors @{
Command = 'Green'
Parameter = 'Cyan'
String = 'Yellow'
}
Commandes en une ligne utiles
# Trouver et tuer un processus sur un port (version one-liner)
(Get-NetTCPConnection -LocalPort 3000).OwningProcess | ForEach-Object { Stop-Process -Id $_ -Force }
# Taille d'un dossier
(Get-ChildItem -Recurse | Measure-Object -Property Length -Sum).Sum / 1MB
# Vider le cache DNS
Clear-DnsClientCache
# Trouver votre IP locale
(Get-NetIPAddress -AddressFamily IPv4 | Where-Object { $_.InterfaceAlias -notlike "*Loopback*" }).IPAddress
# Ouvrir une URL dans le navigateur
Start-Process "https://sachaamm.com"
Windows Terminal : le terminal moderne
Si vous utilisez encore l'ancien terminal PowerShell, passez à Windows Terminal :
- Onglets multiples (PowerShell, CMD, WSL dans la même fenêtre)
- Copier-coller natif avec Ctrl+C / Ctrl+V
- Thèmes et personnalisation
- Panneaux divisés
- Support Unicode complet
# Installer Windows Terminal
winget install Microsoft.WindowsTerminal