ConvertFrom-String
Extrahiert und analysiert strukturierte Eigenschaften aus Zeichenfolgeninhalten.
Syntax
ByDelimiter (Standard)
ConvertFrom-String
[-InputObject] <String>
[-Delimiter <String>]
[-PropertyNames <String[]>]
[<CommonParameters>]
TemplateParsing
ConvertFrom-String
[-InputObject] <String>
[-TemplateFile <String[]>]
[-TemplateContent <String[]>]
[-IncludeExtent]
[-UpdateTemplate]
[<CommonParameters>]
Beschreibung
Das cmdlet ConvertFrom-String extrahiert und analysiert strukturierte Eigenschaften aus Zeichenfolgeninhalten. Dieses Cmdlet generiert ein Objekt durch Analysieren von Text aus einem herkömmlichen Textstrom. Für jede Zeichenfolge in der Pipeline teilt das Cmdlet die Eingabe entweder durch ein Trennzeichen oder einen Analyseausdruck und weist dann jedem der resultierenden geteilten Elemente Eigenschaftsnamen zu. Sie können diese Eigenschaftennamen angeben; Wenn Sie dies nicht tun, werden sie automatisch für Sie generiert.
Der Standardparametersatz des Cmdlets, ByDelimiter, teilt sich genau auf das Trennzeichen für reguläre Ausdrücke. Es wird kein Anführungszeichenabgleich oder Trennzeichen ausgeführt, das abgefangen wird, wie das cmdlet Import-Csv.
Der alternative Parametersatz des Cmdlets TemplateParsinggeneriert Elemente aus den Gruppen, die von einem regulären Ausdruck erfasst werden. Weitere Informationen zu regulären Ausdrücken finden Sie unter about_Regular_Expressions.
Dieses Cmdlet unterstützt zwei Modi: einfache, durch Trennzeichen getrennte Analyse und automatisch generierte, beispielgesteuerte Analyse.
Durch Trennzeichen getrennte Analyse teilt die Eingabe standardmäßig im Leerraum und weist den resultierenden Gruppen Eigenschaftsnamen zu.
Sie können das Trennzeichen anpassen, indem Sie die ConvertFrom-String Ergebnisse in eines der Format-* Cmdlets weiterleiten, oder Sie können den parameter Delimiter verwenden.
Das Cmdlet unterstützt auch automatisch generierte, beispielgesteuerte Analyse basierend auf dem FlashExtract, Forschungsarbeit von Microsoft Research.
Beispiele
Beispiel 1: Generieren eines Objekts mit Standardeigenschaftennamen
"Hello World" | ConvertFrom-String
P1 P2
-- --
Hello World
Mit diesem Befehl wird ein Objekt mit Standardeigenschaftennamen, P1 und P2-generiert.
Beispiel 1A: Kennenlernen des generierten Objekts
Dieser Befehl generiert ein Objekt mit Eigenschaften P1, P2; Beide Eigenschaften weisen standardmäßig String Typ auf.
"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
Beispiel 2: Generieren eines Objekts mit Standardeigenschaftennamen mithilfe eines Trennzeichens
Mit diesem Befehl wird ein Objekt mit einer Domäne und einem Benutzernamen generiert, wobei der umgekehrte Schrägstrich (\) als Trennzeichen verwendet wird. Das umgekehrte Schrägstrichzeichen muss bei Verwendung regulärer Ausdrücke mit einem anderen umgekehrten Schrägstrich escapet werden.
"Contoso\Administrator" | ConvertFrom-String -Delimiter "\\"
P1 P2
-- --
Contoso Administrator
Beispiel 3: Generieren eines Objekts, das zwei benannte Eigenschaften enthält
Im folgenden Beispiel werden Objekte aus Windows-Hostdateieinträgen erstellt.
$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
Das Cmdlet Get-Content speichert den Inhalt einer Windows-Hostdatei in $content. Der zweite Befehl entfernt alle Kommentare am Anfang der Hostdatei mithilfe eines regulären Ausdrucks, der mit einer Zeile übereinstimmt, die nicht mit (#) beginnt. Der letzte Befehl konvertiert den verbleibenden Text in Objekte mit Server- und IP- Eigenschaften.
Beispiel 4: Verwenden Sie einen Ausdruck als Wert des TemplateContent-Parameters, und speichern Sie die Ergebnisse in einer Variablen.
Dieser Befehl verwendet einen Ausdruck als Wert des TemplateContent--Parameters. Der Ausdruck wird aus Gründen der Einfachheit in einer Variablen gespeichert. Windows PowerShell versteht jetzt, dass die Zeichenfolge, die für die Pipeline zum ConvertFrom-String verwendet wird, drei Eigenschaften aufweist:
- Name
- Telefon-
- Alter
$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
Jede Zeile in der Eingabe wird von den Beispiel-Übereinstimmungen ausgewertet. Wenn die Zeile den Beispielen im Muster entspricht, werden Werte extrahiert und an die Ausgabevariable übergeben.
Die Beispieldaten, $template, bieten zwei verschiedene Telefonformate:
425-123-6789(206) 987-4321
Die Beispieldaten bieten auch zwei verschiedene Altersformate:
612
Dies bedeutet, dass Smartphones wie (206) 987 4321 nicht erkannt werden, da keine Beispieldaten vorhanden sind, die diesem Muster entsprechen, da keine Bindestriche vorhanden sind.
Beispiel 5: Angeben von Datentypen für die generierten Eigenschaften
Dies ist das gleiche Beispiel wie Beispiel 4 oben. Der Unterschied besteht darin, dass die Musterzeichenfolge für jede gewünschte Eigenschaft einen Datentyp enthält.
$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
Das cmdlet Get-Member wird verwendet, um anzuzeigen, dass die eigenschaft alter eine ganze Zahl ist.
Parameter
-Delimiter
Gibt einen regulären Ausdruck an, der die Grenze zwischen Elementen identifiziert. Elemente, die durch die Aufteilung erstellt werden, werden zu Eigenschaften im resultierenden Objekt. Das Trennzeichen wird letztendlich in einem Aufruf der Split-Methode des Typs [System.Text.RegularExpressions.RegularExpression]verwendet.
Parametereigenschaften
| Typ: | String |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | DEL |
Parametersätze
ByDelimiter
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-IncludeExtent
Gibt an, dass dieses Cmdlet eine Erweiterungstexteigenschaft enthält, die standardmäßig entfernt wird.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | Internet Explorer |
Parametersätze
TemplateParsing
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-InputObject
Gibt Zeichenfolgen an, die von der Pipeline empfangen werden, oder eine Variable, die ein Zeichenfolgenobjekt enthält.
Parametereigenschaften
| Typ: | String |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | 0 |
| Obligatorisch: | True |
| Wert aus Pipeline: | True |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-PropertyNames
Gibt ein Array von Eigenschaftennamen an, dem geteilte Werte im resultierenden Objekt zugewiesen werden sollen. Jede Textzeile, die Sie teilen oder analysieren, generiert Elemente, die Eigenschaftswerte darstellen. Wenn das Element das Ergebnis einer Aufnahmegruppe ist und diese Aufnahmegruppe benannt wird (z. B. (?<name>) oder (?'name')), wird der Name dieser Aufnahmegruppe der Eigenschaft zugewiesen.
Wenn Sie Elemente im PropertyName- Array angeben, werden diese Namen Eigenschaften zugewiesen, die noch nicht benannt wurden.
Wenn Sie mehr Eigenschaftsnamen angeben, als Felder vorhanden sind, ignoriert PowerShell die zusätzlichen Eigenschaftennamen. Wenn Sie nicht genügend Eigenschaftennamen angeben, um alle Felder zu benennen, weist PowerShell automatisch numerische Eigenschaftennamen allen Eigenschaften zu, die nicht benannt sind: P1, P2usw.
Parametereigenschaften
| Typ: | String[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | PN |
Parametersätze
ByDelimiter
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-TemplateContent
Gibt einen Ausdruck oder einen Als Variable gespeicherten Ausdruck an, der die Eigenschaften beschreibt, denen dieses Cmdlet Zeichenfolgen zuweist. Die Syntax einer Vorlagenfeldspezifikation lautet wie folgt: {[optional-typecast]<name>:<example-value>}.
Parametereigenschaften
| Typ: | String[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | TC |
Parametersätze
TemplateParsing
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-TemplateFile
Gibt eine Datei als Array an, die eine Vorlage für die gewünschte Analyse der Zeichenfolge enthält. In der Vorlagendatei sind Eigenschaften und deren Werte in eckige Klammern eingeschlossen, wie unten dargestellt. Wenn eine Eigenschaft, z. B. die Name-Eigenschaft und die zugehörigen anderen Eigenschaften, mehrmals angezeigt wird, können Sie ein Sternchen (*) hinzufügen, um anzugeben, dass dies zu mehreren Datensätzen führt. Dadurch wird verhindert, dass mehrere Eigenschaften in einen einzelnen Datensatz extrahiert werden.
{Name*:David Chew}
{City:Redmond}, {State:WA}
{Name*:Evan Narvaez} {Name*:Antonio Moreno}
{City:Issaquah}, {State:WA}
Parametereigenschaften
| Typ: | String[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | TF |
Parametersätze
TemplateParsing
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-UpdateTemplate
Gibt an, dass dieses Cmdlet die Ergebnisse eines Lernalgorithmus in einem Kommentar in der Vorlagendatei speichert. Dadurch wird der Algorithmuslernprozess schneller. Um diesen Parameter zu verwenden, müssen Sie auch eine Vorlagendatei mit dem parameter TemplateFile angeben.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | UT |
Parametersätze
TemplateParsing
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
CommonParameters
Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.
Eingaben
String
Ausgaben
PSCustomObject
Hinweise
Windows PowerShell enthält die folgenden Aliase für ConvertFrom-String:
CFS