Articles

Adam l’automate

Vous êtes prêt à effectuer votre mise à niveau de PowerShell 7 et à avoir accès à toutes les nouvelles fonctionnalités ? Si c’est le cas, cet article est pour vous.

Lorsque PowerShell 6 est sorti, c’était pour apporter une version de base de PowerShell à toutes les plateformes (PowerShell Core). Avec PowerShell 7 (qui est la dernière version de PowerShell au moment où nous écrivons ces lignes), nous cherchons maintenant à ce que toutes les plateformes soient égales dans le PowerShell qu’elles peuvent fournir (à la fois Windows PowerShell et PowerShell Core).

Dans cet article, vous apprendrez comment effectuer une mise à jour de PowerShell 7 manuellement et comment automatiser le processus de mise à jour en allant de l’avant avec des déploiements de masse via GPO et PowerShell Remoting.

Au moment de la rédaction de cet article, la version actuelle de PowerShell 7 est la Preview 3. La plupart des références de cet article s’appliqueront à cette version.

Table des matières

Comment mettre à jour la version de PowerShell sur une machine

Comme pour PowerShell Core 6.0, le processus d’installation de PowerShell Core 7 est similaire. Examinons quelques façons différentes d’installer PowerShell 7 sur une seule machine.

Avant d’aller plus loin, il convient de mentionner quelques prérequis avant d’installer la version 7 de PowerShell. Vous remarquerez que ce sont les mêmes exigences que pour PowerShell version 6.

  • Le Runtime Universal C doit être installé
  • Le Windows Management Framework (WMF) 4.0 ou plus récent – uniquement si vous êtes sur une version de Windows 7 ou Windows Server 2008R2. Les versions ultérieures de Windows comme Windows 8.1, Windows 10 et Windows Server 2016, WMF n’est pas nécessaire.

Installation manuelle de PowerShell 7

D’abord, téléchargez PowerShell 7. Pour ce faire, rendez-vous sur la page GitHub Releases pour PowerShell et trouvez la version que vous souhaitez installer. Pour cet article, nous utilisons la version PowerShell 7.0.0 preview 3. Sous Windows, descendez un peu et téléchargez la version PowerShell-7.0.0-preview.3-win-x86.msi MSI package et exécutez-le.

Écran de bienvenue de l'installation de PowerShell 7
Écran de bienvenue de l’installation de PowerShell 7

L’assistant vous posera quelques questions simples comme l’endroit où vous souhaitez que PowerShell soit installé. Si vous souhaitez exécuter plusieurs versions de PowerShell côte à côte, veillez à utiliser des dossiers d’installation distincts.

L’assistant vous demandera également si vous souhaitez enregistrer PowerShell à la PATH variable d’environnement. L’ajout du dossier d’installation de PowerShell à la variable d’environnement PATH vous permet d’appeler PowerShell à partir de n’importe quel autre terminal, comme une version différente de PowerShell ou même cmd.exe.

Une autre option est Enregistrer PowerShell au manifeste de journalisation des événements de Windows. Lorsqu’elle est activée, cette option tire parti de la journalisation robuste qui est livrée avec cette version de PowerShell.

Puis, il vous est demandé si vous souhaitez activer PowerShell Remoting dès le départ, ce qui peut aider à toutes les tâches à distance.

Enfin, il vous sera demandé si vous souhaitez ajouter les menus contextuels ‘Ouvrir ici’ à l’explorateur. Cette option vous permet de faire un clic droit sur n’importe quel dossier lorsque vous naviguez dans l’Explorateur Windows et d’ouvrir une fenêtre PowerShell dans ce répertoire de travail.

Bien que les deux derniers soient complètement optionnels et à votre discrétion, je vous recommande fortement d’activer les deux premiers, comme ceci :

Choosing defaults in PowerShell 7 install
Choosing defaults in PowerShell 7 install

Une fois que vous avez répondu à toutes leurs questions, cliquez sur Next et l’installation commencera.

Ouvrir PowerShell 7

Une fois installé, vous pouvez exécuter PowerShell 7 en ouvrant n’importe quel terminal de ligne de commande et en tapant pwsh-preview.

