Utiliser Powershell 6 dans Visual Studio Code Comme avec ISE

Comment avoir PowerShell ISE avec PowerShell Core v6…
En utilisant Visual Studio Code avec un plugin

Visual Studio Code Version 1.22.2 (x64)
Extension PowerShell version 1.6.0

L’utilisation de Visual Studio Code pour coder en Powershell vous permettra d’avoir une interface assez complète et surtout de faire du debogage en mode pas à pas avec points d’arrêts.

Visual Studio Code est un éditeur de code Microsoft léger.

Pour l’installer:
https://code.visualstudio.com

Une fois installé cliquez sur l’icone Extension en bas à gauche

Puis en haut dans saisissez powershell et sélectionnez le premier résultat (PowerShell 1.6.0)

Installez l’extension

Rechargez, il ne vous reste plus qu’à créer un nouveau fichier (Fichier => Nouveau Fichier) ou d’en ouvrir un existant, de l’enregistrer avec l’extension ps1 et de tester les commandes (F8 pour exécuter la sélection, F5 le script complet)

Petit aperçu du debogage, avec l’affichage des variables, la possibilité d’ajouter des espions (manuellement en saisissant la variable)


J’étais un peu sceptique à l’idée de changer d’éditeur comme ISE car on s’habitue à nos logiciels, mais finalement Visual Studio Code apporte des outils en plus, et sans doute la possibilité de personnaliser l’éditeur étant donné que l’on passe par des plugins, et pourquoi pas s’en servir pour coder sur un autre langage avec …

Avec la liste de langage supporté sans compter les extensions, il se pourrait que j’en fasse un outils utilisé au quotidien .

Nb:
Si vous avez le module PowerShellGet d’installé, vous pouvez installer Visual Studio Code + l’extension PowerShell avec la ligne de code suivante

Un petit lien sur les possibilités de Visual Studio Code:

https://vscodecandothat.com

PowerShell XML => ajouter un attribut à un élément

Ajouter un attribut à un noeud xml avec powershell.
Il est à noter que vous pouvez faire une fonction si vous avez plusieurs attributs à ajouter à votre noeud, pour cela vous n’avez pas besoin de ré-affecter la valeur de l’élément, le passage par paramètre de l’élément suffit à lui seul pour le mettre à jour, donc pas besoin de return …

testé avec

Ce qui donne:

PowerShell : mesurer le chargement d’une page web

Mesurer le temps de chargement et la taille d’une page web avec PowerShell
Code testé avec la version 5.1.16299.98 de powerShell ISE sur windows 10

 

Powershell V5 pour windows 10, Windows Management Framework 5.1

Powershell 5 est installé par défaut sur votre système d’exploitation windows 10

Le dossier d’installation se trouve dans le répertoire suivant:

C:\Windows\System32\WindowsPowerShell\v1.0

Vous pouvez retrouver cette information avec une commande powershell:

$PsHome

Pour connaitre la version powershell installée exécutez la commande suivante:

$PSversionTable

ce n’est pas parceque vous voyez le dossier v1 que votre version powershell est en V1 …
Dans mon cas c’est la 5.1.15063.674

Pour Windows 7 Windows 8 et serveur 2012 vous pouvez téléchargez  Windows Management Framework 5 qui contient la version 5 de powershell
https://www.microsoft.com/en-us/download/details.aspx?id=50395

Infos diverses:
– PowerShell ISE est une version améliorée du powershell de base
– la gestion du copier/coller est plus simple sur PowerShell (par rapport à cmd.exe)
– Il est possible d’utiliser les commandes phonegap cordova avec la console PowerShell
à ce jour la dernière version est la Windows Management Framework 5.1

Powershell ISE:
– la mise en page se fait dans le menu Options

Pour modifier les couleurs selon les messages (erreurs etc…)

$configColor = (Get-Host).PrivateData

$configColor.ErrorForegroundColor    = « Red »
$configColor.ErrorBackgroundColor    = « Black »
$configColor.WarningForegroundColor  = « Yellow »
$configColor.WarningBackgroundColor  = « Black »
$configColor.DebugForegroundColor    = « Yellow »
$configColor.DebugBackgroundColor    = « Black »
$configColor.VerboseForegroundColor  = « Yellow »
$configColor.VerboseBackgroundColor  = « Black »
$configColor.ProgressForegroundColor = « Yellow »
$configColor.ProgressBackgroundColor = « DarkCyan »

Reset de la config des couleurs:
[Console]::ResetColor()
Set-PSReadlineOption -ResetTokenColors

Ouvrir powershell dans un dossier spécifique en ligne de commande:

powershell -NoExit -Command « Set-Location ‘d:\\dossier\sousdossier' »
powershell_ise -NoExit -Command « Set-Location ‘d:\\dossier\sousdossier' »

Equivalent de rm -rf (linux) pour powershell

rm .\dossier\ -Recurse -Force

Afficher l’historique des commandes utilisées dans la console

h
history
ghy

Répéter une commande de l’historique avec son id (exemple le 3 ème)

Invoke-History 3
ihy 3
r 3

Afficher la liste des variables d’environnement:

Get-ChildItem Env:
Dir Env
ls Env
gci Env

Récupérer le dernier fichier modifié du répertoire courant

(Get-ChildItem | Sort {$_.LastWriteTime} | select -last 1).name

Modifier la taille/largeur des lignes affichées sur la console

$psfenetre = (get-host).ui.rawui
$taille= $psfenetre .buffersize
$taille.width = 600
$psfenetre.buffersize = $taille

Raccourcis clavier pour supprimer la ligne courante

echap

Autoriser l’exécution des fichier script ps1 powersghell

Impossible de charger le fichier …ps1, car l’exécution de scripts est désactivée sur ce système. Pour plus d’informations, consultez about_Execution_Policies

Plusieurs solutions:
Désactiver pour un script

powershell -ExecutionPolicy unrestricted -Command « iex .monScript.ps1 »

Désactiver pour un utilisateur

Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser -Force
Désactiver définitivement sur le poste
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Force

Astuce copier-coller powershell_ISE

Vous pouvez conserver le contenu de votre copier en mémoire (press papier) tout en effectuant une copie d’un contenu de texte en provenance d’une page d’un navigateur par exemple, il suffit de sélectionner votre bout de texte et de faire un drag & drop sur votre console …

Powershell recherche dans fichier avec conditions OR AND

Pour lire un fichier on utilise la commande suivante:
Get-Content (alias cat ou gc ou type)

Pour ajouter une condition on utilise la commande:
Where-Object (alias where ou ?)

Pour faire la recherche j’utilise les expressions régulières avec la commande:
-match

Enfin pour mettre du conditionnel
-or
-and

Ce qui donne

pour paginer l’affichage il suffit d’y ajouter derrière: