Comment exécuter un script PowerShell en 2026 (Guide complet)

Tu viens de créer ton premier fichier .ps1 et PowerShell refuse de le lancer ? Normal. Sur Windows 10 et Windows 11, la politique d’exécution est Restricted par défaut — aucun script ne tourne sans configuration préalable. Ce guide te montre comment franchir cet obstacle en toute sécurité, que tu utilises PowerShell 5.1 (intégré à Windows) ou PowerShell 7 (version actuelle : 7.6.1, à installer séparément). Les exemples ci-dessous ont été vérifiés sur Microsoft Learn.

⚡ Points clés à retenir
  • Windows 10/11 bloque les scripts .ps1 par défaut (politique Restricted)
  • powershell.exe = PowerShell 5.1 natif ; pwsh.exe = PowerShell 7 (à installer)
  • Sans droits admin : Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
  • Pour un run unique sans toucher aux paramètres : pwsh -ExecutionPolicy Bypass -File script.ps1
  • L’ISE est abandonné par Microsoft — utilise VS Code + extension PowerShell

PowerShell 5.1 ou PowerShell 7 : quelle version utiliser ?

Selon la documentation Microsoft, PowerShell 7 ne remplace pas Windows PowerShell 5.1 — les deux coexistent sur ta machine sans conflit. Avant de lancer quoi que ce soit, vérifie laquelle tu utilises avec $PSVersionTable dans n’importe quelle console PowerShell. La version active s’affiche immédiatement.

CritèreWindows PowerShell 5.1PowerShell 7.6.1 (LTS)
Exécutablepowershell.exepwsh.exe
Chemin d’installationC:\Windows\System32\WindowsPowerShell\v1.0\C:\Program Files\PowerShell\7\
Intégré à Windows✅ Win 10/11 natif❌ Installation requise
Multiplateforme❌ Windows uniquement✅ Windows, Linux, macOS
Développement actif🔒 Maintenance seule✅ Mises à jour régulières
Politique par défaut Win 10/11RestrictedRestricted

Pour installer PowerShell 7 sur Windows 11 via winget (méthode recommandée par Microsoft) :

winget install --id Microsoft.PowerShell --source winget

L’exécutable pwsh.exe s’installe dans $Env:ProgramFiles\PowerShell\7\ et est automatiquement ajouté au PATH. Tu peux le lancer directement depuis le Terminal Windows, l’application terminal par défaut sur Windows 11.

Créer et préparer ton premier script PowerShell

Un script PowerShell est un fichier texte portant l’extension .ps1. Tu peux le créer avec le Bloc-notes, mais Microsoft recommande désormais Visual Studio Code avec l’extension officielle PowerShell de Microsoft : coloration syntaxique, débogueur intégré, IntelliSense et terminal intégré. L’ISE (PowerShell Integrated Scripting Environment) n’est plus maintenu depuis PowerShell 7 — ne l’utilise plus pour du nouveau code.

Voici un script simple pour tester ta configuration. Crée un fichier monscript.ps1 avec ce contenu :

# Affiche la version PowerShell active et l'IP locale
Write-Host "Version PowerShell : $($PSVersionTable.PSVersion)"
$ip = (Get-NetIPAddress -AddressFamily IPv4 -InterfaceIndex (Get-NetRoute -DestinationPrefix "0.0.0.0/0").ifIndex).IPAddress
Write-Host "Adresse IP locale : $ip"
Read-Host -Prompt "Appuie sur Entrée pour quitter"

Essaie de l’exécuter tel quel. Sur un Windows 11 fraîchement installé, tu vas obtenir une erreur. C’est précisément ce que la section suivante explique.

Pourquoi PowerShell bloque tes scripts par défaut

La stratégie d’exécution (ExecutionPolicy) est la première ligne de défense de PowerShell contre les scripts malveillants. Sur Windows 10 et 11, elle est réglée sur Restricted dès l’installation — aucun fichier .ps1 ne peut être lancé, même un script que tu viens d’écrire toi-même. Sur Windows Server 2019 et 2022, la valeur par défaut est RemoteSigned, ce qui autorise déjà les scripts locaux (source : Microsoft Learn).

Pour afficher ta configuration actuelle sur toutes les portées :

Get-ExecutionPolicy -List

Sur un poste Windows 11 standard, tu obtiens toutes les valeurs à Undefined, ce qui signifie que la politique par défaut Restricted s’applique. Voici ce que chaque niveau autorise :

PolitiqueScripts locauxScripts téléchargésUsage typique
RestrictedDéfaut Win 10/11
AllSigned✅ (signé)✅ (signé)Entreprise haute sécurité
RemoteSigned✅ (signé uniquement)Recommandé développeurs
Unrestricted⚠️ avertissementÀ éviter en permanence
BypassRun ponctuel uniquement

Ajuster la stratégie d’exécution sans risquer la sécurité

