FreshRSS

🔒
❌ À propos de FreshRSS
Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
À partir d’avant-hierFlux principal

Visual Studio Code en version Web ? C’est pour bientôt !

2 septembre 2021 à 17:01

Microsoft a révélé accidentellement que Visual Studio Code for the Web était disponible en version Preview ! Finalement, il ne l'est pas encore, mais cela ne devrait plus tarder !

L'éditeur de code Visual Studio Code existe déjà en version Desktop et il s'agit de la version gratuite de Visual Studio. Prochainement, Microsoft va proposer une version en ligne (toujours gratuite) de son éditeur de code, accessible directement à partir d'un navigateur à l'adresse suivante : https://vscode.dev. Récemment, c'est GitHub qui a lancé son propre éditeur en ligne, accessible à partir de son compte à l'adresse suivante : https://github.dev.

Avec cette version Web, Microsoft précise qu'il sera possible d'ouvrir ses projets hébergés sur GitHub, mais aussi en local sur sa machine, et par la suite sur Azure Repos. Puisqu'il s'agit d'une version Web, ce ne sont pas les ressources de votre machine qui sont utilisées pour exécuter votre code.

Bien qu'elle devrait être plus légère, difficile de savoir quelles seront les fonctionnalités manquantes par rapport au client lourd. Ce qui est sûr, c'est qu'il sera possible d'éditer le code, et même plusieurs fichiers en même temps. Les erreurs de codes seront mises en évidence.

Aperçu de Visual Studio Code for the Web
Aperçu de Visual Studio Code for the Web

Dans le même temps, Microsoft a publié Visual Studio Code v1.6 en mode desktop. Sous Windows 11, il sera possible de télécharger Visual Studio et Visual Studio Code directement à partir du Microsoft Store. Une bonne nouvelle qui confirme également les intentions de Microsoft avec son nouveau Store.

Que pensez-vous de l'utilité de VSCode en mode Web ?

Source

The post Visual Studio Code en version Web ? C’est pour bientôt ! first appeared on IT-Connect.

PowerShell grep : rechercher des chaînes de caractères avec Select-String

23 août 2021 à 11:00

I. Présentation

Dans ce tutoriel, nous allons voir comment utiliser grep en PowerShell grâce à la commande Select-String dans le but de rechercher une chaîne de caractères dans un ensemble de fichiers.

La commande "grep" est très populaire sous Linux et elle est très appréciée des administrateurs système. En effet, elle permet de rechercher des chaînes de caractères au sein de fichiers présents sur votre machine, de manière efficace. Au quotidien, c'est très pratique pour rechercher un mot clé dans un fichier de configuration ou effectuer une recherche au sein d'un fichier de log.

Sous Windows, il existe une commande équivalente à grep par l'intermédiaire de PowerShell. Il s'agit de la commande Select-String et je vous propose d'apprendre à l'utiliser en lisant cet article. Il y a également une autre alternative sous Windows, par l'intermédiaire de l'outil natif findstr.exe.

II. Les paramètres de Select-String

La commande Select-String contient de nombreux paramètres qui vont être utiles pour affiner notre filtre de recherche. Avant de passer à la pratique, il me semblait intéressant de vous lister et de vous expliquer les paramètres principaux.

-AllMatches

Rechercher toutes les occurrences de notre chaîne de caractères / de notre filtre sur une même ligne. Par défaut, Select-String va s'arrêter dès qu'il trouvera un premier résultat sur une ligne, ce qui peut s'avérer contraignant. Avec ce paramètre, nous aurons tous les résultats, sans limites. Autrement dit, sans -AllMatches, on peut avoir seulement un résultat par ligne.

-CaseSensitive

Par défaut, la recherche n'est pas sensible à la casse. Lorsque ce paramètre est défini, la recherche va tenir compte de la casse, c'est-à-dire des minuscules et majuscules.

-Context

Paramètre très intéressant qui va permettre d'indiquer combien de lignes avant et après le match (résultat) il faut afficher, en plus de la ligne correspondante à la recherche. Je trouve cela particulièrement intéressant lorsque l'on s'intéresse à des logs.

