Dela via


ConvertFrom-String

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

Syntax

ByDelimiter (Standard)

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

TemplateParsing

ConvertFrom-String
    [-InputObject] <String>
    [-TemplateFile <String[]>]
    [-TemplateContent <String[]>]
    [-IncludeExtent]
    [-UpdateTemplate]
    [<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. Mer information om reguljära uttryck finns i about_Regular_Expressions.

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änsare genom att skicka ConvertFrom-String resultat till någon av Format-* cmdletarna, eller så kan du 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

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

Det här kommandot genererar ett objekt med standardegenskapsnamn, P1 och P2.

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

Det här kommandot genererar ett objekt med egenskaper P1, P2; båda egenskaperna är av Sträng typ, som standard.

"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

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

Det här kommandot genererar ett objekt med en domän och ett användarnamn med hjälp av omvänt snedstreck (\) som avgränsare. Omvänt snedstreck måste vara undantagna med ett annat omvänt snedstreck när du använder reguljära uttryck.

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

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

I följande exempel skapas objekt från Windows-värdfilposter.

$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

Cmdleten Get-Content lagrar innehållet i en Windows-värdfil i $content. Det andra kommandot tar bort eventuella kommentarer i början av värdfilen med ett reguljärt uttryck som matchar alla rader som inte börjar med (#). Det sista kommandot konverterar den återstående texten till objekt med egenskaperna Server och IP-.

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

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

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

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

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

Exempeldata innehåller också 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 eftersom det inte finns några bindestreck.

Exempel 5: Ange datatyper till de genererade egenskaperna

Det här är samma exempel som exempel 4 ovan. Skillnaden är att mönstersträngen innehåller en datatyp för varje önskad egenskap.

$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

Cmdleten Get-Member används för att visa att egenskapen ålder är ett heltal.

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 metoden Split av typen [System.Text.RegularExpressions.RegularExpression].

Parameteregenskaper

Typ:String
Standardvärde:None
Stöder jokertecken:False
DontShow:False
Alias:DEL

Parameteruppsättningar

ByDelimiter
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-IncludeExtent

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

Parameteregenskaper

Typ:SwitchParameter
Standardvärde:None
Stöder jokertecken:False
DontShow:False
Alias:Internet Explorer

Parameteruppsättningar

TemplateParsing
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-InputObject

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

Parameteregenskaper

Typ:String
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:0
Obligatorisk:True
Värde från pipeline:True
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument: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 vad som finns fält ignorerar PowerShell de extra egenskapsnamnen. Om du inte anger tillräckligt många egenskapsnamn för att namnge alla fält tilldelar PowerShell automatiskt numeriska egenskapsnamn till alla egenskaper som inte heter: P1, P2osv.

Parameteregenskaper

Typ:

String[]

Standardvärde:None
Stöder jokertecken:False
DontShow:False
Alias:PN

Parameteruppsättningar

ByDelimiter
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument: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>:<example-value>}.

Parameteregenskaper

Typ:

String[]

Standardvärde:None
Stöder jokertecken:False
DontShow:False
Alias:TC

Parameteruppsättningar

TemplateParsing
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument: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, enligt nedan. Om en egenskap, till exempel egenskapen Name 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.

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

Parameteregenskaper

Typ:

String[]

Standardvärde:None
Stöder jokertecken:False
DontShow:False
Alias:TF

Parameteruppsättningar

TemplateParsing
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument: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.

Parameteregenskaper

Typ:SwitchParameter
Standardvärde:None
Stöder jokertecken:False
DontShow:False
Alias:UT

Parameteruppsättningar

TemplateParsing
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

CommonParameters

Den här cmdleten stöder vanliga parametrar: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction och -WarningVariable. Mer information finns i about_CommonParameters.

Indata

String

Utdata

PSCustomObject

Kommentarer

Windows PowerShell innehåller följande alias för ConvertFrom-String:

  • CFS