Notez que vous n’utiliserez plus ce nom de commande une fois que la version 7 de PowerShell sera sortie de la phase de  » preview « . Une fois qu’elle sera sortie de la phase d’aperçu, vous pourrez lancer PowerShell 7 avec pwsh.

Installation de PowerShell 7 avec PowerShell

Le responsable de l’équipe PowerShell de Microsoft, Steve Lee, a tweeté un moyen pratique d’installer PowerShell 7 à l’aide de la cmdlet Invoke-RestMethod de PowerShell. Cet extrait de code utilise la commande pour interroger le dépôt PowerShell GitHub, télécharger un script d’installation qui télécharge et installe ensuite PowerShell 7 avec une seule ligne.

Vous trouverez ci-dessous la syntaxe pour le faire. Ouvrez une console Windows PowerShell et exécutez le one-liner ci-dessous.

iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI -Preview"

Ce bout de code utilise le cmdlet PowerShell Invoke-Expressioniex dans le one-liner) pour accepter une chaîne et l’exécuter en tant que code PowerShell. Cette chaîne appelle la Invoke-RestMethod cmdlet (irm dans le one-liner) pour télécharger le script que Steve a écrit. Je vous recommande vivement d’utiliser le lien et de vérifier le code par vous-même avant d’exécuter cette commande !

Le snippet transmet ensuite les paramètres UseMSI et Preview au script pour récupérer et installer le dernier MSI.

Si vous souhaitez exécuter ce script de manière totalement silencieuse et sans surveillance, vous pouvez utiliser le paramètre Quiet. Au moment de la rédaction de cet article, le paramètre Preview pointe toujours vers PowerShell 7 Preview 3.

Installation de PowerShell 7 avec un module

Une autre façon pour vous d’obtenir l’installation de PowerShell 7 est d’utiliser le module PowerShell de Jeff Hicks appelé PSReleaseTools. Ce module, un peu comme le one-liner de Steve, aide à garder votre version de PowerShell à jour.

Avec deux lignes de PowerShell, vous pouvez télécharger le module avec Install-Module et en utilisant la commande Install-PSPreview qui vient avec le module PSRelaseTools, vous pouvez faire installer PowerShell 7 en avant-première.

PS51> Install-Module -name PSReleaseTools -ForcePS51> Install-PSPreview -mode Quiet

Déploiement de PowerShell 7 à l’échelle d’une organisation

Il existe quelques options lorsqu’il s’agit de déployer PowerShell 7 à l’échelle. Examinons deux façons courantes d’y parvenir.

Déploiement de PowerShell 7 avec un GPO

PowerShell est facile à déployer via GPO car il se prête facilement à d’autres technologies Microsoft alors qu’il est packagé sous forme de MSI. Lorsque vous déployez ceci via GPO, il y a quelques choses dont vous voudrez être conscient.

Utiliser une GPO basée sur l’ordinateur

Premièrement, assurez-vous d’utiliser une politique basée sur l’ordinateur et non une politique basée sur l’utilisateur. Vous pouvez en savoir plus sur les différences entre ces deux politiques ici. Sur les serveurs, le plus souvent, les utilisateurs ne se connectent pas de manière interactive ce qui lance un déploiement.

Si vous déployez PowerShell 7 sur un grand nombre de serveurs, vous voudrez que le déploiement se fasse indépendamment de l’interaction de l’utilisateur avec la machine.

Configurer un partage de fichiers réseau

Veuillez également vous assurer que le partage réseau sur lequel vous mettez le MSI PowerShell 7 a la permission appropriée définie pour permettre à tous les serveurs de votre environnement d’y accéder. Bien que cela dépasse le cadre de cet article, vous pouvez trouver plus ici sur la création de partages de fichiers.

Configurer la GPO

