Partager via


ConvertFrom-String

Extrait et analyse les propriétés structurées à partir du contenu de chaîne.

Syntaxe

ByDelimiter (Par défaut)

ConvertFrom-String
    [-InputObject] <String>
    [-Delimiter <String>]
    [-PropertyNames <String[]>]
    [<CommonParameters>]

TemplateParsing

ConvertFrom-String
    [-InputObject] <String>
    [-TemplateFile <String[]>]
    [-TemplateContent <String[]>]
    [-IncludeExtent]
    [-UpdateTemplate]
    [<CommonParameters>]

Description

L’applet de commande ConvertFrom-String extrait et analyse les propriétés structurées à partir du contenu de chaîne. Cette applet de commande génère un objet en analysant du texte à partir d’un flux de texte traditionnel. Pour chaque chaîne du pipeline, l’applet de commande fractionne l’entrée par un délimiteur ou une expression d’analyse, puis affecte des noms de propriétés à chacun des éléments fractionnés résultants. Vous pouvez fournir ces noms de propriétés ; si ce n’est pas le cas, ils sont générés automatiquement pour vous.

Le jeu de paramètres par défaut de l’applet de commande, ByDelimiter, fractionne exactement le délimiteur d’expression régulière. Il n’effectue pas de correspondance de guillemets ou d’échappement délimiteur, car l’applet de commande Import-Csv.

Le jeu de paramètres de remplacement de l’applet de commande, TemplateParsing, génère des éléments à partir des groupes capturés par une expression régulière. Pour plus d’informations sur les expressions régulières, consultez about_Regular_Expressions.

Cette applet de commande prend en charge deux modes : l’analyse délimitée de base et l’analyse générée automatiquement, pilotée par des exemples.

L’analyse délimitée, par défaut, fractionne l’entrée à l’espace blanc et affecte des noms de propriétés aux groupes résultants.

Vous pouvez personnaliser le délimiteur en pipant les résultats ConvertFrom-String dans l’une des applets de commande Format-*, ou vous pouvez utiliser le paramètre délimiteur.

L’applet de commande prend également en charge l’analyse générée automatiquement, pilotée par des exemples, basée sur le FlashExtract, le travail de recherche de Microsoft Research.

Exemples

Exemple 1 : Générer un objet avec des noms de propriétés par défaut

"Hello World" | ConvertFrom-String
P1    P2
--    --
Hello World

Cette commande génère un objet avec des noms de propriétés par défaut, P1 et P2 .

Exemple 1A : Connaître l’objet généré

Cette commande génère un objet avec des propriétés P1, P2; les deux propriétés sont de type String, par défaut.

"Hello World" | ConvertFrom-String | Get-Member

   TypeName: System.Management.Automation.PSCustomObject

Name        MemberType   Definition
----        ----------   ----------
Equals      Method       bool Equals(System.Object obj)
GetHashCode Method       int GetHashCode()
GetType     Method       type GetType()
ToString    Method       string ToString()
P1          NoteProperty string P1=Hello
P2          NoteProperty string P2=World

Exemple 2 : Générer un objet avec des noms de propriétés par défaut à l’aide d’un délimiteur

Cette commande génère un objet avec un domaine et un nom d’utilisateur à l’aide de la barre oblique inverse (\) comme délimiteur. Le caractère de barre oblique inverse doit être échappé avec une autre barre oblique inverse lors de l’utilisation d’expressions régulières.

"Contoso\Administrator" | ConvertFrom-String -Delimiter "\\"
P1      P2
--      --
Contoso Administrator

Exemple 3 : Générer un objet qui contient deux propriétés nommées

L’exemple suivant crée des objets à partir d’entrées de fichier hôtes Windows.

$content = Get-Content C:\Windows\System32\drivers\etc\hosts
$content = $content -match "^[^#]"
$content | ConvertFrom-String -PropertyNames IP, Server
IP             Server
--             ------
192.168.7.10   W2012R2
192.168.7.20   W2016
192.168.7.101  WIN8
192.168.7.102  WIN10

