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é :
- 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