Delen via


ConvertFrom-String

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

Syntax

ByDelimiter (Standaard)

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

TemplateParsing

ConvertFrom-String
    [-InputObject] <String>
    [-TemplateFile <String[]>]
    [-TemplateContent <String[]>]
    [-IncludeExtent]
    [-UpdateTemplate]
    [<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. Zie about_Regular_Expressionsvoor meer informatie over reguliere expressies.

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 door te leiden naar een van de Format-* cmdlets, 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

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

Met deze opdracht wordt een object gegenereerd met standaardeigenschapsnamen, P1 en P2-.

Voorbeeld 1A: Kennismaken met het gegenereerde object

Met deze opdracht wordt één object gegenereerd met eigenschappen P1, P2; beide eigenschappen zijn standaard van tekenreekstype.

"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

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

Met deze opdracht wordt een object met een domein en gebruikersnaam gegenereerd met behulp van de backslash (\) als scheidingsteken. Het backslash-teken moet worden escaped met een andere backslash wanneer u reguliere expressies gebruikt.

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

Voorbeeld 3: Een object genereren dat twee benoemde eigenschappen bevat

In het volgende voorbeeld worden objecten gemaakt op basis van bestandsvermeldingen van Windows-hosts.

$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

De cmdlet Get-Content slaat de inhoud van een Windows-hostsbestand op in $content. Met de tweede opdracht worden opmerkingen aan het begin van het hosts-bestand verwijderd met behulp van een reguliere expressie die overeenkomt met een regel die niet begint met (#). Met de laatste opdracht wordt de resterende tekst geconverteerd naar objecten met Server-- en IP--eigenschappen.

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

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

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 uitvoervariabele.

De voorbeeldgegevens, $template, bieden twee verschillende telefoonindelingen:

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

De voorbeeldgegevens bieden ook twee verschillende leeftijdsindelingen:

  • 6
  • 12

Dit betekent dat telefoons zoals (206) 987 4321 niet worden herkend, omdat er geen voorbeeldgegevens zijn die overeenkomen met dat patroon, omdat er geen afbreekstreepjes zijn.

Voorbeeld 5: Gegevenstypen opgeven voor de gegenereerde eigenschappen

Dit is hetzelfde voorbeeld als voorbeeld 4 hierboven. Het verschil is dat de patroontekenreeks een gegevenstype voor elke gewenste eigenschap bevat.

$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

De cmdlet Get-Member wordt gebruikt om aan te geven dat de eigenschap leeftijd een 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 de methode Split van het type [System.Text.RegularExpressions.RegularExpression].

Parametereigenschappen

Type:String
Default value:None
Ondersteunt jokertekens:False
DontShow:False
Aliassen:DEL

Parametersets

ByDelimiter
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

-IncludeExtent

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

Parametereigenschappen

Type:SwitchParameter
Default value:None
Ondersteunt jokertekens:False
DontShow:False
Aliassen:IE

Parametersets

TemplateParsing
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

-InputObject

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

Parametereigenschappen

Type:String
Default value:None
Ondersteunt jokertekens:False
DontShow:False

Parametersets

(All)
Position:0
Verplicht:True
Waarde uit pijplijn:True
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten: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, negeert PowerShell de extra eigenschapsnamen. Als u niet voldoende eigenschapsnamen opgeeft om alle velden een naam te geven, wijst PowerShell automatisch numerieke eigenschapsnamen toe aan eigenschappen die niet de naam hebben: P1, P2, enzovoort.

Parametereigenschappen

Type:

String[]

Default value:None
Ondersteunt jokertekens:False
DontShow:False
Aliassen:PN

Parametersets

ByDelimiter
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten: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>:<example-value>}.

Parametereigenschappen

Type:

String[]

Default value:None
Ondersteunt jokertekens:False
DontShow:False
Aliassen:TC

Parametersets

TemplateParsing
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten: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 hieronder wordt weergegeven. 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*:David Chew}
{City:Redmond}, {State:WA}
{Name*:Evan Narvaez}    {Name*:Antonio Moreno}
{City:Issaquah}, {State:WA}

Parametereigenschappen

Type:

String[]

Default value:None
Ondersteunt jokertekens:False
DontShow:False
Aliassen:TF

Parametersets

TemplateParsing
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten: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.

Parametereigenschappen

Type:SwitchParameter
Default value:None
Ondersteunt jokertekens:False
DontShow:False
Aliassen:UT

Parametersets

TemplateParsing
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

CommonParameters

Deze cmdlet ondersteunt de algemene parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction en -WarningVariable. Zie about_CommonParametersvoor meer informatie.

Invoerwaarden

String

Uitvoerwaarden

PSCustomObject

Notities

Windows PowerShell bevat de volgende aliassen voor ConvertFrom-String:

  • CFS