Identifier les facteurs d’installation et d’utilisation de Windows PowerShell

Effectué

Quand vous utilisez PowerShell pour gérer et automatiser des tâches de gestion, plusieurs points sont à prendre en compte, notamment :

  • Installation et utilisation côte à côte de PowerShell avec Windows PowerShell.
  • Exécution de PowerShell à l’aide d’informations d’identification d’administration.
  • Identification et modification de la stratégie d’exécution dans PowerShell.

Installation et utilisation côte à côte de PowerShell avec Windows PowerShell

Selon les versions et éditions de leur système d’exploitation Windows, les organisations peuvent se retrouver avec des ordinateurs qui exécutent des versions différentes de PowerShell. Parfois, ces environnements à versions multiples sont le résultat des stratégies de l’organisation qui n’autorisent pas l’installation de versions plus récentes de PowerShell. Ils peuvent également être dus à des produits logiciels, notamment des logiciels serveur, compatibles avec une version particulière de PowerShell.

Si vous installez la dernière version de PowerShell, vous vous retrouvez avec plusieurs versions de PowerShell installées sur votre système. Par exemple, PowerShell 7 est conçu pour coexister avec Windows PowerShell 5.1, s’installe dans un nouveau répertoire et permet une exécution côte à côte avec Windows PowerShell.

L’installation de la dernière version de PowerShell entraîne les conséquences suivantes vis-à-vis de Windows PowerShell :

  • Chemin d’installation et nom d’exécutable distincts. Windows PowerShell 5.1 s’installe à l’emplacement $env:WINDIR\System32\WindowsPowerShell\v1.0. PowerShell 7 est installé à l’emplacement $env:ProgramFiles\PowerShell\7. Le nouvel emplacement est ajouté à votre CHEMIN, ce qui vous permet d’exécuter à la fois Windows PowerShell 5.1 et PowerShell 7. Dans Windows PowerShell, l’exécutable PowerShell est nommé powershell.exe. Dans les versions 6 et ultérieures, l’exécutable est nommé pwsh.exe. Le nouveau nom facilite la prise en charge de l’exécution côte à côte des deux versions.
  • PSModulePath distinct. Par défaut, Windows PowerShell et PowerShell 7 stockent les modules à différents emplacements. PowerShell 7 combine ces emplacements dans la variable d’environnement $Env:PSModulePath. Quand vous importez un module par son nom, PowerShell vérifie l’emplacement spécifié par $Env:PSModulePath. Cette fonctionnalité permet à PowerShell 7 de charger à la fois les modules Core et Desktop.
  • Profils distincts pour chaque version. Un profil PowerShell est un script qui s’exécute au démarrage de PowerShell. Ce script personnalise l’environnement PowerShell en ajoutant des commandes, des alias, des fonctions, des variables, des modules et des lecteurs PowerShell. Dans Windows PowerShell 5.1, l’emplacement du profil est $HOME\Documents\WindowsPowerShell. Dans PowerShell 7, l’emplacement du profil est $HOME\Documents\PowerShell.
  • Journaux des événements distincts. Windows PowerShell et PowerShell 7 journalisent les événements dans des journaux des événements Windows distincts.

Quand vous passez en revue une session PowerShell, il est important de déterminer la version que vous utilisez. Pour déterminer la version actuelle, entrez $PSVersionTable dans la console PowerShell, puis sélectionnez Entrée. PowerShell affiche les numéros de version des différents composants, notamment le numéro de version principal de PowerShell.

Exécution de PowerShell à l’aide d’informations d’identification d’administration

Sur les systèmes d’exploitation 64 bits, les applications hôtes PowerShell sont disponibles dans les versions 64 bits (x64) et 32 bits (x86). Quand vous utilisez Windows PowerShell, vous utilisez la version 64 bits qui apparaît dans le menu Démarrer sous l’intitulé Windows PowerShell ou Windows PowerShell ISE. Les versions 32 bits sont compatibles avec les extensions d’interpréteur de commandes 32 bits installées localement. Dans le menu Démarrer, elles se nomment Windows PowerShell (x86) ou Windows PowerShell ISE (x86). Dès que vous ouvrez Windows PowerShell, les barres de titre de la fenêtre d’application indiquent les mêmes noms que ceux figurant dans le menu Démarrer. Veillez à ouvrir la version adaptée à la tâche que vous voulez effectuer.

