Analysieren Sie eine Zeichenfolge schmerzlos mit PowerShell 5

Objekt in PowerShell. Objekte sind eine strukturierte Möglichkeit, Informationen durch verschiedene Eigenschaften und Methoden darzustellen.

Es ist jedoch nicht alles ein schön strukturiertes Objekt. Es gibt Zeiten, in denen Administratoren mit unstrukturierten Daten wie einer großen Zeichenfolge umgehen müssen, die von einem Legacy-Programm ausgegeben wurde. Der Administrator muss diese Daten in ein strukturiertes Format konvertieren.

Administratoren werden viele der neuen Powershell 5-Funktionen mögen, die Microsoft entwickelt hat, insbesondere diejenigen, die für den Umgang mit unstrukturierten Daten entwickelt wurden. Eines der beliebtesten ist das ConvertFrom-String CmdletDies verkürzt die Zeit zum Konvertieren einer unstrukturierten Zeichenfolge in ein Objekt erheblich. Das ConvertFrom-String Das Cmdlet, das ursprünglich von Microsoft Research für das FlashExtract-Projekt entwickelt wurde, konvertiert unstrukturierte Zeichenfolgen, indem die Zeichenfolge anhand eines Trennzeichens oder einer Vorlage analysiert wird. Lassen Sie uns zunächst erläutern, wie ConvertFrom-String kann eine Zeichenfolge mit einem Trennzeichen in Objekte analysieren.

Verwenden des Trennzeichenparameters

Mit dem Delimiter-Parameter können wir einen regulären Ausdruck angeben, um die Zeichenfolge in verschiedene Elemente aufzuteilen. Angenommen, Sie haben eine Zeichenfolge mit Buchstabengruppen, die durch zwei Leerzeichen begrenzt sind. Um die Gruppen abzurufen, können Sie ein Trennzeichen aus zwei Leerzeichen verwenden und die Zeichenfolge als Eingabe für das verwenden ConvertFrom-String Cmdlet.

Begrenzerparameter
Verwenden des Delimiter-Parameters zum Teilen der unstrukturierten Zeichenfolge.

Sie können sehen, dass PowerShell drei Objekteigenschaften ausgibt: P1, P2 und P3. An dieser Stelle können Sie diese Eigenschaften dann nach Bedarf verwenden. P1, P2 und P3 sind jedoch keine sehr intuitiven Darstellungen der Daten, die diese Eigenschaften darstellen. Um Beschriftungen an die Eigenschaften anzuhängen, können Sie die verwenden PropertyNames Parameter, um sie mit etwas Beschreibenderem zu kennzeichnen, z. B. Gruppe 1, Gruppe 2 und Gruppe 3.
Obwohl dies eine nette Funktion ist, hat PowerShell 5 eine ähnliche Funktionalität wie diese ConvertFrom-StringData. Die interessantere Komponente von ConvertFrom-String ist die Fähigkeit, eine Zeichenfolge basierend auf einer Vorlage zu analysieren.
Das ConvertFrom-String Der Cmdlet-Vorlagenbegrenzer liefert eine Vorlage für ein bestimmtes Muster, das in der Zeichenfolge enthalten ist. Anhand dieses Musters kann das Cmdlet die Struktur verstehen und bessere Entscheidungen zum Parsen treffen. Beispiel: Eine Datei, die diesen Texttyp enthält:
Name: Craig Trudeau
Name: Merle Baldridge
Name: Adam Bertram
Name: George Lucas
Sie können das sagen ConvertFrom-String Cmdlet, in dem der Vor- und Nachname durch Angabe einer Vorlage wie der folgenden dargestellt wird:
Name: {Vorname *: Adam} {Nachname: Bertram}
Name: {Vorname *: Merdfdfle} {Nachname: Baldfdfd}
Dies würde zu vier Objekten mit einer FirstName- und einer LastName-Eigenschaft führen.

Vorlagenausgabe
Die Ausgabe erfolgt bei Angabe des Vor- und Nachnamens mit Vorlage.

Durch Angabe von zwei Instanzen, die wie die anderen aussahen, bestimmte das Cmdlet, wie die anderen analysiert werden sollen.
Jede Zeile beginnt mit “Name:”, aber ich möchte nicht, dass das erfasst wird, also muss ich das in die Vorlage aufnehmen. “Name:” steht für eine Zeichenfolge ConvertFrom-String Cmdlet muss finden. Als nächstes sehen Sie Text in geschweiften Klammern – diese zeigen an, dass alles, was in diesen Klammern erkannt wird, das ist, was Sie in der Ausgabe möchten. Ich muss das nicht benutzen PropertyNames Parameter dieses Mal, um die geordnete Ausgabe zu erhalten. Ich kann die Namen der Eigenschaften in der Vorlage angeben. Ich muss auch ein Sternchen verwenden, wenn die Zeichenfolge mehrere Referenzen enthält, die mit der Vorlage übereinstimmen. Das Sternchen kennzeichnet den Start einer neuen Gruppe.
Die von mir verwendete Vorlagenzeichenfolge war nicht mit einem der Namen in den Daten identisch. du brauchst nur eine Darstellung wie die Saite aussehen wird. Das Cmdlet wird den Rest herausfinden. Um dies zu testen, finden Sie den folgenden Codeblock, um eine Textdatei zu erstellen, sie in den Speicher einzulesen und dann mit zu analysieren ConvertFrom-String.

Codeblock
Als Beispiel für die Parsing-Fähigkeiten des Cmdlets erstellt dieser Code eine Textdatei, die dann mit ConvertFrom-String dekonstruiert wird.

Das Arbeiten mit komplizierteren Datensätzen erfordert höchstwahrscheinlich einige Bastelarbeiten. Dieses Cmdlet kann nahezu jede Art von Zeichenfolge analysieren, wenn Sie die Vorlage korrekt strukturieren können. Weitere Beispiele und weitere Informationen zur Verwendung dieses Cmdlets finden Sie unter dieser Blog-Beitrag von Stephen Owen über fortgeschrittenes Parsen mit ConvertFrom-String.

Similar Posts

Leave a Reply