-Encoding

Permets de spécifier l'encodage à utiliser. Par défaut "utf8NoBOM", mais il y a d'autres choix : ascii, oem, unicode, utf8, utf32, etc.

-Exclude

Exclure certains fichiers du périmètre de la recherche. Par exemple, tous les fichiers qui utilisent une extension spécifique.

-Include

Inclure uniquement les fichiers correspondants au filtre -Inclure. Par exemple, pour effectuer une recherche uniquement sur les fichiers .log.

-InputObject

Rechercher dans un objet existant (envoyé en entrée) plutôt qu'au sein des fichiers stockés dans un dossier.

-NotMatch

Afficher les résultats qui ne correspondent pas au filtre de recherche / recherche inverse.

-Pattern

C'est ici que l'on spécifie le filtre de la recherche, ce qui peut être une simple chaîne de caractères, plusieurs chaînes de caractères, mais aussi un filtre sous la forme d'une expression régulière (regex).

-Path

Ce paramètre basique sert à spécifier le répertoire dans lequel effectuer la recherche ou le fichier dans lequel rechercher.

Maintenant que le décor est planté, passons à la pratique : connaître les paramètres de Select-String c'est bien, savoir les utiliser c'est encore mieux.

III. PowerShell grep avec Select-String : exemples

Pour mieux comprendre le fonctionnement de la commande "grep" à la sauce Windows, je vous propose quelques exemples.

A. PowerShell - Rechercher une chaîne de caractères dans un fichier

Commençons par rechercher une chaîne de caractères simple dans un fichier spécifique : la chaîne "florian" dans le fichier "data.csv" qui contient une liste d'utilisateurs.

Voici le contenu du fichier :

prenom;nom;
florian;burnel;
gerard;mensoif;
vincent;tyme;
maude;zarella;

Voici la commande recherche :

Select-String -Path "C:\TEMP\GREP\Data.csv" -Pattern "florian"

Voici le résultat :

Exemple d'utilisation de Select-String (grep) en PowerShell

Le résultat est correct puisqu'il a trouvé la ligne avec la chaîne "florian". Le terme est surligné dans le résultat pour bien montrer son emplacement dans la liste. Plus précisément, voici comment se décompose la ligne :

TEMP\GREP\Data.csv:2:florian;burnel;
<fichier-où-se-situe-le-résultat>:<numéro de ligne>:<contenu de la ligne>

Il y a plusieurs propriétés associées à cette commande. Par exemple, nous pouvons récupérer le numéro de la ligne :

(Select-String -Path "C:\TEMP\GREP\Data.csv" -Pattern "florian").LineNumber

Pour visualiser toutes les propriétés et méthodes disponibles, on utilisera "Get-Member" (gm).

Select-String -Path "C:\TEMP\GREP\Data.csv" -Pattern "florian" | gm

B. PowerShell - Rechercher une chaîne de caractères dans plusieurs fichiers

Nous pouvons rechercher la chaîne "florian" dans plusieurs fichiers, et pas seulement dans le fichier "data.csv". Si l'on veut rechercher ce terme dans tous les fichiers du dossier "C:\TEMP\GREP", on utilisera cette commande :

Select-String -Path "C:\TEMP\GREP\*" -Pattern "florian"

Voici le résultat :

TEMP\GREP\Data.csv:2:florian;burnel;
TEMP\GREP\Data3.csv:4:florian;burnel;

Cette fois-ci, la commande a trouvé deux résultats différents, au sein de deux fichiers distincts.

C. PowerShell - Rechercher plusieurs chaînes de caractères

Si l'on veut rechercher plusieurs chaînes de caractères différentes, il n'est pas nécessaire d'utiliser plusieurs commandes : le paramètre -Pattern prend en charge les valeurs multiples. Il suffit de les séparer par une virgule.

Voici un exemple :

Select-String -Path "C:\TEMP\GREP\*" -Pattern "florian","tyme"

Voici le résultat :

Lorsque l'on commence à rechercher plusieurs chaînes dans plusieurs fichiers, il me semble pertinent de revoir un petit peu la mise en forme du résultat. Pour cela, nous allons nous aider du cmdlet Select-Object pour sélectionner les propriétés que l'on souhaite afficher.

Par exemple, on peut récupérer le nom du fichier, le pattern trouvé et le contenu de la ligne :

Select-String -Path "C:\TEMP\GREP\*" -Pattern "florian","tyme" | Select-Object FileName, Pattern, Line

Ce qui donne :

Note : on pourrait remplacer "Filename" par "Path" pour afficher le chemin complet vers le fichier.

Pratique, n'est-ce pas ? 🙂

Pour affiner la recherche et sélectionner uniquement les fichiers TXT, il y a deux manières de procéder.

Note : au préalable, je fais une copie du fichier data.csv en data10.txt pour que cela fonctionne.

Tout d'abord, on peut indiquer le filtre directement au niveau de -Path, comme ceci :

Select-String -Path "C:\TEMP\GREP\*.txt" -Pattern "florian","tyme"

Sinon, on peut utiliser le paramètre -Include pour filtrer sur une extension de fichiers. Ce qui donne la commande suivante pour un filtre sur .TXT :

Select-String -Path "C:\TEMP\GREP\*" -Include "*.txt" -Pattern "florian","tyme"

L'avantage de -Include, c'est que l'on peut préciser plusieurs filtres. Voici un exemple pour .TXT et .CSV :

Select-String -Path "C:\TEMP\GREP\*" -Include "*.txt","*.csv" -Pattern "florian","tyme"

D. PowerShell - Rechercher à l'aide du paramètre -Context de Select-String

Le paramètre -Context permet d'afficher la ligne où le pattern a été trouvé, ainsi que les X lignes précédentes et les X lignes suivantes. Si l'on utilise -Context 3, on va obtenir 7 lignes au total : 3 lignes avant la ligne où le pattern est présent, la ligne où le pattern est présent, et 3 lignes après la ligne où le pattern est présent.

Voici un exemple où je recherche les erreurs 404 au sein d'un fichier de log de Nginx :

Select-String -Path "C:\TEMP\GREP\access-light.log" -Pattern "404" -Context 3

On peut gérer de façon indépendante le nombre de lignes avant et après à afficher. Il suffit de préciser deux valeurs séparées par une virgule. La première valeur correspond au nombre de lignes avant et la seconde au nombre de lignes après.

Par exemple, pour afficher une ligne avant et trois lignes après, cela donne :

Select-String -Path "C:\TEMP\GREP\access-light.log" -Pattern "404" -Context 1,3
Exemple d'utilisation de Select-String (grep) en PowerShell avec le paramètre -Context

Grâce au caractère ">" on peut repérer facilement la ligne où a été trouvé le pattern.

Sur un fichier très conséquent, la sortie dans la console peut être importante. On peut exporter le résultat de la recherche vers un autre fichier, comme ceci (vers le fichier C:\TEMP\resultat-grep.txt) :

Select-String -Path "C:\TEMP\GREP\access-light.log" -Pattern "404" -Context 1,3 | Out-File -Path "C:\TEMP\resultat-grep.txt"

On pourrait aussi limiter l'affichage au premier résultat ou au X premiers résultats. Pour cela, on va coupler Select-String à l'utilisation de Select-Object :

Select-String -Path "C:\TEMP\GREP\access-light.log" -Pattern "404" -Context 0,1 | Select-Object -First 1

On peut aussi affiner avec Select-Object et exporter dans un fichier ce résultat affiné :

Select-String -Path "C:\TEMP\GREP\access-light.log" -Pattern "404" -Context 1,3 | Select-Object -First 1 | Out-File -Path "C:\TEMP\resultat-grep.txt"

E. PowerShell - Recherche récursive avec Select-String

