ConvertFrom-String
Extrahiert und analysiert strukturierte Eigenschaften aus Zeichenfolgeninhalten.
Syntax
ConvertFrom-String
[-Delimiter <String>]
[-PropertyNames <String[]>]
[-InputObject] <String>
[<CommonParameters>]
ConvertFrom-String
[-TemplateFile <String[]>]
[-TemplateContent <String[]>]
[-IncludeExtent]
[-UpdateTemplate]
[-InputObject] <String>
[<CommonParameters>]
Beschreibung
Das ConvertFrom-String
Cmdlet 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 führt keine Anführungszeichenabgleich oder Trennzeichen aus, die wie das Cmdlet verwendet Import-Csv
wird.
Der alternative Parametersatz des Cmdlets TemplateParsing generiert 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.
Bei der getrennten Analyse wird die Eingabe standardmäßig bei Leerzeichen getrennt, wobei den resultierenden Gruppen Eigenschaftsnamen zugewiesen werden.
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 flashExtract , Recherchearbeit von Microsoft Research.
Beispiele
Beispiel 1: Generieren eines Objekts mit Standardeigenschaftennamen
"Hello World" | ConvertFrom-String
P1 P2
-- --
Hello World
Dieser Befehl generiert ein Objekt mit Standardeigenschaftennamen, P1 und P2.
Beispiel 1A: Kennenlernen des generierten Objekts
Dieser Befehl generiert ein Objekt mit den Eigenschaften P1, P2. Beide Eigenschaften sind standardmäßig vom Typ String .
"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 Get-Content
Cmdlet speichert den Inhalt einer Windows-Hosts-Datei 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 verwendet wird, ConvertFrom-String
drei Eigenschaften aufweist:
- Name
- Telefon
- age
$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
stellt zwei verschiedene Telefonformate bereit:
425-123-6789
(206) 987-4321
Die Beispieldaten bieten auch zwei verschiedene Altersformate:
6
12
Dies bedeutet, dass Smartphones wie (206) 987 4321
nicht erkannt werden, da es keine Beispieldaten gibt, 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 Get-Member
Cmdlet wird verwendet, um anzuzeigen, dass die Alterseigenschaft 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.
Typ: | String |
Aliase: | DEL |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-IncludeExtent
Gibt an, dass dieses Cmdlet eine Erweiterungstexteigenschaft enthält, die standardmäßig entfernt wird.
Typ: | SwitchParameter |
Aliase: | IE |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-InputObject
Gibt Zeichenfolgen an, die von der Pipeline empfangen werden, oder eine Variable, die ein Zeichenfolgenobjekt enthält.
Typ: | String |
Position: | 0 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | 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 (?<name>)
. B. oder (?'name')
), wird der Eigenschaft der Name dieser Aufnahmegruppe 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 Eigenschaftsnamen angeben, um alle Felder zu benennen, weist PowerShell automatisch numerische Eigenschaftennamen allen Eigenschaften zu, die nicht benannt sind: P1, P2 usw.
Typ: | String[] |
Aliase: | PN |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | 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>}
.
Typ: | String[] |
Aliase: | TC |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | 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*:D avid Chew} {City:Redmond}, {State:WA} {Name*:Evan Narvaez} {Name*:Antonio Moreno} {City:Issaquah}, {State:WA}
Typ: | String[] |
Aliase: | TF |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | 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.
Typ: | SwitchParameter |
Aliase: | UT |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
Eingaben
Ausgaben
Hinweise
Windows PowerShell enthält die folgenden Aliase für ConvertFrom-String
:
CFS