Vous allez ensuite créer votre GPO en suivant les étapes suivantes :

  • Placer le MSI dans le partage de fichiers attribué auquel vos ordinateurs peuvent accéder.
  • Créer une GPO de démarrage dans la console de gestion des stratégies de groupe. Vous pouvez en savoir plus sur les GPO de démarrage ici
  • Une fois la GPO créée, ouvrez-la et naviguez dans Configuration de l’ordinateur -> Paramètres du logiciel.
  • Cliquez avec le bouton droit de la souris sur Installation logicielle puis sélectionnez Nouveau -> Package.
  • Dans la boîte de dialogue, ajoutez le chemin UNC complet du MSI. Par exemple, si un partage de fichiers appelé dossier se trouve sur le serveur.namef, le chemin sera \\Nserver.name\Dossier\powershell-7.msi
  • Cliquez sur Ouvrir -> Assigné -> OK.

Rattacher le GPO au(x) OU requis

Une fois créé, attachez le GPO au(x) OU requis. Revenez dans quelques heures et le déploiement devrait être en grande partie terminé.

Vérifier la progression de l’installation du GPO

Si vous préférez une approche plus pratique pour vérifier votre déploiement de la stratégie de groupe, consultez ce court script ci-dessous qui créera un rapport avec l’objet de stratégie de groupe appliqué aux ordinateurs d’un OU spécifique.

Veillez à changer le nom distinctif de l’OU (OU=Contrôleurs de domaine,DC=mylab,DC=local) pour votre OU.

Notez que vous pouvez exécuter ceci sur un contrôleur de domaine ou un ordinateur joint au domaine avec le module PowerShell ActiveDirectory installé.

$computers = Get-ADComputer -Filter * -SearchBase 'OU=Domain Controllers, DC=mylab, DC=local'ForEach ($computer in $computers) { Get-GPResultantSetOfPolicy -Computer $computer -ReportType HTML -Path c:\temp\$computer.html}

Si vous souhaitez vérifier ponctuellement des serveurs spécifiques, la commande ci-dessous vous sera utile. Elle atteint un ordinateur distant ($computer) et vérifie la version de PowerShell installée sur cet ordinateur avec $PSVersionTable.PSVersion.

PS> Invoke-Command -Computername $computer -Scriptblock {$PSVersionTable.psversion}

Enfin, si vous trouvez des ordinateurs qui n’ont pas la stratégie de groupe appliquée, vous pouvez exécuter la commande suivante et elle forcera la stratégie de groupe à se rafraîchir sur l’ordinateur cible :

PS> Invoke-GPUpdate -Computer $computer

Déploiement de PowerShell 7 avec PowerShell Remoting

Une autre excellente façon de déployer PowerShell sur des machines distantes est avec PowerShell ! Bien que cela puisse sembler un peu méta, PowerShell est un langage de script assez robuste pour aider à l’installation de son remplaçant.

Avant de commencer, assurez-vous que le remoting PowerShell est activé et que vous avez configuré les autorisations appropriées pour exécuter des commandes à distance à travers votre environnement. Vous pouvez trouver un guide sur la façon d’activer PSRemoting via GPO ici.

Puisque vous connaissez le one-liner qui pour installer PowerShell couvert plus tôt, vous devrez « envelopper » cette commande dans un scriptblock et dire à la commande Invoke-Command de l’exécuter à travers une ou plusieurs machines distantes.

Voici un exemple de bouclage d’une liste d’ordinateurs stockés dans le tableau $computers puis d’exécution du script install-powershell.ps1 sur chacun d’eux.

$creds = $(Get-Credential)ForEach ($computer in $computers) { Invoke-Command -ComputerName $computer -Credential $creds {iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI -Preview -Quiet"}}

Résumé

Il y a tellement de raisons de maintenir votre version de PowerShell à jour, au moins sur votre propre machine si ce n’est dans votre environnement de production. Vous pourrez utiliser les dernières fonctionnalités, profiter des améliorations de performance, et même vous assurer que votre ancien code ne se brisera pas sur les nouvelles versions.

Comme vous pouvez le voir, il existe de nombreuses façons de télécharger et d’installer les nouvelles versions de PowerShell. Choisissez la méthode qui vous convient dans votre environnement et continuez à PowerSheller !

Lecture complémentaire

  • Comment vérifier votre version de PowerShell (de toutes les manières !)

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *