Freigeben über


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 Do Standard 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 erneuten Standard 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 , $templatestellt 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.

Type:String
Aliases:DEL
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-IncludeExtent

Gibt an, dass dieses Cmdlet eine Erweiterungstexteigenschaft enthält, die standardmäßig entfernt wird.

Type:SwitchParameter
Aliases:IE
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

Gibt Zeichenfolgen an, die von der Pipeline empfangen werden, oder eine Variable, die ein Zeichenfolgenobjekt enthält.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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.

Type:String[]
Aliases:PN
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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>}.

Type:String[]
Aliases:TC
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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}

Type:String[]
Aliases:TF
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:SwitchParameter
Aliases:UT
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Eingaben

String

Ausgaben

PSCustomObject

Hinweise

Windows PowerShell enthält die folgenden Aliase für ConvertFrom-String:

  • CFS