Prise en main de PowerShell

PowerShell est un shell en ligne de commande + un environnement de script créé par Microsoft pour les systèmes Windows, principalement utilisé pour l'administration système et les tâches d'automatisation.

DansWindows 11, il suffit de rechercher directement dans le menu DémarrerPowerShellet c'est tout.

Les raccourcis courants incluent (pour les systèmes 64 bits) :

Nom du raccourci Description
Windows PowerShell Version de ligne de commande 64 bits
Windows PowerShell ISE Éditeur de script graphique 64 bits
Windows PowerShell (x86) Version de ligne de commande 32 bits
Windows PowerShell ISE (x86) Éditeur de script graphique 32 bits

⚠️ Remarque : Windows 11 ne prend pas en charge les systèmes 32 bits, mais il inclut toujours la version x86 de PowerShell pour la compatibilité avec les programmes hérités.


Façons de lancer PowerShell

Méthode de lancement normale

Cliquez sur le raccourci Windows PowerShell pour lancer la console PowerShell.

La barre de titre de la console PowerShell affichera "Windows PowerShell".

Remarque :Certaines commandes peuvent s'exécuter normalement lorsque PowerShell est exécuté en tant qu'utilisateur standard, mais PowerShell lui-même ne participe pas au contrôle de compte d'utilisateur (UAC) et ne peut pas inviter l'utilisateur à élever ses privilèges.

Explication du contrôle de compte d'utilisateur (UAC)

Ce que fait l'UAC :Une fonctionnalité de sécurité Windows qui empêche l'exécution de code malveillant avec des privilèges élevés.

Restrictions des autorisations des utilisateurs standard: Lorsqu'on exécute PowerShell en tant qu'utilisateur standard, toute tentative d'exécuter des commandes nécessitant des privilèges d'administrateur entraînera une erreur.

Par exemple, arrêter un service Windows :

Stop-Service -Name W32Time

Exemple de message d'erreur :

Stop-Service : Service 'Windows Time (W32Time)' cannot be stopped due to
the following error: Cannot open W32Time service on computer '.'.
At line:1 char:1
+ Stop-Service -Name W32Time
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (System.ServiceProcess.ServiceCon
   troller:ServiceController) [Stop-Service], ServiceCommandException
    + FullyQualifiedErrorId : CouldNotStopService,Microsoft.PowerShell.Comm
   ands.StopServiceCommand
Solution : Vous devezexécuter PowerShell avec un utilisateur élevé aux privilèges d'administrateur local.

Un second compte d'utilisateur de domaine est configuré, selon le principe du moindre privilège ; il n'est pas administrateur de domaine et ne dispose d'aucun privilège élevé au sein du domaine.

Étapes:

  • Cliquez avec le bouton droit sur le raccourci Windows PowerShell
  • Sélectionnez "Exécuter en tant qu'administrateur"

Invite système :Comme vous êtes actuellement connecté en tant qu’utilisateur standard, Windows vous demandera de saisir les identifiants de l’administrateur local.

Confirmer l’élévation :La barre de titre de la fenêtre PowerShell élevée affiche « Administrateur : Windows PowerShell ».

Résultat :L’exécution de commandes nécessitant des privilèges d’administrateur dans la fenêtre PowerShell élevée ne rencontrera plus d’erreurs UAC.

Principe d’élévation des privilèges: N’élevez PowerShell en tant qu’administrateur que lorsque c’est absolument nécessaire.

Ordinateurs distants :Lorsque vous ciblez des ordinateurs distants, il n’est pas nécessaire d’élever les privilèges PowerShell. L’élévation n’affecte que les commandes locales.

Épingler les raccourcis :Vous pouvez épingler le raccourci PowerShell ou Windows Terminal à la barre des tâches pour un lancement facile :

Lancer PowerShell avec élévation de privilèges en toute sécurité :Si vous devez lancer PowerShell avec des privilèges élevés, maintenez la touche Maj enfoncée tout en cliquant avec le bouton droit sur l’icône PowerShell épinglée dans la barre des tâches, puis sélectionnez « Exécuter en tant qu’administrateur »


Guide pour déterminer la version de PowerShell et la stratégie d’exécution

1. Vérification de la version de PowerShell

PowerShell fournit une variable automatique$PSVersionTable, qui contient la version et les informations associées à la session PowerShell actuelle.

