Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Brève description
Décrit les règles d’utilisation de guillemets simples et doubles dans PowerShell.
Description longue
Lors de l’analyse, PowerShell cherche d’abord à interpréter l’entrée en tant qu’expression. Toutefois, lorsqu’un appel de commande est rencontré, l’analyse continue en mode argument. Les arguments non numériques sans guillemets sont traités comme des chaînes. Si vous avez des arguments qui contiennent des espaces, tels que des chemins d’accès, vous devez placer ces valeurs d’argument entre guillemets. Pour plus d’informations sur l’analyse des arguments, veuillez consulter la section mode d’argument de about_Parsing.
Les guillemets sont utilisés pour spécifier une chaîne littérale. Vous pouvez placer une chaîne entre guillemets simples (') ou des guillemets doubles (").
Les guillemets sont également utilisés pour créer un here-string. Une chaîne here est une chaîne entre guillemets simples ou doubles dans laquelle les guillemets sont interprétés littéralement. Une chaîne ici peut s’étendre sur plusieurs lignes. Toutes les lignes d’une chaîne ici sont interprétées comme des chaînes, même si elles ne sont pas placées entre guillemets.
Dans les commandes des ordinateurs distants, les guillemets définissent les parties de la commande exécutées sur l’ordinateur distant. Dans une session distante, les guillemets déterminent également si les variables d’une commande sont interprétées en premier sur l’ordinateur local ou sur l’ordinateur distant.
Remarque
PowerShell traite les guillemets intelligents, également appelés guillemets typographiques ou guillemets courbes, comme des guillemets normaux pour les chaînes. N’utilisez pas de guillemets intelligents pour encadrer les chaînes. Lorsque vous écrivez des chaînes contenant des guillemets intelligents, suivez les instructions de la section inclusion de caractères guillemets dans une chaîne de ce document. Pour plus d’informations sur les guillemets intelligents, veuillez consulter la section smart quotes dans l’article Wikipedia quotation marks in english.
Chaînes entre guillemets doubles
Une chaîne encadrée par des guillemets doubles est une chaîne expandable. Les noms de variables précédés d’un signe dollar ($) sont remplacés par la valeur de la variable avant que la chaîne ne soit passée à la commande pour traitement.
Par exemple:
$i = 5
"The value of $i is $i."
La sortie de cette commande est la suivante :
The value of 5 is 5.
En outre, dans une chaîne entre guillemets doubles, les expressions sont évaluées et le résultat est inséré dans la chaîne. Par exemple:
"The value of $(2+3) is 5."
La sortie de cette commande est la suivante :
The value of 5 is 5.
Seules les références de variables de base peuvent être directement incorporées dans une chaîne extensible. Les références de variables utilisant l’indexation de tableau ou l’accès membre doivent être placées dans une sous-expression. Par exemple:
"PS version: $($PSVersionTable.PSVersion)"
PS version: 7.6.0-preview.4
Pour séparer un nom de variable des caractères suivants dans la chaîne, placez-le dans des accolades ({}). Cela est particulièrement important si le nom de la variable est suivi d’un signe deux-points (:). PowerShell considère tout ce qui se trouve entre le $ et le : un spécificateur d’étendue, ce qui provoque généralement l’échec de l’interprétation. Par exemple, "$HOME: where the heart is." provoque une erreur, alors que "${HOME}: where the heart is." fonctionne comme prévu.
Pour empêcher le remplacement de la valeur d’une variable dans une chaîne entre guillemets doubles, utilisez le caractère backtick (`), qui est le caractère d’échappement de PowerShell.
Dans l’exemple suivant, le caractère backtick qui précède la première variable $i empêche PowerShell de remplacer le nom de la variable par sa valeur.
Par exemple:
$i = 5
"The value of `$i is $i."
La sortie de cette commande est la suivante :
The value of $i is 5.
Chaînes entre guillemets simples
Une chaîne encadrée par des guillemets simples est une chaîne verbatim. La chaîne est transmise à la commande exactement comme vous la saisissez. Aucune substitution n’est effectuée. Par exemple:
$i = 5
'The value of $i is $i.'
La sortie de cette commande est la suivante :
The value $i is $i.
De même, les expressions dans des chaînes entre guillemets simples ne sont pas évaluées. Elles sont interprétées comme des littérales de chaîne. Par exemple:
'The value of $(2+3) is 5.'
La sortie de cette commande est la suivante :
The value of $(2+3) is 5.
Inclusion de guillemets dans une chaîne
Pour faire apparaître des guillemets doubles dans une chaîne, placez la chaîne entière entre guillemets simples. Par exemple:
'As they say, "live and learn."'
La sortie de cette commande est la suivante :
As they say, "live and learn."
Vous pouvez également encadrer une chaîne entre guillemets simples avec une chaîne entre guillemets doubles. Par exemple:
"As they say, 'live and learn.'"
La sortie de cette commande est la suivante :
As they say, 'live and learn.'
Ou bien, doublez les guillemets autour d’une expression entre guillemets doubles. Par exemple:
"As they say, ""live and learn."""
La sortie de cette commande est la suivante :
As they say, "live and learn."
Pour inclure un guillemet simple dans une chaîne entre guillemets simples, utilisez un second guillemet simple consécutif. Par exemple:
'don''t'
La sortie de cette commande est la suivante :
don't
Pour forcer PowerShell à interpréter un guillemet double littéralement, utilisez un caractère backtick. Cela empêche PowerShell d’interpréter le guillemet comme délimiteur de chaîne. Par exemple:
"Use a quotation mark (`") to begin a string."
'Use a quotation mark (`") to begin a string.'
Comme le contenu des chaînes entre guillemets simples est interprété littéralement, le caractère backtick est traité comme un caractère ordinaire et s’affiche dans le résultat.
Use a quotation mark (") to begin a string.
Use a quotation mark (`") to begin a string.
Comme PowerShell interprète les guillemets intelligents, tels que ‘, ’, “ et ”, comme des guillemets normaux, il faut aussi échapper les guillemets intelligents.
Par exemple:
"Double ““smart quotation marks`” must be escaped in a double-quoted string."
'Single ‘‘smart quotation marks’’ must be escaped in a single-quoted string.'
Double “smart quotation marks” must be escaped in a double-quoted string.
Single ‘smart quotation marks’ must be escaped in a single-quoted string.
Chaînes ici
Les règles de mise en guillemets pour les here-strings sont légèrement différentes.
Un here-string est une chaîne entre guillemets simples ou doubles encadrée par des arobase (@). Les guillemets à l’intérieur d’un here-string sont interprétés littéralement.
Un here-string :
- s’étend sur plusieurs lignes
- commence par la marque d’ouverture suivie d’une nouvelle ligne
- se termine par une nouvelle ligne suivie de la marque fermante
- inclut chaque ligne entre les marques d’ouverture et de fermeture dans une seule chaîne
Comme les chaînes de caractères normales, les variables sont remplacées par leurs valeurs dans les here-strings entre guillemets doubles. Dans les here-strings entre guillemets simples, les variables ne sont pas remplacées par leur valeur.
Vous pouvez utiliser les here-strings pour n’importe quel texte, mais ils sont particulièrement utiles pour les types de texte suivants :
- Texte qui contient des guillemets littéraux
- Plusieurs lignes de texte, telles que le texte dans un bloc HTML ou XML
- Texte d’aide d’un script ou d’un document de fonction
Un here-string peut adopter l’un des formats suivants, où <Enter> représente le caractère caché de saut de ligne ajouté lorsque vous appuyez sur la touche ENTER.
Guillemets doubles :
@"<Enter>
<string> [string] ...<Enter>
"@
Guillemets simples :
@'<Enter>
<string> [string] ...<Enter>
'@
Remarque
Le saut de ligne final fait partie de la marque de fermeture. Il n’est pas ajouté au here-string.
Une chaîne ici contient tout le texte entre les marques d’ouverture et de fermeture. Dans le here-string, tous les guillemets sont interprétés littéralement. Par exemple:
@"
For help, type "Get-Help"
"@
La sortie de cette commande est la suivante :
For help, type "Get-Help"
L’utilisation d’une chaîne ici peut simplifier l’utilisation d’une chaîne dans une commande. Par exemple:
@"
Use a quotation mark, like ' or ", to begin a string.
"@
La sortie de cette commande est la suivante :
Use a quotation mark, like ' or ", to begin a string.
Dans les here-strings entre guillemets simples, les variables sont interprétées littéralement et reproduites exactement. Par exemple:
@'
The $PROFILE variable contains the path
of your PowerShell profile.
'@
La sortie de cette commande est la suivante :
The $PROFILE variable contains the path
of your PowerShell profile.
Dans les here-strings entre guillemets doubles, les variables sont remplacées par leur valeur. Par exemple:
@"
Even if you have not created a profile,
the path of the profile file is:
$PROFILE.
"@
La sortie de cette commande est la suivante :
Even if you have not created a profile,
the path of the profile file is:
C:\Users\User1\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1.
Les chaînes ici sont généralement utilisées pour affecter plusieurs lignes à une variable. Par exemple, la chaîne suivante affecte une page xml à la variable $page.
$page = [xml] @"
<command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10"
xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10"
xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10">
<command:details>
<command:name>
Format-Table
</command:name>
<maml:description>
<maml:para>Formats the output as a table.</maml:para>
</maml:description>
<command:verb>format</command:verb>
<command:noun>table</command:noun>
<dev:version></dev:version>
</command:details>
...
</command:command>
"@
Les here-strings sont également un format pratique pour l’entrée dans le cmdlet ConvertFrom-StringData, qui convertit les here-strings en tables de hachage.
Pour plus d’informations, consultez ConvertFrom-StringData.
Remarque
PowerShell permet aux chaînes entre guillemets doubles ou simples de s’étendre sur plusieurs lignes sans utiliser la syntaxe @ des here-strings. Cependant, l’utilisation complète de la syntaxe des here-strings est à privilégier.
Interprétation des chaînes extensibles
Les chaînes développées ne ressemblent pas nécessairement au résultat par défaut que vous voyez dans la console.
Les collections, y compris les tableaux, sont converties en chaînes en plaçant un espace unique entre les représentations sous forme de chaînes des éléments. Un séparateur différent peut être spécifié en définissant la variable de préférence $OFS. Pour plus d’informations, consultez la variable de préférence $OFS.
Les instances d’un autre type sont converties en chaînes en appelant la méthode ToString(), ce qui peut ne pas donner de représentation significative. Par exemple:
"hashtable: $(@{ key = 'value' })"
hashtable: System.Collections.Hashtable
Pour obtenir la même sortie que dans la console, utilisez une sous-expression dans laquelle vous dirigez vers Out-String. Appliquez la méthode Trim() si vous souhaitez supprimer les lignes vides de début et de fin.
"hashtable:`n$((@{ key = 'value' } | Out-String).Trim())"
hashtable:
Name Value
---- -----
key value
Les paramètres de culture affectent l’interprétation des chaînes
Les méthodes ToString() utilisent les paramètres de culture configurés actuels pour convertir des valeurs en chaînes. Par exemple, la culture de la session PowerShell suivante est définie sur de-DE. Lorsque la méthode ToString() convertit la valeur de $x en chaîne, elle utilise une virgule (,) pour le séparateur décimal. En outre, la méthode ToString() convertit la date en chaîne au format approprié pour les paramètres régionaux allemands.
PS> Get-Culture
LCID Name DisplayName
---- ---- -----------
1031 de-DE German (Germany)
PS> $x = 1.2
PS> $x.ToString()
1,2
PS> (Get-Date 2024-03-19).ToString()
19.03.2024 00:00:00
Toutefois, PowerShell utilise la culture invariante lors de l’interprétation d’expressions de chaîne extensibles.
PS? "$x"
1.2
PS> "$(Get-Date 2024-03-19)"
03/19/2024 00:00:00
Passage de chaînes entre guillemets à des commandes externes
Certaines commandes natives attendent des arguments qui contiennent des guillemets. PowerShell interprète la chaîne entre guillemets avant de la transmettre à la commande externe. Cette interprétation supprime les guillemets externes.
Pour plus d’informations sur ce comportement, consultez l’article about_Parsing.