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