ConvertFrom-String
Extrait et analyse les propriétés structurées à partir du contenu de chaîne.
Syntaxe
ConvertFrom-String
[-Delimiter <String>]
[-PropertyNames <String[]>]
[-InputObject] <String>
[<CommonParameters>]
ConvertFrom-String
[-TemplateFile <String[]>]
[-TemplateContent <String[]>]
[-IncludeExtent]
[-UpdateTemplate]
[-InputObject] <String>
[<CommonParameters>]
Description
L’applet de commande ConvertFrom-String extrait et analyse des 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.
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
PS C:\> "Hello World" | ConvertFrom-String
P1 P2
-- --
Hello World
PS C:\>
Cette commande génère un objet avec des noms de propriétés par défaut, P1 et P2. Les résultats sont P1="Hello » et P2="World ».
Exemple 1A : Connaître l’objet généré
PS C:\> "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
PS C:\>
La commande génère un objet avec les propriétés P1, P2 ; les deux propriétés sont de type « string », par défaut.
Exemple 2 : Générer un objet avec des noms de propriétés par défaut à l’aide d’un délimiteur
PS C:\> "Hello World" | ConvertFrom-String -Delimiter "ll"
P1 P2
-- --
He o World
PS C:\>
Cette commande génère un objet avec les propriétés P1="He » et P2="o World », en spécifiant le 'll' dans Hello comme délimiteur.
Exemple 3 : Générer un objet qui contient deux propriétés nommées
PS C:\> "Hello World" | ConvertFrom-String -PropertyNames FirstWord, SecondWord
FirstWord SecondWord
--------- ----------
Hello World
PS C:\>
Cette commande génère un objet qui contient deux propriétés :
- FirstWord, avec la valeur « Hello »
- SecondWord, avec la valeur « World »
Exemple 4 : Utilisez une expression comme valeur du paramètre TemplateContent, enregistrez les résultats dans une variable.
$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
'@
$testText |
ConvertFrom-String -TemplateContent $template -OutVariable PersonalData |
Out-Null
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
C:\ >
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
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 définie.
Les exemples de données, $template, fournissent deux formats téléphoniques différents :
- 425-123-6789
- (206) 987-4321
Et 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 (il n’y a pas de trait d’union entre la séquence à trois chiffres et la séquence de quatre chiffres). Comme avec 3 ou plus âges de chiffres, ils ne seront pas reconnus.
Exemple 5 : Spécification de types de données aux propriétés générées
$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
'@
$testText |
ConvertFrom-String -TemplateContent $template -OutVariable PersonalData | Out-Null
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
C:\ >
Il s’agit du même exemple que le n° 4, ci-dessus ; les seules différences sont dans la chaîne de modèle qui inclut un type de données pour chaque propriété souhaitée. Notez la différence d’alignement de la colonne d’âge entre les deux exemples.
Exemple 5A : Connaître l’objet généré
$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
'@
$testText |
ConvertFrom-String -TemplateContent $template -OutVariable PersonalData |
Out-Null
$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
C:\ >
Get-Member montre que l’âge est de type 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 à System.Text.RegularExpressions.RegularExpression.Split().
Type: | String |
Alias: | DEL |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-IncludeExtent
Indique que cette applet de commande inclut une propriété de texte d’extension supprimée par défaut.
Type: | SwitchParameter |
Alias: | IE |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-InputObject
Spécifie les chaînes reçues du pipeline ou une variable qui contient un objet de chaîne.
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 |
-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, Windows 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, Windows PowerShell attribue automatiquement des noms de propriétés numériques à toutes les propriétés qui ne sont pas nommées : P1, P2, etc.
Type: | String[] |
Alias: | PN |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | 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(sequence-spec, par exemple *) :example-value}. Par exemple, {PersonInfo* :{Name :Patti Fuller}.
Type: | String[] |
Alias: | TC |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | 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 illustré dans l’exemple suivant. 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*:D avid Chew}
{City :Redmond}, {State :WA}
{Name* :Evan Narvaez} {Name* :Antonio Moreno}
{City :Issaquah}, {State :WA}
Type: | String[] |
Alias: | TF |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | 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.
Type: | SwitchParameter |
Alias: | UT |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |