ConvertFrom-String

Extraherar och parsar strukturerade egenskaper från stränginnehåll.

Syntax

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

Description

Cmdleten ConvertFrom-String extraherar och parsar strukturerade egenskaper från stränginnehåll. Den här cmdleten genererar ett objekt genom att parsa text från en traditionell textström. För varje sträng i pipelinen delar cmdleten indata med antingen en avgränsare eller ett parsningsuttryck och tilldelar sedan egenskapsnamn till vart och ett av de resulterande delade elementen. Du kan ange dessa egenskapsnamn. Om du inte gör det genereras de automatiskt åt dig.

Cmdletens standardparameteruppsättning, ByDelimiter, delar exakt på avgränsare för reguljära uttryck. Den utför inte citatmatchning eller avgränsare som flyr som cmdleten Import-Csv.

Cmdletens alternativa parameteruppsättning, TemplateParsing, genererar element från de grupper som fångas upp av ett reguljärt uttryck.

Den här cmdleten stöder två lägen: grundläggande avgränsad parsning och automatiskt genererad exempeldriven parsning.

Avgränsad parsning delar som standard indata i tomt utrymme och tilldelar egenskapsnamn till de resulterande grupperna. Du kan anpassa avgränsaren genom att skicka ConvertFrom-String resultat till en av cmdletarna Format-* eller använda parametern Avgränsare.

Cmdleten stöder också automatiskt genererad, exempeldriven parsning baserat på FlashExtract, forskningsarbete av Microsoft Research.

Exempel

Exempel 1: Generera ett objekt med standardegenskapsnamn

PS C:\> "Hello World" | ConvertFrom-String

P1    P2
--    --
Hello World


PS C:\>

Det här kommandot genererar ett objekt med standardegenskapsnamnen P1 och P2. Resultaten är P1="Hello" och P2="World".

Exempel 1A: Lär känna det genererade objektet

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:\>

Kommandot genererar ett objekt med egenskaperna P1, P2; båda egenskaperna är av typen "sträng" som standard.

Exempel 2: Generera ett objekt med standardegenskapsnamn med en avgränsare

PS C:\> "Hello World" | ConvertFrom-String -Delimiter "ll"

P1 P2
-- --
He o World


PS C:\>

Det här kommandot genererar ett objekt med egenskaperna P1="He" och P2="o World" genom att ange "ll" i Hello som avgränsare.

Exempel 3: Generera ett objekt som innehåller två namngivna egenskaper

PS C:\> "Hello World" | ConvertFrom-String -PropertyNames FirstWord, SecondWord

FirstWord SecondWord
--------- ----------
Hello     World


PS C:\>

Det här kommandot genererar ett objekt som innehåller två egenskaper:

  • FirstWordmed värdet "Hello"
  • SecondWord, med värdet "World"

Exempel 4: Använd ett uttryck som värde för parametern TemplateContent och spara resultatet i en variabel.

$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:\ >

Det här kommandot använder ett uttryck som värdet för parametern TemplateContent. Uttrycket sparas i en variabel för enkelhetens skull. Windows PowerShell förstår nu att strängen som används i pipelinen för att ConvertFrom-String har tre egenskaper:

  • namn
  • telefon
  • ålder

Varje rad i indata utvärderas av exempelmatchningarna. Om raden matchar exemplen i mönstret extraheras värden och skickas till den definierade utdatavariabeln.

Exempeldata, $template, innehåller två olika telefonformat:

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

Och två olika åldersformat:

  • 6
  • 12

Detta innebär att telefoner som (206) 987 4321 inte identifieras, eftersom det inte finns några exempeldata som matchar det mönstret (det finns inget bindestreck mellan tresiffrig sekvens och fyrsiffrig sekvens). Liknande med 3 eller fler siffra åldrar, kommer de inte att kännas igen.

Exempel 5: Ange datatyper till de genererade egenskaperna

$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:\ >

Det här är samma exempel som nr 4, ovan; de enda skillnaderna är i mönstersträngen som innehåller en datatyp för varje önskad egenskap. Observera skillnaden i justering för ålderskolumnen mellan båda exemplen.

Exempel 5A: Lär känna det genererade objektet

$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 visar att ålder är av heltalstyp.

Parametrar

-Delimiter

Anger ett reguljärt uttryck som identifierar gränsen mellan element. Element som skapas av delningen blir egenskaper i det resulterande objektet. Avgränsare används slutligen i ett anrop till System.Text.RegularExpressions.RegularExpression.Split().

Typ:String
Alias:DEL
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-IncludeExtent

Anger att den här cmdleten innehåller en textegenskap för omfattning som tas bort som standard.

Typ:SwitchParameter
Alias:IE
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-InputObject

Anger strängar som tas emot från pipelinen eller en variabel som innehåller ett strängobjekt.

Typ:String
Position:0
Standardvärde:None
Obligatorisk:True
Godkänn pipeline-indata:True
Godkänn jokertecken:False

-PropertyNames

Anger en matris med egenskapsnamn som du vill tilldela delade värden till i det resulterande objektet. Varje textrad som du delar upp eller parsar genererar element som representerar egenskapsvärden. Om elementet är resultatet av en avbildningsgrupp och avbildningsgruppen namnges (till exempel (?<name>) eller (?'name') ) tilldelas namnet på avbildningsgruppen egenskapen.

Om du anger några element i matrisen PropertyName tilldelas dessa namn till egenskaper som ännu inte har fått namnet.

Om du anger fler egenskapsnamn än det finns fält ignorerar Windows PowerShell de extra egenskapsnamnen. Om du inte anger tillräckligt många egenskapsnamn för att namnge alla fält tilldelar Windows PowerShell automatiskt numeriska egenskapsnamn till alla egenskaper som inte heter: P1, P2 osv.

Typ:String[]
Alias:PN
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-TemplateContent

Anger ett uttryck, eller ett uttryck som sparats som en variabel, som beskriver de egenskaper som den här cmdleten tilldelar strängar till. Syntaxen för en mallfältspecifikation är följande: {[optional-typecast]name(sequence-spec, till exempel *):example-value}. Ett exempel är {PersonInfo*:{Name:Patti Fuller}.

Typ:String[]
Alias:TC
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-TemplateFile

Anger en fil som en matris som innehåller en mall för önskad parsning av strängen. I mallfilen omges egenskaper och deras värden inom hakparenteser, som du ser i följande exempel. Om en egenskap, till exempel egenskapen Namn och dess associerade andra egenskaper, visas flera gånger kan du lägga till en asterisk (*) som anger att detta resulterar i flera poster. På så sätt undviker du att extrahera flera egenskaper till en enda post.

{Namn*:D avid Chew}

{City:Redmond}, {State:WA}

{Namn*:Evan Narvaez} {Namn*:Antonio Moreno}

{City:Issaquah}, {State:WA}

Typ:String[]
Alias:TF
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-UpdateTemplate

Anger att den här cmdleten sparar resultatet av en inlärningsalgoritm i en kommentar i mallfilen. Detta gör algoritminlärningsprocessen snabbare. Om du vill använda den här parametern måste du också ange en mallfil med parametern TemplateFile.

Typ:SwitchParameter
Alias:UT
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

Indata

String