about_Quoting_Rules

Description courte

Décrit les règles d’utilisation des guillemets simples et doubles dans PowerShell.

Description longue

Des guillemets sont utilisés pour spécifier une chaîne littérale. Vous pouvez placer une chaîne entre guillemets simples ( ' ) ou guillemets doubles ( " ).

Des guillemets sont également utilisés pour créer une chaîne ici-. Une chaîne ici est une chaîne entre guillemets simples ou entre guillemets, 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 qui sont exécutées sur l’ordinateur distant. Dans une session à distance, les guillemets déterminent également si les variables d’une commande sont d’abord interprétées sur l’ordinateur local ou sur l’ordinateur distant.

Chaînes entre guillemets doubles

Une chaîne placée entre guillemets doubles est une chaîne pouvant être développée . 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 soit transmise à la commande à des fins de 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 simples peuvent être incorporées directement dans une chaîne pouvant être développée. Les références de variables à l’aide de l’indexation de tableau ou de l’accès aux membres doivent être incluses dans une sous-expression. Par exemple :

"PS version: $($PSVersionTable.PSVersion)"
PS version: 7.1.4

Pour séparer un nom de variable des caractères suivants dans la chaîne, mettez-le entre accolades ( {} ). Cela est particulièrement important si le nom de la variable est suivi d’un signe deux-points ( : ). PowerShell prend en compte tout ce qui se trouve entre les $ : spécificateurs d’étendue et, ce qui entraîne généralement l’échec de l’interprétation. Par exemple, "$HOME: where the heart is." génère une erreur, mais "${HOME}: where the heart is." fonctionne comme prévu.

Pour empêcher la substitution d’une valeur de variable dans une chaîne entre guillemets doubles, utilisez le caractère d' ` échappement (), qui est le caractère d’échappement de PowerShell.

Dans l’exemple suivant, le caractère d’impulsion qui précède la première $i variable 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 placée entre guillemets simples est une chaîne textuelle . La chaîne est passée à la commande exactement telle que vous la tapez. 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 des chaînes entre guillemets simples ne sont pas évaluées. Ils sont interprétés comme des littéraux. 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 caractères guillemets dans une chaîne

Pour faire apparaître les guillemets doubles dans une chaîne, placez la totalité de la chaîne 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 placer une chaîne entre guillemets simples dans une chaîne entre guillemets. Par exemple :

"As they say, 'live and learn.'"

La sortie de cette commande est la suivante :

As they say, 'live and learn.'

Ou, 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 deuxième guillemet simple consécutif. Par exemple :

'don''t'

La sortie de cette commande est la suivante :

don't

Pour forcer PowerShell à interpréter littéralement un guillemet double, utilisez un caractère de soulignement. Cela empêche PowerShell d’interpréter le guillemet comme un délimiteur de chaîne. Par exemple :

"Use a quotation mark (`") to begin a string."
'Use a quotation mark (`") to begin a string.'

Étant donné que le contenu des chaînes entre guillemets simples est interprété littéralement, le caractère de soulignement est traité comme un caractère littéral et affiché dans la sortie.

Use a quotation mark (") to begin a string.
Use a quotation mark (`") to begin a string.

Ici-chaînes

Les règles de quotation pour les chaînes ici sont légèrement différentes.

Une chaîne ici est une chaîne entre guillemets simples ou entre guillemets, 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.

À l’instar des chaînes régulières, les variables sont remplacées par leurs valeurs dans des chaînes here à deux guillemets. Dans les chaînes ici à guillemets simples, les variables ne sont pas remplacées par leurs valeurs.

Vous pouvez utiliser des chaînes here pour tout texte, mais elles sont particulièrement utiles pour les genres de texte suivants :

  • Texte qui contient des guillemets littéraux
  • Plusieurs lignes de texte, telles que le texte dans un fichier HTML ou XML
  • Texte d’aide d’un script ou d’un document de fonction

Une chaîne « here » peut avoir l’un des formats suivants, où <Enter> représente le caractère masqué de saut de ligne ou de saut de ligne qui est ajouté lorsque vous appuyez sur la touche entrée .

Guillemets doubles :

@"<Enter>
<string> [string] ...<Enter>
"@

Guillemets simples :

@'<Enter>
<string> [string] ...<Enter>
'@

Dans les deux formats, le guillemet fermant doit être le premier caractère de la ligne.

Une chaîne ici contient tout le texte entre les deux caractères masqués. Dans la chaîne here, 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 « here » peut simplifier l’utilisation d’une chaîne dans une commande. Par exemple :

@"
Use a quotation mark (') to begin a string.
"@

La sortie de cette commande est la suivante :

Use a quotation mark (') to begin a string.

Dans les chaînes ici à 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 chaînes à deux guillemets (), les variables sont remplacées par leurs valeurs. 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.

Ici-les chaînes sont généralement utilisées pour assigner plusieurs lignes à une variable. Par exemple, le texte suivant-String 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>
"@

Ici-les chaînes sont également un format pratique pour l’entrée de l’applet de commande ConvertFrom-StringData , qui convertit les chaînes ici en tables de hachage. Pour plus d’informations, consultez ConvertFrom-StringData.

Interprétation des chaînes développables

Les chaînes développées ne sont pas nécessairement les mêmes que celles de la sortie par défaut qui s’affichent dans la console.

Les collections, y compris les tableaux, sont converties en chaînes en plaçant un seul espace entre les représentations sous forme de chaîne des éléments. Vous pouvez spécifier un autre séparateur en définissant une variable de préférence $OFS . Pour plus d’informations, consultez la $OFS variable de préférence.

Les instances de tout autre type sont converties en chaînes en appelant la ToString() méthode, qui peut ne pas fournir une 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 Out-String . Appliquez la Trim() méthode 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

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 passer à la commande externe. Cette interprétation supprime les caractères de guillemets externes.

Pour plus d’informations sur ce comportement, consultez l’article about_Parsing .

Voir aussi

about_Parsing

about_Special_Characters

ConvertFrom-StringData