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 |