Sur les systèmes d’exploitation 32 bits, les applications hôtes de PowerShell sont disponibles uniquement en versions 32 bits. Quand vous utilisez Windows PowerShell, vous pouvez voir que les icônes et les barres de titre des fenêtres ne mentionnent pas la désignation (x86). Elles indiquent simplement Windows PowerShell et Windows PowerShell ISE dans le menu Démarrer.

Si vous envisagez d’utiliser PowerShell pour effectuer des tâches administratives sur des ordinateurs sur lesquels un contrôle de compte d’utilisateur (UAC) est activé, vous risquez d’avoir à effectuer une étape supplémentaire pour exécuter des applets de commande PowerShell avec des informations d’identification d’administration complètes. Pour cela, activez le menu contextuel de l’icône de l’application ou cliquez dessus avec le bouton droit, puis sélectionnez Exécuter en tant qu’administrateur. Quand vous exécutez PowerShell avec des informations d’identification d’administration, la barre de titre de la fenêtre de l’application hôte inclut le préfixe Administrateur.

Identification et modification de la stratégie d’exécution dans PowerShell

La stratégie d’exécution dans PowerShell a pour but de réduire la possibilité qu’un utilisateur exécute involontairement des scripts PowerShell. Vous pouvez la considérer comme une fonctionnalité de sécurité qui contrôle les conditions dans lesquelles PowerShell charge des fichiers de configuration et exécute des scripts. Cette fonctionnalité permet d’éviter l’exécution de scripts malveillants.

Important

La stratégie d’exécution dans PowerShell n’est pas un système de sécurité qui restreint les actions de l’utilisateur. Par exemple, si les utilisateurs ne peuvent pas exécuter un script, ils peuvent facilement contourner une stratégie en entrant le contenu du script sur la ligne de commande.

Pour identifier la stratégie d’exécution en vigueur pendant la session PowerShell active, utilisez l’applet de commande suivante :

Get-ExecutionPolicy

Vous pouvez configurer les paramètres de stratégie suivants :

  • AllSigned. Limite l’exécution d’un script à tous les scripts signés. Ce paramètre nécessite que tous les scripts soient signés par un éditeur approuvé, y compris les scripts que vous écrivez sur l’ordinateur local. Vous recevez une invite avant toute exécution de scripts provenant d’éditeurs que vous n’avez pas encore classés comme approuvés ou non approuvés. Toutefois, la vérification de la signature d’un script n’élimine pas le risque que ce script soit malveillant. Elle assure uniquement un contrôle supplémentaire qui réduit ce risque.
  • Par défaut. Définit la stratégie d’exécution par défaut, à savoir Restricted pour les clients Windows et RemoteSigned pour les serveurs Windows.
  • RemoteSigned. Il s’agit de la stratégie d’exécution par défaut pour les ordinateurs serveurs Windows. Les scripts peuvent s’exécuter, mais la stratégie nécessite une signature numérique provenant d’un éditeur approuvé sur les scripts et fichiers de configuration qui ont été téléchargés à partir d’Internet. Ce paramètre ne nécessite pas de signatures numériques sur les scripts écrits sur l’ordinateur local.
  • Restricted. Il s’agit de la stratégie d’exécution par défaut pour les ordinateurs clients Windows. Elle permet d’exécuter des commandes individuelles, mais elle n’autorise pas les scripts.
  • Unrestricted. Il s’agit de la stratégie d’exécution par défaut pour les ordinateurs non-Windows, que vous ne pouvez pas modifier. Elle permet aux scripts non signés de s’exécuter. Cette stratégie avertit l’utilisateur avant d’exécuter les scripts et fichiers de configuration qui ne proviennent pas de la zone intranet locale.
  • Undefined. Indique qu’il n’existe pas de stratégie d’exécution définie dans l’étendue actuelle. Si la stratégie d’exécution est Undefined dans toutes les étendues, la stratégie d’exécution en vigueur Restricted pour les clients Windows et RemoteSigned pour Windows Server.

Pour modifier la stratégie d’exécution dans PowerShell, utilisez la commande suivante :

Set-ExecutionPolicy -ExecutionPolicy <PolicyName>