Delen via


ConvertFrom-String

Hiermee worden gestructureerde eigenschappen uit tekenreeksinhoud geëxtraheerd en geparseerd.

Syntaxis

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

Description

De ConvertFrom-String cmdlet extraheert en parseert gestructureerde eigenschappen uit tekenreeksinhoud. Met deze cmdlet wordt een object gegenereerd door tekst van een traditionele tekststroom te parseren. Voor elke tekenreeks in de pijplijn splitst de cmdlet de invoer door een scheidingsteken of een parseringsexpressie en wijst vervolgens eigenschapsnamen toe aan elk van de resulterende gesplitste elementen. U kunt deze eigenschapsnamen opgeven; Als u dat niet doet, worden deze automatisch voor u gegenereerd.

De standaardparameterset van de cmdlet, ByDelimiter, splitst exact op het scheidingsteken voor reguliere expressies. Er wordt geen overeenkomende aanhalingstekens of scheidingstekens uitgevoerd, zoals de Import-Csv cmdlet wel doet.

De alternatieve parameterset van de cmdlet, TemplateParsing, genereert elementen van de groepen die worden vastgelegd met een reguliere expressie.

Deze cmdlet ondersteunt twee modi: eenvoudige door scheidingstekens gescheiden parsering en automatisch gegenereerde, voorbeeldgestuurde parsering.

Door scheidingstekens gescheiden parseren splitst standaard de invoer op witruimte en wijst eigenschapsnamen toe aan de resulterende groepen. U kunt het scheidingsteken aanpassen door de ConvertFrom-String resultaten in een van de cmdlets Format-* te gebruiken of u kunt de parameter Scheidingsteken gebruiken.

De cmdlet biedt ook ondersteuning voor automatisch gegenereerde, voorbeeldgestuurde parsering op basis van de FlashExtract, onderzoekwerk van Microsoft Research.

Voorbeelden

Voorbeeld 1: Een object genereren met standaardeigenschapsnamen

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

P1    P2
--    --
Hello World


PS C:\>

Met deze opdracht wordt een object gegenereerd met standaardeigenschapsnamen, P1 en P2. De resultaten zijn P1="Hallo" en P2="Wereld".

Voorbeeld 1A: Kennismaken met het gegenereerde object

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

Met de opdracht wordt één object gegenereerd met eigenschappen P1, P2; beide eigenschappen zijn standaard van het type 'tekenreeks'.

Voorbeeld 2: Een object genereren met standaardeigenschapsnamen met behulp van een scheidingsteken

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

P1 P2
-- --
He o World


PS C:\>

Met deze opdracht wordt een object gegenereerd met de eigenschappen P1="He" en P2="o World" door de 'll' in Hello op te geven als het scheidingsteken.

Voorbeeld 3: Een object genereren dat twee benoemde eigenschappen bevat

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

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


PS C:\>

Met deze opdracht wordt een object gegenereerd dat twee eigenschappen bevat:

  • FirstWord-, met de waarde 'Hallo'
  • SecondWord-, met de waarde 'Wereld'

Voorbeeld 4: Gebruik een expressie als de waarde van de parameter TemplateContent en sla de resultaten op in een variabele.

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

Met deze opdracht wordt een expressie gebruikt als de waarde van de parameter TemplateContent. De expressie wordt voor het gemak opgeslagen in een variabele. Windows PowerShell begrijpt nu dat de tekenreeks die in de pijplijn wordt gebruikt om te ConvertFrom-String drie eigenschappen heeft:

  • naam
  • telefoon
  • leeftijd

Elke regel in de invoer wordt geëvalueerd door de voorbeeldovereenkomsten; als de lijn overeenkomt met de voorbeelden in het patroon, worden waarden geëxtraheerd en doorgegeven aan de gedefinieerde uitvoervariabele.

De voorbeeldgegevens, $template, bieden twee verschillende telefoonindelingen:

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

En twee verschillende leeftijdsindelingen:

  • 6
  • 12

Dit impliceert dat telefoons zoals (206) 987 4321 niet worden herkend, omdat er geen voorbeeldgegevens zijn die overeenkomen met dat patroon (er is geen afbreekstreepje tussen de drie cijfersreeks en de vier cijferreeks). Vergelijkbaar met 3 of meer leeftijden van cijfers, worden ze niet herkend.