Set-ExecutionPolicy accepte un paramètre -Scope déterminant qui est affecté par le changement et où la valeur est enregistrée dans le registre Windows. C’est le paramètre que l’article original de 2013 omettait complètement — et qui change tout en termes de sécurité et de droits requis.

ScopePortéeAdmin requisStockage
LocalMachineTous les utilisateurs de la machine✅ OuiHKEY_LOCAL_MACHINE
CurrentUserUtilisateur actuel uniquement❌ NonHKEY_CURRENT_USER
ProcessSession PowerShell active uniquement❌ NonVariable d’environnement (volatile)

Pour un usage personnel — pas besoin d’ouvrir PowerShell en tant qu’administrateur :

# Recommandé : modifie uniquement ton profil utilisateur, sans droits admin
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

# Vérifier le résultat
Get-ExecutionPolicy -List

Pour un déploiement machine entière (tous les utilisateurs du poste) — PowerShell doit tourner en mode administrateur :

# Nécessite « Exécuter en tant qu'administrateur »
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine

En environnement professionnel, préfère une GPO (Group Policy Object) plutôt que Set-ExecutionPolicy directement — une stratégie de groupe MachinePolicy ou UserPolicy prend de toute façon la priorité sur toutes les autres portées. Consulte notre article sur la sécurité Windows 11 avec BitLocker pour aller plus loin sur la gestion des politiques Windows.

5 façons d’exécuter un script PowerShell

Une fois la politique ajustée, tu as plusieurs méthodes à ta disposition. Laquelle choisir dépend de ton contexte — interactif, automatisé, ou purement ponctuel.

1. Depuis l’interpréteur PowerShell

Ouvre PowerShell (ou le Terminal Windows), navigue jusqu’au dossier contenant ton script, et exécute-le avec le préfixe .\ :

cd C:\scripts
.\monscript.ps1

Le préfixe .\ indique à PowerShell de chercher le script dans le répertoire courant — sans lui, PowerShell cherche dans le PATH système et retourne une erreur. C’est aussi depuis ce contexte que tu peux déboguer avec VS Code (touche F5).

2. Depuis le Terminal Windows ou l’invite de commande (CMD)

# PowerShell 5.1 depuis CMD
powershell.exe -File "C:\scripts\monscript.ps1"

# PowerShell 7 depuis CMD ou Terminal Windows
pwsh.exe -File "C:\scripts\monscript.ps1"

Note bien la différence d’exécutable selon la version. Si tu travailles sur des scripts d’administration système — gestion d’Active Directory, inventaire réseau — notre article sur l’affichage des utilisateurs connectés sur une machine distante en PowerShell illustre ces méthodes en conditions réelles.

3. Depuis VS Code

Ouvre ton fichier .ps1 dans VS Code avec l’extension PowerShell installée. Deux raccourcis clavier :

  • F5 — Exécution en mode débogage (points d’arrêt, inspection de variables)
  • Ctrl+F5 — Exécution directe sans débogueur

Le terminal intégré de VS Code utilise automatiquement PowerShell 7 si celui-ci est détecté. C’est l’environnement de développement officiellement recommandé depuis que Microsoft a cessé de maintenir l’ISE.

4. Via un fichier .BAT

Utile pour intégrer PowerShell dans un workflow existant ou appeler un script depuis une application tierce :

@echo off
powershell.exe -NonInteractive -NoProfile -ExecutionPolicy RemoteSigned -File "C:\scripts\monscript.ps1"
pause

Les options -NonInteractive et -NoProfile accélèrent le démarrage et évitent les blocages liés aux profils utilisateur personnalisés. Indispensables dès que le script tourne en arrière-plan ou sans interaction.

5. Via le Planificateur de tâches Windows

Pour planifier un script PowerShell qui s’exécute à intervalles réguliers, crée une tâche avec ces paramètres :

  • Programme/script : C:\Program Files\PowerShell\7\pwsh.exe (ou powershell.exe pour PS 5.1)
  • Arguments : -NonInteractive -NoProfile -ExecutionPolicy RemoteSigned -File "C:\scripts\monscript.ps1"
  • Démarrer dans : C:\scripts\

Passer -ExecutionPolicy RemoteSigned directement en argument de la tâche évite de dépendre de la politique globale configurée sur le poste — pratique pour des scripts déployés sur plusieurs machines. Notre exemple de défragmentation planifiée avec PowerShell sur Windows Server 2022/2025 utilise exactement cette configuration.

Exécuter un script ponctuel sans modifier la politique globale

Parfois tu veux tester un script une seule fois, sans toucher à la configuration système — ou débloquer un fichier téléchargé depuis Internet. Trois techniques couvrent ces cas.

Option A : -ExecutionPolicy Bypass en ligne de commande

# Contourne la politique pour ce run uniquement — rien n'est modifié dans le registre
pwsh -ExecutionPolicy Bypass -File "C:\scripts\monscript.ps1"

Dès que la session se ferme, la politique reprend son état normal. Idéal pour les tests rapides ou le déploiement sur un poste tiers sans toucher à sa configuration.

Option B : -Scope Process (depuis l’interpréteur)

# Modifie la politique uniquement pour la session PowerShell en cours
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process

# Lance le script normalement
.\monscript.ps1

# À la fermeture de la session, la politique revient à son état précédent automatiquement

Option C : Unblock-File pour les scripts téléchargés

Windows marque les fichiers téléchargés depuis Internet avec un flux NTFS de zone de confiance (Zone.Identifier). Même avec RemoteSigned, PowerShell bloque ces scripts non signés. Unblock-File supprime ce marquage sans changer la politique globale :

# Vérifier si un script est marqué « téléchargé d'Internet »
Get-Item "C:\Downloads\script.ps1" -Stream Zone.Identifier

# Supprimer le marquage
Unblock-File -Path "C:\Downloads\script.ps1"

# Le script est maintenant exécutable avec RemoteSigned
.\script.ps1

Pour aller plus loin et découvrir tous les usages avancés de PowerShell — boucles, fonctions, gestion des erreurs, remoting — retrouve l’index complet de nos tutoriels dans la section PowerShell pour les nuls.

Questions fréquentes

Quelle est la différence entre powershell.exe et pwsh.exe ?

powershell.exe lance Windows PowerShell 5.1, intégré à Windows et basé sur .NET Framework. pwsh.exe lance PowerShell 7.x, la version moderne basée sur .NET 9+, multiplateforme et activement maintenue. Les deux peuvent coexister sans conflit. Si tu n’as rien installé manuellement, seul powershell.exe est disponible sur ta machine.

Est-ce risqué de passer la politique en RemoteSigned ?

RemoteSigned est la valeur par défaut sur Windows Server 2019 et 2022 — Microsoft la considère suffisamment sûre pour les environnements de production. Elle autorise les scripts locaux et bloque les scripts téléchargés non signés. C’est le bon compromis entre sécurité et praticité. En revanche, évite Unrestricted et Bypass comme politique permanente sur toute la machine.

Comment exécuter un script PowerShell depuis le Planificateur de tâches sans droits admin sur la politique ?

Passe -ExecutionPolicy RemoteSigned directement en argument de la tâche planifiée (voir méthode 5 ci-dessus). Le script s’exécute correctement sans modifier la politique machine globale, quel que soit l’état de la configuration sur le poste cible.

Comment savoir si un script est bloqué à cause de la zone de confiance Windows ?

L’erreur mentionne « n’est pas signé numériquement » alors que ta politique devrait autoriser les scripts locaux ? Vérifie avec Get-Item "script.ps1" -Stream Zone.Identifier — si la commande retourne un résultat, le fichier est marqué comme provenant d’Internet. Utilise Unblock-File pour lever ce marquage (voir Option C ci-dessus).

11 réflexions au sujet de “Comment exécuter un script PowerShell en 2026 (Guide complet)”

  1. Bonjour,

    Ma petite contribution dans un batch :

    echo off

    set parm1=toto
    set parm2=tata

    powershell -Command "$TDate=[DateTime]::Today.AddMonths(-1)|Get-Date -format "yyyyMM";C:\Bureau\coursPS\cours.bat %parm1% %parm2% $TDate"

    execute un batch (ici : cours.bat) avec 3 paramètres :
    Résultat (pour la date calcul du mois précédent en fonction du mois en cours)
    toto tata 201607

    Répondre
  2. Bonjour, je sais que cet article date un peu, mais je débute en powershell et celui ci est très bien fait.
    Mon petit problème c’est que je fais des test sur 3 pc de mes scripts (le mien sous windows 7, un qui a un environnement de dev powershell sous windows 10 et un qui a juste la cmd powershell sous windows 7 ) et celui sous windows 10, lors de son redémarrages me réinitialise l’executionpolicy, donc je dois refaire toute la manip que tu cites chaque jour, ce qui est un peu contraignant … Est ce que quelqu’un aurait une idée de pourquoi et surtout comment remédier à ce problème ?
    Merci bien
    PS: le pc sans rien sous windows 7 n’a aucun soucis et garde l’exécutionpolicy a unrestricted tout les jours

    Répondre
  3. Il faut quand même executer le poweShell en tant qu’admin sinon on le jlie message :
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShellHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\P
    owerShell\1\ShellIds\Microsoft.PowerShellExecutionPolicy: : Le module «HKEY_LOCAL_MACHINE» n’a pas pu être chargé.
    Pour plus d’informations, exécutez la commande «Import-Module HKEY_LOCAL_MACHINE».
    Au caractère Ligne:1 : 1
    + HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell …
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : ObjectNotFound: (HKEY_LOCAL_MACH…xecutionPolicy::String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CouldNotAutoLoadModule

    Répondre
  4. Merci bien pour le script, il fonctionne parfaitement.
    Excellent article !!! bien détaillé.
    Merci encore….

    Répondre

Laisser un commentaire