Seule, la commande Select-String recherche uniquement dans le dossier courant, mais pas de manière récursive c'est-à-dire que les sous-dossiers ne sont pas pris en compte. Pour utiliser la récursivité, il faut s'appuyer sur la commande Get-ChildItem puisqu'elle va permettre de récupérer la liste de l'intégralité des fichiers et dossiers. Ce résultat sera envoyé à la commande Select-String via le pipe "|". À partir de là, on peut effectuer un grep récursif à l'aide de PowerShell.

On viendra positionner le répertoire -Path au niveau de Get-ChildItem donc il n'est plus nécessaire de le spécifier au sein de Select-String.

Get-ChildItem -Path "C:\Temp\GREP\" -Recurse | Select-String -Pattern "florian"

Puisque ls et dir sont des alias de Get-ChildItem, on peut les utiliser également.

ls "C:\Temp\GREP\" -Recurse | Select-String -Pattern "florian"
dir "C:\Temp\GREP\" -Recurse | Select-String -Pattern "florian"

On peut voir sur l'image ci-dessous que nous avons un nouveau résultat, au sein du sous-dossier "SOUS-DOSSIER", ce qui n'était pas le cas précédemment.

PowerShell : comment utiliser Select-String de manière récursive ?

F. PowerShell - Rechercher toutes les adresses IP dans un fichier

Pour finir, je vous propose un dernier exemple où l'on va rechercher les adresses IP dans un fichier. Nous n'allons pas rechercher une adresse IP précise, car c'est trop facile, mais l'on va rechercher toutes les adresses IP présentes dans le fichier de log "access.log".

Pour cela, on va s'appuyer sur une expression régulière. Comme je l'expliquais dans mon tutoriel sur le sujet, on peut rechercher une adresse IP avec le pattern suivant :

\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}

Bien qu'il ne soit pas ultra précis, car il autorise les adresses IP 300.300.300.300, 400.500.600.700, etc... Il devrait être suffisant pour s'attaquer à ce fichier de log. Il suffit de préciser l'expression régulière au sein du paramètre -Pattern :

Select-String -Path "C:\TEMP\GREP\access.log" -Pattern "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"

Ce qui donne :

Rechercher toutes les adresses IP présentes dans un fichier

Suite à cette recherche, on pourrait facilement obtenir la liste de toutes les adresses IP référencées dans ce fichier. Pour cela, il faut regarder au sein des différents matchs de la Regex avec une boucle sur $_.Matches et une seconde boucle pour récupérer la valeur de chaque match. Ce qui donne la commande suivante :

Select-String -Path "C:\TEMP\GREP\access.log" -Pattern "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}" | Foreach{ $_.Matches } | Foreach{ $_.Value }

Ensuite, on obtient la liste des adresses IP trouvées dans le fichier access.log :

On pourrait affiner notre pattern et rechercher toutes les requêtes qui correspondent à un réseau IP spécifique, ou qui commence d'une certaine façon. Par exemple, pour rechercher toutes les requêtes (c'est-à-dire toutes les lignes) où l'on trouve une adresse IP sous la forme "211.X.X.X", on fera :

Select-String -Path "C:\TEMP\GREP\access.log" -Pattern "211.\d{1,3}.\d{1,3}\.\d{1,3}"

De la même façon, on pourrait rechercher toutes les lignes avec une adresse IP sous la forme "192.168.X.X" :

Select-String -Path "C:\TEMP\GREP\access.log" -Pattern "192.168.\d{1,3}\.\d{1,3}"

Voilà, c'est la fin du dernier exemple sur l'utilisation de Select-String. Mais ce n'est pas terminé, il nous reste un petit bonus à découvrir.

IV. Bonus : créer un alias grep pour Select-String

Vous aimeriez pouvoir saisir "grep" plutôt que "Select-String" ? Alors j'ai une solution pour vous : la création d'un alias !

Il suffit de créer un alias de cette façon :

New-Alias grep Select-String

Ensuite, on peut utiliser grep à la place de Select-String, mais les paramètres restent les mêmes, bien entendu.