Voorbeeld 5: Gegevenstypen opgeven voor de gegenereerde eigenschappen

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

Dit is hetzelfde voorbeeld als nr. 4 hierboven; de enige verschillen zijn in de patroontekenreeks die een gegevenstype voor elke gewenste eigenschap bevat. Let op het verschil in uitlijning voor de kolom leeftijd tussen beide voorbeelden.

Voorbeeld 5A: Kennismaken met het gegenereerde object

$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 geeft aan dat de leeftijd van het type geheel getal is.

Parameters

-Delimiter

Hiermee geeft u een reguliere expressie die de grens tussen elementen identificeert. Elementen die door de splitsing worden gemaakt, worden eigenschappen in het resulterende object. Het scheidingsteken wordt uiteindelijk gebruikt in een aanroep naar System.Text.RegularExpressions.RegularExpression.Split().

Type:String
Aliassen:DEL
Position:Named
Default value:None
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-IncludeExtent

Geeft aan dat deze cmdlet een teksteigenschap voor gebieden bevat die standaard wordt verwijderd.

Type:SwitchParameter
Aliassen:IE
Position:Named
Default value:None
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-InputObject

Hiermee geeft u tekenreeksen op die zijn ontvangen van de pijplijn of een variabele die een tekenreeksobject bevat.

Type:String
Position:0
Default value:None
Vereist:True
Pijplijninvoer accepteren:True
Jokertekens accepteren:False

-PropertyNames

Hiermee geeft u een matrix van eigenschapsnamen waaraan gesplitste waarden in het resulterende object moeten worden toegewezen. Elke tekstregel die u splitst of parseert, genereert elementen die eigenschapswaarden vertegenwoordigen. Als het element het resultaat is van een capture-groep en die capturegroep een naam heeft (bijvoorbeeld (?<name>) of (?'name')), wordt de naam van die capture-groep toegewezen aan de eigenschap.

Als u elementen opgeeft in de PropertyName matrix, worden deze namen toegewezen aan eigenschappen die nog niet zijn benoemd.

Als u meer eigenschapsnamen opgeeft dan er velden zijn, worden de extra eigenschapsnamen genegeerd in Windows PowerShell. Als u niet voldoende eigenschapsnamen opgeeft om alle velden een naam te geven, wijst Windows PowerShell automatisch numerieke eigenschapsnamen toe aan eigenschappen die niet de naam hebben: P1, P2, enzovoort.

Type:String[]
Aliassen:PN
Position:Named
Default value:None
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-TemplateContent

Hiermee geeft u een expressie of een expressie op die is opgeslagen als een variabele, die de eigenschappen beschrijft waaraan deze cmdlet tekenreeksen toewijst. De syntaxis van een sjabloonveldspecificatie is het volgende: {[optional-typecast]name(sequence-spec, bijvoorbeeld *):example-value}. Een voorbeeld is {PersonInfo*:{Name:Patti Fuller}.

Type:String[]
Aliassen:TC
Position:Named
Default value:None
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-TemplateFile

Hiermee geeft u een bestand op, als matrix, dat een sjabloon bevat voor de gewenste parsering van de tekenreeks. In het sjabloonbestand worden eigenschappen en de bijbehorende waarden tussen vierkante haken geplaatst, zoals wordt weergegeven in het volgende voorbeeld. Als een eigenschap, zoals de eigenschap Name en de bijbehorende andere eigenschappen, meerdere keren wordt weergegeven, kunt u een sterretje (*) toevoegen om aan te geven dat dit resulteert in meerdere records. Dit voorkomt dat meerdere eigenschappen in één record worden geëxtraheerd.

{Name*:D avid Chew}

{City:Redmond}, {State:WA}

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

{Plaats:Issaquah}, {Staat:WA}

Type:String[]
Aliassen:TF
Position:Named
Default value:None
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-UpdateTemplate

Geeft aan dat deze cmdlet de resultaten van een leeralgoritmen opslaat in een opmerking in het sjabloonbestand. Hierdoor verloopt het leerproces van het algoritme sneller. Als u deze parameter wilt gebruiken, moet u ook een sjabloonbestand opgeven met de parameter TemplateFile.

Type:SwitchParameter
Aliassen:UT
Position:Named
Default value:None
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

Invoerwaarden

String