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 :

  1. Sélectionnez du texte avec la souris
  2. Faites Ctrl + C pour copier
  3. Dans PowerShell, faites clic droit pour coller (ou Ctrl + V si votre terminal le supporte)
  4. 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

We use Microsoft Clarity to understand how the site is used and improve it. By continuing to browse, you accept it. You can disable it at any time.