grep -Path "C:\TEMP\GREP\access.log" -Pattern "127.0.\d{1,3}\.\d{1,3}"
Créer un alias grep pour la commande Select-String

Attention, cet alias sera temporaire : lorsque la console PowerShell sera fermée, il sera supprimé. Pour le rendre persistant, je vous invite à lire mon tutoriel sur les alias en PowerShell : PowerShell - Alias

N'hésitez pas à partager vos astuces avec Select-String en PowerShell en postant un commentaire sur cet article ! 😉

The post PowerShell grep : rechercher des chaînes de caractères avec Select-String first appeared on IT-Connect.

Comment exécuter un script PowerShell sous Linux ?

24 juin 2021 à 11:00

I. Présentation

Nous vous parlons très souvent de PowerShell en étant sous Windows, mais il ne faut pas oublier que depuis quelques années, le langage de Microsoft est disponible sous Linux, mais aussi MacOS. Dans ce tutoriel, je vais vous expliquer comment exécuter un script PowerShell sous Linux.

PowerShell Core se base sur une version open source du framework .NET :  le .NET Core. La compatibilité avec les distributions Linux, dépends de la version de PowerShell utilisée : ce ne sera pas la même entre PowerShell 7.0 et PowerShell 7.1.

À l'heure où j'écris cet article, la dernière version stable est PowerShell 7.1.3 et elle est compatible avec Windows bien sûr, mais aussi avec diverses distributions Linux : Ubuntu, Debian, CentOS, RHEL, Fedora ou encore Alpine. Libre à vous d'utiliser une VM, une machine physique ou WSL sous Windows.

Je ne vais pas m'attarder sur l'installation de PowerShell sous Linux, car la méthode peut changer en fonction de la distribution que vous utilisez. Je vous invite à consulter la documentation de Microsoft, vous allez trouver votre bonheur !

II. Utiliser PowerShell sous Linux

Lorsque PowerShell est installé, vous pouvez ouvrir une console PowerShell à partir de votre shell Linux tout simplement avec la commande suivante :

pwsh

Ensuite, il ne reste plus qu'à exécuter vos commandes. L'avantage de ce mode interactif, c'est que vous bénéficiez de l'autocomplétion des commandes PowerShell. Il est à noter que les binaires Linux peuvent être appelés aussi directement depuis la console PowerShell.

Aperçu de la console PowerShell sous Linux

Quand vous avez terminé, pour retourner à votre shell, il suffira de faire :

exit

Attention, en ouvrant PowerShell de cette façon, vous ne pourrez pas exécuter de commandes qui nécessitent des privilèges élevés. Si vous désirez ouvrir une console PowerShell en tant qu'administrateur (si l'on peut dire ça comme ça), il faudra faire :

sudo pwsh

A utiliser avec précautions, bien sûr.

Néanmoins, si vous souhaitez seulement exécuter une commande, ce n'est pas nécessaire d'ouvrir une console... Il y a plus simple. En effet, nous pouvons utiliser l'argument -command ou -c.

Voici un exemple pour lister le contenu d'un répertoire :

pwsh -command "Get-Item /home/florian"

L'inconvénient, c'est qu'il n'y a pas l'autocomplétion, mais comme vous maîtrisez PowerShell ce n'est pas un problème. 😉

Dans le cas où la commande nécessite des privilèges élevés, il suffira d'ajouter "sudo" :

sudo pwsh -command "New-Item -Type File -Path /var/fichier.txt"

Intéressons-nous maintenant à l'exécution d'un script PowerShell sous Linux.

III. Exécuter un script PowerShell sous Linux

Commençons par créer un script... Pour cet exemple, ce script sera tout simple, nous allons récupérer la liste des utilisateurs de la machine Linux à l'aide du contenu du fichier "/etc/passwd".

Ce fichier contient plusieurs informations où les valeurs sont séparées par le caractère ":". On sait aussi que la première valeur correspond au nom de l'utilisateur. À partir de là, il ne reste plus qu'à récupérer la première valeur de chaque ligne.

Avant de créer le script, je vous invite à récupérer le chemin vers le binaire de PowerShell :

