1-Introduction

Historique:

  • Avant PowerShell, il y avait des fichiers Batch (.bat)

  • Concurrence à Linux pour les scripts Bash (.sh) ou CShell (.csh)

  • C’étaient un regroupement de commandes qui étaient exécutées en lignes de commandes dans command.exe(MS-DOS) et cmd.exe(WINDOWS NT)

  • En 2003, sous le nom de code de Monade, débute ce qui deviendra PowerShell, simple d’utilisation et puissant

  • En 2009, Windows 7 intègre nativement la version 2.0, qui propose l’édition de scripts

Utilité:

Automatisation de tâches et procédures en utilisant des scripts

  • Gain de temps

  • Minimalisation des erreurs

Exemples d’utilisation:

  • Création/suppression de comptes utilisateurs

  • Modification et copie de fichiers d’un serveur à un autre pour les intégrer dans une GED

  • Surveillance de services, d’espaces disques, process,… avec envoi d’emails/alertes

  • Configuration d’un serveur sans interface graphique

  • Collecte de données ou administration sur des machines physiques distantes

  • Installation de systèmes ou programmes

Définition et informations:

Interface développée par Microsoft, remplaçant l’invite de commandes et ajoutant des fonctionnalités permettant d’interagir avec le système et de scripter

Langage interprété et non typé

Outil en lignes de commandes similaire à LINUX

Héritage du Framework.Net, version 2.0 requise au minimum

Orienté objets

Versions natives:

  • Windows 7 et WS 2008 => PowerShell 2.0

  • Windows 8 et WS 2012 => PowerShell 3.0

  • Windows 8.1 et WS 2012 R2 => PowerShell 4.0

  • Windows 10 et WS 2016 => PowerShell 5.0 (et 5.1 avec Windows Update)

  • Windows 11 et WS 2022 => PowerShell 5.1

La version 7.3 est multi-plateforme.

Lors du choix de l’OS, il faut être conscient que la version 11 demande plus de ressources en espace disque, RAM et CPU.

Installation et préparation de la VM:

Utilisation d’une machine virtuelle, pour avoir les droits d’administration

2 interfaces différentes, en 32 et 64 bits

  • CLI(Command Line Interface) est la console en lignes de commande

  • ISE(Integrated Scripting Environment) permet l’édition de scripts et offre la mise en couleur pour les différentes parties de la commande et les listes déroulantes

Suite à la l’abandon de la mise à jour de ISE par MS, pour coder, il est préférable d’utiliser VS Code avec l’extention Powershell.

Configuration de Visual Studio Code pour PowerShell:

Mise à jour de l’aide avec Update-Help

Pour des raisons de sécurité, Powershell, par défaut défini un accès Restricted pour l’utilisation des scripts

Il y a plusieurs niveaux de sécurité :

../_images/Capt-execpolicy.PNG
Politique d’exécution:

  • Restricted pas d’exécution de scripts

  • AllSigned pour les scripts signés numériquement, certificat obtenu avec autorité de certification (CA=Certification Authority)

  • RemoteSigned pour les scripts créés et enregistrés localement

  • Unrestricted pour tous les scripts, situation la moins sécurisée

  • Bypass similiaire à Unrestricted, mais sans message de mise en garde

On peut connaître la stratégie de sécurité avec la commande Get-ExecutionPolicy

On la modifie avec la commande Set-ExecutionPolicy -ExecutionPolicy unrestricted

Trouver la version installée avec $PSVersionTable.PSVersion