$PSVersionTable

La sortie ressemblera à ce qui suit :

Name                           Value
----                           -----
PSVersion                      5.1.22621.2428
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.22621.2428
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

Notes de version

  • Windows PowerShell 5.1 est préinstallé dans les versions de Windows actuellement prises en charge et constitue la version recommandée à utiliser.
  • PowerShell 7 (version multiplateforme) n'est pas un remplacement de Windows PowerShell 5.1, mais un produit différent installé côte à côte avec lui.
  • PowerShell 6 (également appelé PowerShell Core) n'est plus pris en charge.

2. Comprendre la stratégie d'exécution

La stratégie d'exécution est une fonctionnalité de sécurité de PowerShell qui contrôle les conditions dans lesquelles les scripts peuvent s'exécuter, empêchant l'exécution accidentelle de scripts malveillants.

Remarque : la stratégie d'exécution n'est pas une frontière de sécurité ; des utilisateurs expérimentés peuvent la contourner.

Portée de la stratégie d'exécution

  • Elle peut être définie pour l'ordinateur local (LocalMachine), l'utilisateur actuel (CurrentUser) ou la session actuelle (Process).
  • Elle peut également être gérée pour des utilisateurs et des ordinateurs via la stratégie de groupe.

Stratégies d'exécution par défaut courantes de Windows

Version du système d'exploitation Stratégie d'exécution par défaut
Windows Server 2022 RemoteSigned
Windows Server 2019 RemoteSigned
Windows Server 2016 RemoteSigned
Windows 11 Restricted
Windows 10 Restricted

RestrictedIndique qu'aucun script n'est autorisé à s'exécuter par défaut.

3. Interrogation de la stratégie d'exécution actuelle

Interroger la stratégie actuelle :

Get-ExecutionPolicy

La sortie ressemblera à ce qui suit :

Restricted 

Lister les paramètres de stratégie d'exécution pour toutes les portées :

Get-ExecutionPolicy -List

La sortie ressemblera à ce qui suit :

Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine       Undefined

4. Exemples de l'effet de la stratégie d'exécution sur l'exécution des scripts

Supposons qu'il existe un fichier de scriptGet-TimeService.ps1; l'exécution de la commande directement dans la ligne de commande interactive fonctionne normalement :

Get-Service -Name W32Time

Toutefois, lorsque la même commande est exécutée depuis un script, PowerShell renverra une erreur.

.\Get-TimeService.ps1

Message d'erreur :

.\Get-TimeService.ps1 : File C:\tmp\Get-TimeService.ps1 cannot be loaded
because running scripts is disabled on this system. For more information,
see about_Execution_Policies at
https:/go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1
+ .\Get-TimeService.ps1
+ ~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : SecurityError: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

5. Modification de la stratégie d'exécution

1. Définir sur RemoteSigned (Recommandé)

Permet d'exécuter des scripts locaux et des scripts distants signés par des éditeurs de confiance.

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
  • Vous devez exécuter PowerShell en tant qu'administrateur pour modifier la stratégie d'exécution de l'ordinateur local (LocalMachine).
  • Une invite de confirmation apparaîtra lors de la modification :
Do you want to change the execution policy? [Y] Yes  [A] Yes to All  ...

2. Modifier uniquement la stratégie d'exécution de l'utilisateur actuel (aucun droit d'administrateur requis)

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

6. Messages d'erreur courants et solutions

Erreur lors de la modification de la stratégie LocalMachine sans privilèges d'administrateur élevés :

Access to the registry key 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell' is denied.

Solution: Réessayez après avoir exécuté PowerShell en tant qu'administrateur, ou modifiez uniquement la stratégie de l'utilisateur actuel.

7. Vérification après modification

Après que la stratégie d'exécution a été changée enRemoteSigned, exécutez le script :

.\Get-TimeService.ps1

Sortie :

Status   Name    DisplayName
------   ----    -----------
Running  W32Time Windows Time

8. Remarques
  • Les scripts sont des fichiers texte brut avec l'extension.ps1。
  • Il est recommandé d'utiliserVisual Studio Codeou un éditeur de texte pour écrire des scripts.
  • Avant de modifier la stratégie d'exécution, veuillez lire la documentation officielleabout_Execution_Policiespour comprendre les risques de sécurité associés.
Autres extensions