which pwsh

La valeur retournée devrait être :

/usr/bin/pwsh

On va utiliser cette valeur pour déclarer le shebang au début du script.

Désormais, nous sommes prêts à créer le script :

nano /home/florian/GetUser.ps1

On commence par ajouter le shebang sur la première ligne :

#! /usr/bin/pwsh

Puis, on ajoute la ligne qui va permettre de récupérer la liste des utilisateurs :

Get-Content "/etc/passwd" | Foreach-Object{ (($_).Split(":"))[0] }

En image, cela donne :

Un script PowerShell, sous Linux

Enregistrez le script... Maintenant, nous allons voir comment l'exécuter. Tout d'abord, comme n'importe quel script, il faut lui ajouter les droits d'exécution :

chmod +x /home/florian/GetUser.ps1

Comme nous avons précisé le shebang, Linux sait quel interpréteur de script il doit utiliser pour exécuter notre script. Il suffit donc de l'exécuter de cette façon :

./GetUser.ps1

Comme vous pouvez le voir sur la copie d'écran ci-dessous, nous obtenons bien la liste des utilisateurs de notre machine Linux.

On récupère la liste des utilisateurs de Linux avec PowerShell

Une autre manière d'exécuter un script PowerShell sous Linux consiste à appeler le binaire et lui indiquer le chemin du fichier via le paramètre -File ou -f :

pwsh -File "/home/florian/GetUser.ps1"

Sous Linux, la politique d'exécution des scripts PowerShell n'est pas prise en charge. La politique "Unrestricted" est appliquée et ne peut pas être modifiée, ce qui nous permet d'exécuter n'importe quel script.

Maintenant que vous savez comment exécuter un script PowerShell sous Linux, vous n'avez plus d'excuse ! 😉

The post Comment exécuter un script PowerShell sous Linux ? first appeared on IT-Connect.

PowerShell : simple quote VS double quote (guillemets)

22 juin 2021 à 13:00

I. Présentation