L’applet de commande Get-Content stocke le contenu d’un fichier hôtes Windows dans $content. La deuxième commande supprime tous les commentaires au début du fichier hosts à l’aide d’une expression régulière qui correspond à n’importe quelle ligne qui ne commence pas par (#). La dernière commande convertit le texte restant en objets avec Server et propriétés d' IP.

Exemple 4 : Utilisez une expression comme valeur du paramètre TemplateContent, enregistrez les résultats dans une variable.

Cette commande utilise une expression comme valeur du paramètre TemplateContent. L’expression est enregistrée dans une variable par souci de simplicité. Windows PowerShell comprend maintenant que la chaîne utilisée sur le pipeline pour ConvertFrom-String a trois propriétés :

  • Nom
  • téléphone
  • âge
$template = @'
{Name*:Phoebe Cat}, {phone:425-123-6789}, {age:6}
{Name*:Lucky Shot}, {phone:(206) 987-4321}, {age:12}
'@

$testText = @'
Phoebe Cat, 425-123-6789, 6
Lucky Shot, (206) 987-4321, 12
Elephant Wise, 425-888-7766, 87
Wild Shrimp, (111)  222-3333, 1
'@

$PersonalData = $testText | ConvertFrom-String -TemplateContent $template
Write-Output ("Pet items found: " + ($PersonalData.Count))
$PersonalData
Pet items found: 4

Name          phone           age
----          -----           ---
Phoebe Cat    425-123-6789    6
Lucky Shot    (206) 987-4321  12
Elephant Wise 425-888-7766    87
Wild Shrimp   (111)  222-3333 1

Chaque ligne de l’entrée est évaluée par l’exemple correspond. Si la ligne correspond aux exemples donnés dans le modèle, les valeurs sont extraites et transmises à la variable de sortie.

Les exemples de données, $template, fournissent deux formats téléphoniques différents :

  • 425-123-6789
  • (206) 987-4321

Les exemples de données fournissent également deux formats d’âge différents :

  • 6
  • 12

Cela implique que les téléphones comme (206) 987 4321 ne seront pas reconnus, car il n’y a pas d’exemple de données qui correspondent à ce modèle, car il n’y a pas de traits d’union.

Exemple 5 : Spécification de types de données aux propriétés générées

Il s’agit du même exemple que l’exemple 4 ci-dessus. La différence est que la chaîne de modèle inclut un type de données pour chaque propriété souhaitée.

$template = @'
{[string]Name*:Phoebe Cat}, {[string]phone:425-123-6789}, {[int]age:6}
{[string]Name*:Lucky Shot}, {[string]phone:(206) 987-4321}, {[int]age:12}
'@

$testText = @'
Phoebe Cat, 425-123-6789, 6
Lucky Shot, (206) 987-4321, 12
Elephant Wise, 425-888-7766, 87
Wild Shrimp, (111)  222-3333, 1
'@

$PersonalData = $testText | ConvertFrom-String -TemplateContent $template
Write-Output ("Pet items found: " + ($PersonalData.Count))
$PersonalData
Pet items found: 4

Name          phone           age
----          -----           ---
Phoebe Cat    425-123-6789      6
Lucky Shot    (206) 987-4321   12
Elephant Wise 425-888-7766     87
Wild Shrimp   (111)  222-3333   1
$PersonalData | Get-Member
   TypeName: System.Management.Automation.PSCustomObject

Name        MemberType   Definition
----        ----------   ----------
Equals      Method       bool Equals(System.Object obj)
GetHashCode Method       int GetHashCode()
GetType     Method       type GetType()
ToString    Method       string ToString()
age         NoteProperty int age=6
Name        NoteProperty string Name=Phoebe Cat
phone       NoteProperty string phone=425-123-6789

L’applet de commande Get-Member est utilisée pour montrer que la propriété age est un entier.

Paramètres

-Delimiter

Spécifie une expression régulière qui identifie la limite entre les éléments. Les éléments créés par le fractionnement deviennent des propriétés dans l’objet résultant. Le délimiteur est finalement utilisé dans un appel à la méthode Split du type [System.Text.RegularExpressions.RegularExpression].

Propriétés du paramètre

Type:String
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False
Alias:DEL

Jeux de paramètres

ByDelimiter
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-IncludeExtent

Indique que cette applet de commande inclut une propriété de texte d’extension supprimée par défaut.

Propriétés du paramètre

Type:SwitchParameter
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False
Alias:Internet Explorer

Jeux de paramètres

TemplateParsing
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-InputObject

Spécifie les chaînes reçues du pipeline ou une variable qui contient un objet de chaîne.

Propriétés du paramètre

Type:String
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:0
Obligatoire:True
Valeur du pipeline:True
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-PropertyNames

Spécifie un tableau de noms de propriétés auxquels attribuer des valeurs fractionnées dans l’objet résultant. Chaque ligne de texte que vous fractionnez ou analyse génère des éléments qui représentent des valeurs de propriété. Si l’élément est le résultat d’un groupe de capture et que ce groupe de capture est nommé (par exemple, (?<name>) ou (?'name')), le nom de ce groupe de capture est affecté à la propriété.

Si vous fournissez des éléments dans le tableau PropertyName, ces noms sont affectés aux propriétés qui n’ont pas encore été nommées.

Si vous fournissez plus de noms de propriétés qu’il y a de champs, PowerShell ignore les noms de propriétés supplémentaires. Si vous ne spécifiez pas suffisamment de noms de propriétés pour nommer tous les champs, PowerShell affecte automatiquement des noms de propriétés numériques à toutes les propriétés qui ne sont pas nommées : P1, P2, etc.

Propriétés du paramètre

Type:

String[]

Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False
Alias:PN

Jeux de paramètres

ByDelimiter
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-TemplateContent

Spécifie une expression, ou une expression enregistrée sous forme de variable, qui décrit les propriétés auxquelles cette applet de commande affecte des chaînes. La syntaxe d’une spécification de champ de modèle est la suivante : {[optional-typecast]<name>:<example-value>}.

Propriétés du paramètre

Type:

String[]

Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False
Alias:TC

Jeux de paramètres

TemplateParsing
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-TemplateFile

Spécifie un fichier, en tant que tableau, qui contient un modèle pour l’analyse souhaitée de la chaîne. Dans le fichier de modèle, les propriétés et leurs valeurs sont placées entre crochets, comme indiqué ci-dessous. Si une propriété, telle que la propriété Name et ses autres propriétés associées, s’affiche plusieurs fois, vous pouvez ajouter un astérisque (*) pour indiquer que cela entraîne plusieurs enregistrements. Cela évite d’extraire plusieurs propriétés dans un enregistrement unique.

{Name*:David Chew}
{City:Redmond}, {State:WA}
{Name*:Evan Narvaez}    {Name*:Antonio Moreno}
{City:Issaquah}, {State:WA}

Propriétés du paramètre

Type:

String[]

Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False
Alias:TF

Jeux de paramètres

TemplateParsing
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-UpdateTemplate

Indique que cette applet de commande enregistre les résultats d’un algorithme d’apprentissage dans un commentaire dans le fichier de modèle. Cela accélère le processus d’apprentissage de l’algorithme. Pour utiliser ce paramètre, vous devez également spécifier un fichier de modèle avec le paramètre TemplateFile.

Propriétés du paramètre

Type:SwitchParameter
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False
Alias:UT

Jeux de paramètres

TemplateParsing
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

CommonParameters

Cette applet de commande prend en charge les paramètres courants : -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction et -WarningVariable. Pour plus d’informations, consultez about_CommonParameters.

Entrées

String

Sorties

PSCustomObject

Notes

Windows PowerShell inclut les alias suivants pour ConvertFrom-String:

  • CFS