PowerShell
Introduction à PowerShell
PowerShell est une plateforme permettant l’exécution de scripts, il a également la fonction d’interpréteur de commandes.
1. Présentation de PowerShell
Cette plateforme n’a cessé de s’enrichir et offre une multitude de jeux de commandes. Les commandes DOS peuvent également être utilisées avec la console PowerShell et ce à l’aide des alias (get-alias pour avoir la correspondance).
Depuis Windows Server 2008 R2 et Windows 7, PowerShell est directement intégré au système d’exploitation. Pour les plus anciens (Windows Vista, XP, 2008…), il est nécessaire de procéder à une installation. Notons également que certaines applications (par exemple : Microsoft Deployment Toolkit) nécessitent obligatoirement la présence de la plateforme PowerShell pour fonctionner.
2. La console PowerShell
La saisie des différentes commandes s’effectue par le biais de la console PowerShell. Cette dernière a un aspect graphique très proche d’une invite de commandes DOS.
L’autocomplétion d’un chemin, d’un nom de commande, etc. peut s’effectuer à l’aide de la touche [Tab]. Pour rappel, l’autocomplétion consiste à saisir le début d’une commande ou d’un chemin, le système tente de compléter la suite.
Enfin, la combinaison [Ctrl] C ou [Ctrl][Pause] permet de mettre fin à l’exécution de l’instruction courante pour la première combinaison et de mettre fin à l’exécution de la console pour la seconde.
3. La console Windows PowerShell ISE
Cette console facilite la création de scripts PowerShell. Il est donc possible pour ceux qui le souhaitent et d’effectuer la création de scripts à l’aide...
Aide avec PowerShell
Nous avons tous à un moment donné saisi le fameux /? dans une console DOS, ceci nous permettant de récupérer la syntaxe de la commande et un descriptif des différents commutateurs.
Avec PowerShell, la syntaxe est quelque peu différente. En effet, l’aide s’affiche en saisissant l’instruction help commande.
Les fichiers d’aide peuvent aisément être mis à jour. Il est néanmoins nécessaire d’avoir des droits d’administrateur et de lancer la console en tant qu’administrateur.
Une connexion internet est également nécessaire.
Cette opération s’effectue avec la commande update-help.
Cette mise à jour concerne uniquement les fichiers de la langue utilisée et du module actif. Si vous souhaitez mettre à jour le module dism alors que le module actif est AppLocker, il faut rajouter à la commande précédente le commutateur -Module dism.
Il est possible de déposer les fichiers d’aide sur un partage réseau afin que les postes qui ne sont pas raccordés à Internet puissent profiter de la mise à jour. L’opération va cette fois être scindée en deux parties (copie des fichiers sur un partage réseau et mise à jour des postes depuis ce partage réseau).
Pour effectuer cette opération, l’instruction suivante doit être utilisée : Save-Help -DestinationPath CheminUNC -Force
Enfin, il est nécessaire d’exécuter sur les postes la commande suivante : Update-Help -SourcePath "CheminUNC" -force
La syntaxe PowerShell
Une commande est constituée d’un verbe et d’un nom séparés par un tiret (-). Le verbe a pour but de décrire l’action effectuée :
-
Get (obtenir une information)
-
Set (effectuer une action)
-
Add...
Le verbe est complété par un nom (Acl, etc.). Ce dernier constitue la commande.
Comme pour les commandes DOS, l’analyse de la syntaxe PowerShell n’est pas sensible à la casse.
1. Les commentaires
Comme dans tous langages de programmation, il est possible de placer des commentaires dans les scripts.
Pour différencier une instruction d’un commentaire, il faut utiliser le caractère dièse "#" en début de ligne. Ainsi la ligne est considérée comme commentaire.
De plus, l’ajout de commentaire après l’instruction peut être effectué.
Pour commenter un bloc entier, une syntaxe particulière doit être utilisée.
Les caractères <# doivent être insérés au début du bloc de commentaire puis, afin d’en marquer la fin, on insère les caractères #>.
La ligne mise en commentaire ne sera pas prise en compte par l’interpréteur de commandes.
2. Les guillemets
Il est nécessaire de délimiter les chaînes de caractères, ceci afin d’aider la compréhension de la syntaxe par l’analyseur syntaxique. Les guillemets (") sont généralement utilisés pour effectuer cette opération. Cette règle s’applique également à PowerShell.
Néanmoins, deux méthodes peuvent être utilisées pour délimiter une chaîne de caractères.
-
Les guillemets doubles " " qui permettent la substitution de variable.
-
Les guillemets simples ’ laissent le texte tel quel.
-
Reprenons...
Les boucles avec PowerShell
Les boucles sont très utiles dans un langage de programmation pour exécuter x fois une même action.
1. La boucle While
Ce type de boucle permet de répéter les instructions présentes dans la boucle tant que la condition est vérifiée (vraie).
Cette boucle s’écrit de la manière suivante :
While condition
{
Instruction1
Instruction 2
...
}
2. La boucle Do-While
Ce type de boucle est identique à la précédente, néanmoins le test est effectué à la fin.
La syntaxe est la suivante :
Do
{
Instruction1
Instruction 2
...
}
While condition
La boucle est obligatoirement exécutée au moins une fois, le test s’effectuant à la fin.
3. La boucle For
Ce type de boucle offre l’avantage de pouvoir déterminer le nombre de fois où le bloc d’instructions doit être exécuté. L’exécution est effectuée tant que la valeur indiquée au départ n’est pas atteinte. Le pas d’incrémentation est également déclaré.
La syntaxe de ce type de boucle est la suivante :
For (<Valeur Initiale> ; <Condition> ; <Increment>)
{
Instruction 1
Instruction 2
}
PowerShell V5
Avec l’arrivée de Windows Server 2016, une nouvelle version de PowerShell a vu le jour. Cette section présente quelques-unes de ces nouveautés.
Une nouvelle cmdlet, Write-Information, a été ajoutée. Elle permet de spécifier comment les flux d’information pour une commande sont traités. Les paramètres InformationVariable et InformationAction permettent de déterminer la manière dont les flux d’information sont affichés.
Il est maintenant possible de gérer les archives. En effet, un nouveau module le permettant a été intégré à la plateforme. Les mêmes opérations pouvaient être effectuées sur les anciennes versions mais nécessitaient l’ajout de modules développés par la communauté Microsoft.
Il est donc possible, et cela de manière native, de générer une archive (compress-archive) ou d’effectuer une extraction (expand-archive). Attention néanmoins, il est important de noter que seules les extensions zip sont gérées. L’opération de mise à jour (ajout d’un fichier dans l’archive) ainsi que le taux de compression peuvent être définis au moment de la génération.
La commande New-item a été enrichie, elle offre désormais la possibilité de créer des raccourcis. Pour cela, le type symboliclink doit être utilisé.
Comme pour Office, PowerShell est maintenant "gérable" par l’intermédiaire de stratégies de groupe. Un fichier ADMX est présent dans le système d’exploitation et donne accès à quelques paramètres.