Lorsque l'on utilise PowerShell, on peut se retrouver face à une certaine confusion, si l'on ne maîtrise pas bien le fonctionnement des simples quote ( ' ) et des doubles quotes, c'est-à-dire les guillemets ( " ). Microsoft parle de guillemets simples ( ' ) et de guillemets doubles ( " ). Bien que l'écriture soit très proche, on peut avoir tendance à les mélanger, sauf que cela peut avoir un impact sur le fonctionnement de votre bout de code PowerShell.

Dans ce tutoriel, je vous propose différents exemples pour bien comprendre comment fonctionne le simple quote et le double quote.

Si vous êtes prêt pour le match du jour "Simple quote VS double quote", alors, c'est parti !

II. PowerShell : guillemets simples VS guillemets doubles

Pour que ce soit facile à comprendre, nous allons progresser à l'aide d'exemples. Tout d'abord, commençons par ce premier exemple :

PS> Write-Host 'Bonjour'
Bonjour

PS> Write-Host "Bonjour"
Bonjour

Nous constatons que le résultat renvoyé est le même, peu importe si l'on utilise une apostrophe (simple quote) ou des guillemets (double quote).

Prenons un autre exemple, où cette fois-ci on va utiliser une variable ($Prenom) pour créer la phrase à écrire dans la console.

PS> $Prenom = "Florian"

PS> Write-Host 'Bonjour $Prenom'
Bonjour $Prenom

PS> Write-Host "Bonjour $Prenom"
Bonjour Florian
PS>

Tiens, c'est intéressant : lorsque l'on utilise de simples quote ( ' ), la console ne renvoie pas la valeur de la variable, mais le nom de la variable en lui-même. À l'inverse, lorsque l'on utilise les doubles quote ( " ), la console renvoie bien la phrase complète, où la variable est remplacée par sa valeur.

En voilà une sacrée différence ! En effet, lorsque l'on utilise de simples quote, les variables et les commandes éventuelles ne sont pas "exécutées" : elles sont traitées comme du texte ! Cela peut avoir un intérêt dans certains cas, mais généralement on souhaite récupérer la valeur de notre variable, et non son nom.

Lorsque l'on utilise les doubles quote, on est capable d'aller chercher une valeur contenue dans une variable externe à la commande que l'on exécute, ici un simple Write-Host. Plus précisément, les doubles quote vont tenir compte de la présence du caractère "$".

Si je précise une commande, par exemple Get-Date pour récupérer la date en PowerShell, le résultat est le même dans les deux cas :

PS> Write-Host 'Bonjour, nous sommes le Get-Date -Format dd/MM/yyyy'
Bonjour, nous sommes le Get-Date -Format dd/MM/yyyy

PS> Write-Host "Bonjour, nous sommes le Get-Date -Format dd/MM/yyyy"
Bonjour, nous sommes le Get-Date -Format dd/MM/yyyy

Par contre, si j'englobe ma commande Get-Date avec $(), là c'est différent : ma commande sera bien exécutée dans un cas. Ce qui donne :

PS> Write-Host 'Bonjour, nous sommes le $(Get-Date -Format dd/MM/yyyy)'
Bonjour, nous sommes le $(Get-Date -Format dd/MM/yyyy)

PS> Write-Host "Bonjour, nous sommes le $(Get-Date -Format dd/MM/yyyy)"
Bonjour, nous sommes le 16/06/2021
PowerShell : exemple simple quote et double quote
PowerShell : exemples simple quote et double quote

De la même façon, pour faire un simple calcul :

PS> Write-Host "Une année est composée de 6 + 6 mois"
Une année est composée de 6 + 6 mois

PS> Write-Host "Une année est composée de $(6 + 6) mois"
Une année est composée de 12 mois

L'importance d'englober la commande à exécuter dans $() ne fait plus de doute !

Si l'on veut écrire du texte entre guillemets (double quote), tout en appelant une variable, on peut se retrouver dans une situation délicate. On pourrait simplement mixer l'utilisation des deux types de quote, comme ceci :

PS> Write-Host 'Bonjour, voici un "texte" entre guillemets pour $Prenom'
Bonjour, voici un "texte" entre guillemets pour $Prenom

Le problème, c'est que la variable ne sera pas traitée. En fait, pour que cela fonctionne, il faut doubler les guillemets comme ceci, tout en utilisant des guillemets pour la chaîne globale :

PS> Write-Host "Bonjour, voici un ""texte"" entre guillemets pour $Prenom"
Bonjour, voici un "texte" entre guillemets pour Florian

Ce principe fonctionne aussi avec les guillemets simples :

PS> Write-Host 'J''adore PowerShell !'
J'adore PowerShell !

Avec ces différents exemples, vous devez être en mesure de maîtriser cette notion indispensable ! 🙂

Pour finir sur le sujet, je me suis amusé à comparer les performances via Measure-Command lorsque l'on utilise les guillemets simples ou les guillemets doubles. La différence est mineure, mais les guillemets doubles semblent plus rapides malgré tout pour afficher une simple chaîne ! Par contre, si l'on commence à ajouter des commandes à traiter (comme Get-Date), forcément cela aura un impact ! Mais bon, de toute façon, nous n'avons pas le choix lorsque l'on veut inclure ce type de traitement.

Si vous souhaitez vous amuser, voici deux boucles pour écrire la même phrase en boucle, mais de deux façons différentes :

$Var = "Le match !"

$SimpleQuote = Measure-Command {
for ($i = 0; $i -lt 300; $i++) { Write-Host 'Simple quote VS double quote : $Var' }
}

$DoubleQuote = Measure-Command {
for ($i = 0; $i -lt 300; $i++) { Write-Host "Simple quote VS double quote : $Var" }
}

# Afficher les résultats :

$SimpleQuote
$DoubleQuote

Vous êtes désormais en mesure de maîtriser les guillemets simples (simple quote) et les guillemets doubles (double quote) en PowerShell !

The post PowerShell : simple quote VS double quote (guillemets) first appeared on IT-Connect.
❌