ConvertFrom-StringData
Convertit une chaîne contenant une ou plusieurs paires clé et valeur en table de hachage.
Syntaxe
ConvertFrom-StringData
[-StringData] <String>
[[-Delimiter] <Char>]
[<CommonParameters>]
Description
L’applet de commande ConvertFrom-StringData
convertit une chaîne qui contient une ou plusieurs paires clé et valeur dans une table de hachage. Étant donné que chaque paire clé-valeur doit se trouver sur une ligne distincte, les chaînes ici sont souvent utilisées comme format d’entrée. Par défaut, la clé doit être séparée de la valeur par un signe égal (=
).
L’applet de commande ConvertFrom-StringData
est considérée comme une applet de commande sécurisée qui peut être utilisée dans la section DATA d’un script ou d’une fonction. Lorsqu’elle est utilisée dans une section DATA, le contenu de la chaîne doit être conforme aux règles d’une section DATA. Pour plus d'informations, voir about_Data_Sections.
ConvertFrom-StringData
prend en charge les séquences de caractères d’échappement autorisées par les outils de traduction automatique classiques. En d'autres termes, la cmdlet peut interpréter les barres obliques inverses (\
) comme des caractères d'échappement dans la chaîne de données en utilisant la méthode Regex.Unescape, au lieu du caractère de retour PowerShell (`
) qui signalerait normalement la fin d'une ligne dans un script.
À l'intérieur de la chaîne here-string, le caractère backtick ne fonctionne pas. Vous pouvez également conserver une barre oblique inverse littérale dans vos résultats en l'échappant avec une barre oblique inverse précédente, comme ceci : \\
. Les caractères de barre oblique inverse sans séquence d'échappement, comme celles qui sont couramment utilisées dans les chemins d'accès, peuvent apparaître comme des séquences d'échappement non autorisées dans vos résultats.
PowerShell 7 ajoute le paramètre délimiteur .
Exemples
Exemple 1 : conversion d'une chaîne simple entre guillemets en table de hachage
Cet exemple convertit une chaîne de caractères simple de messages d'utilisateurs en une table de hachage. Dans une chaîne à guillemet unique, les valeurs ne sont pas substituées aux variables et aux expressions ne sont pas évaluées.
L’applet de commande ConvertFrom-StringData
convertit la valeur dans la variable $Here
en table de hachage.
$Here = @'
Msg1 = The string parameter is required.
Msg2 = Credentials are required for this command.
Msg3 = The specified variable doesn't exist.
'@
ConvertFrom-StringData -StringData $Here
Name Value
---- -----
Msg3 The specified variable doesn't exist.
Msg2 Credentials are required for this command.
Msg1 The string parameter is required.
Exemple 2 : Convertir des données de chaîne à l’aide d’un autre délimiteur
Cet exemple montre comment convertir des données de chaîne qui utilisent un caractère différent en tant que délimiteur. Dans cet exemple, les données de chaîne utilisent le caractère de canal (|
) comme délimiteur.
$StringData = @'
color|red
model|coupe
year|1965
condition|mint
'@
$carData = ConvertFrom-StringData -StringData $StringData -Delimiter '|'
$carData
Name Value
---- -----
condition mint
model coupe
color red
year 1965
Exemple 3 : conversion d'une chaîne here-string contenant un commentaire
Cet exemple convertit une chaîne ici qui contient un commentaire et plusieurs paires clé-valeur dans une table de hachage.
ConvertFrom-StringData -StringData @'
Name = Disks.ps1
# Category is optional.
Category = Storage
Cost = Free
'@
Name Value
---- -----
Cost Free
Category Storage
Name Disks.ps1
La valeur du paramètre StringData est une chaîne ici, au lieu d'une variable contenant une chaîne ici. L’un ou l’autre format est valide. La chaîne « ici-même » contient un commentaire sur une des chaînes.
ConvertFrom-StringData
ignore les commentaires sur une seule ligne, mais le caractère dièse (#
) doit être le premier caractère non blanc de la ligne.
Exemple 4 : Convertir une chaîne en table de hachage
Cet exemple convertit une chaîne entre guillemets doubles standard (et non une chaîne ici) en table de hachage et l’enregistre dans la variable $A
.
$A = ConvertFrom-StringData -StringData "Top = Red `n Bottom = Blue"
$A
Name Value
---- -----
Bottom Blue
Top Red
Pour répondre à la condition que chaque paire clé-valeur doit se trouver sur une ligne distincte, la chaîne utilise le caractère de nouvelle ligne PowerShell (`n
) pour séparer les paires.
Exemple 5 : Utiliser dans la section « DATA » d’un script
Cet exemple montre une commande ConvertFrom-StringData
utilisée dans la section DATA
d’un script.
Les instructions sous la section DATA affichent le texte à l’utilisateur.
$TextMsgs = DATA {
ConvertFrom-StringData @'
Text001 = The $Notebook variable contains the name of the user's system notebook.
Text002 = The $MyNotebook variable contains the name of the user's private notebook.
'@
}
$TextMsgs
Name Value
---- -----
Text001 The $Notebook variable contains the name of the user's system notebook.
Text002 The $MyNotebook variable contains the name of the user's private notebook.
Étant donné que le texte inclut des noms de variables, il doit être placé entre une chaîne entre guillemets unique afin que les variables soient interprétées littéralement et non développées. Les variables ne sont pas autorisées dans la section DATA
.
Exemple 6 : Utiliser l’opérateur de pipeline pour passer une chaîne
Cet exemple montre que vous pouvez utiliser un opérateur de pipeline (|
) pour envoyer une chaîne à ConvertFrom-StringData
. La valeur de la variable $Here
est transmise à ConvertFrom-StringData
, et le résultat est stocké dans la variable $Hash
.
$Here = @'
Msg1 = The string parameter is required.
Msg2 = Credentials are required for this command.
Msg3 = The specified variable doesn't exist.
'@
$Hash = $Here | ConvertFrom-StringData
$Hash
Name Value
---- -----
Msg3 The specified variable doesn't exist.
Msg2 Credentials are required for this command.
Msg1 The string parameter is required.
Exemple 7 : Utiliser des caractères d’échappement pour ajouter de nouvelles lignes et retourner des caractères
Cet exemple montre l'utilisation des caractères d'échappement pour créer de nouvelles lignes et retourner des caractères dans les données sources. La séquence d’échappement \n
est utilisée pour créer de nouvelles lignes dans un bloc de texte associé à un nom ou un élément dans la table de hachage résultante.
ConvertFrom-StringData @"
Vincentio = Heaven doth with us as we with torches do,\nNot light them for themselves; for if our virtues\nDid not go forth of us, 'twere all alike\nAs if we had them not.
Angelo = Let there be some more test made of my metal,\nBefore so noble and so great a figure\nBe stamp'd upon it.
"@ | Format-List
Name : Angelo
Value : Let there be some more test made of my metal,
Before so noble and so great a figure
Be stamp'd upon it.
Name : Vincentio
Value : Heaven doth with us as we with torches do,
Not light them for themselves; for if our virtues
Didn't go forth of us, 'twere all alike
As if we had them not.
Exemple 8 : utilisation du caractère d'échappement backslash pour afficher correctement un chemin d'accès à un fichier
Cet exemple montre comment utiliser le caractère d'échappement backslash dans les données de la chaîne pour permettre à un chemin de fichier de s'afficher correctement dans la table de hachage ConvertFrom-StringData
résultante. La double barre oblique inverse fait que les caractères de barre oblique inverse littérale s'affichent correctement dans la sortie de table de hachage.
ConvertFrom-StringData "Message=Look in c:\\Windows\\System32"
Name Value
---- -----
Message Look in c:\Windows\System32
Paramètres
-Delimiter
Caractère utilisé pour séparer la clé des données de la valeur dans la chaîne convertie.
Le délimiteur par défaut est le signe égal (=
). Ce paramètre a été ajouté dans PowerShell 7.
Type: | Char |
Position: | 1 |
Valeur par défaut: | '=' |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-StringData
Spécifie la chaîne à convertir. Vous pouvez utiliser ce paramètre ou diriger une chaîne vers ConvertFrom-StringData
. Le nom du paramètre est facultatif.
La valeur de ce paramètre doit être une chaîne qui contient une ou plusieurs paires clé-valeur. Chaque paire clé-valeur doit se trouver sur une ligne distincte, ou chaque paire doit être séparée par des caractères de nouvelle ligne (`n
).
Vous pouvez inclure des commentaires dans la chaîne, mais les commentaires ne peuvent pas se trouver sur la même ligne qu’une paire clé-valeur. ConvertFrom-StringData
ignore les commentaires à ligne unique. Le caractère de hachage (#
) doit être le premier caractère non blanc sur la ligne. Tous les caractères de la ligne après le caractère de hachage (#
) sont ignorés. Les commentaires ne sont pas inclus dans la table de hachage.
Une chaîne ici est une chaîne composée d’une ou plusieurs lignes. Les guillemets à l'intérieur de la chaîne here-string sont interprétés littéralement comme faisant partie des données de la chaîne. Pour plus d'informations, voir about_Quoting_Rules.
Type: | String |
Position: | 0 |
Valeur par défaut: | None |
Obligatoire: | True |
Accepter l'entrée de pipeline: | True |
Accepter les caractères génériques: | False |
Entrées
Vous pouvez diriger une chaîne contenant une paire clé-valeur vers cette applet de commande.
Sorties
Cette applet de commande retourne une table de hachage qu’elle crée à partir des paires clé-valeur.
Notes
Une chaîne ici est une chaîne composée d’une ou plusieurs lignes dans lesquelles les guillemets sont interprétés littéralement.
Cette applet de commande peut être utile dans les scripts qui affichent des messages utilisateur dans plusieurs langues parlées. Vous pouvez utiliser les tables de hachage de style dictionnaire pour isoler les chaînes de texte du code, telles que dans les fichiers de ressources, et mettre en forme les chaînes de texte à utiliser dans les outils de traduction.