Udostępnij za pośrednictwem


ConvertFrom-String

Wyodrębnia i analizuje właściwości strukturalne z zawartości ciągu.

Składnia

ConvertFrom-String
                [-Delimiter <String>]
                [-PropertyNames <String[]>]
                [-InputObject] <String>
                [<CommonParameters>]
ConvertFrom-String
                [-TemplateFile <String[]>]
                [-TemplateContent <String[]>]
                [-IncludeExtent]
                [-UpdateTemplate]
                [-InputObject] <String>
                [<CommonParameters>]

Opis

Polecenie cmdlet ConvertFrom-String wyodrębnia i analizuje właściwości strukturalne z zawartości ciągu. To polecenie cmdlet generuje obiekt przez analizowanie tekstu na podstawie tradycyjnego strumienia tekstu. Dla każdego ciągu w potoku polecenie cmdlet dzieli dane wejściowe przez ogranicznik lub wyrażenie analizy, a następnie przypisuje nazwy właściwości do każdego z wynikowych elementów podziału. Możesz podać te nazwy właściwości; Jeśli tego nie zrobisz, zostaną one automatycznie wygenerowane.

Domyślny zestaw parametrów polecenia cmdlet, ByDelimiter, dzieli dokładnie na ogranicznik wyrażenia regularnego. Nie wykonuje dopasowywania cudzysłowu ani ogranicznika, ponieważ polecenie cmdlet Import-Csv.

Alternatywny zestaw parametrów polecenia cmdlet, TemplateParsing, generuje elementy z grup przechwyconych przez wyrażenie regularne.

To polecenie cmdlet obsługuje dwa tryby: podstawowe rozdzielane analizowanie i automatyczne generowanie, analizowanie oparte na przykładach.

Analizowanie rozdzielane domyślnie dzieli dane wejściowe na białe znaki i przypisuje nazwy właściwości do wynikowych grup. Ogranicznik można dostosować, potokując ConvertFrom-String wyniki do jednego z poleceń cmdlet Format-* lub możesz użyć parametru ogranicznika .

Polecenie cmdlet obsługuje również automatyczne generowanie, analizowanie oparte na przykładach na podstawie FlashExtract, badania przeprowadzone przez firmę Microsoft Research.

Przykłady

Przykład 1. Generowanie obiektu z domyślnymi nazwami właściwości

PS C:\> "Hello World" | ConvertFrom-String

P1    P2
--    --
Hello World


PS C:\>

To polecenie generuje obiekt z domyślnymi nazwami właściwości, P1 i P2. Wyniki to P1="Hello" i P2="World".

Przykład 1A: Poznaj wygenerowany obiekt

PS C:\> "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


PS C:\>

Polecenie generuje jeden obiekt z właściwościami P1, P2; obie właściwości mają typ "string" domyślnie.

Przykład 2. Generowanie obiektu z domyślnymi nazwami właściwości przy użyciu ogranicznika

PS C:\> "Hello World" | ConvertFrom-String -Delimiter "ll"

P1 P2
-- --
He o World


PS C:\>

To polecenie generuje obiekt z właściwościami P1="He" i P2="o World", określając wartość "ll" w polu Hello jako ogranicznik.

Przykład 3. Generowanie obiektu zawierającego dwie nazwane właściwości

PS C:\> "Hello World" | ConvertFrom-String -PropertyNames FirstWord, SecondWord

FirstWord SecondWord
--------- ----------
Hello     World


PS C:\>

To polecenie generuje obiekt zawierający dwie właściwości:

  • firstWord, z wartością "Hello"
  • secondWord, z wartością "World"

Przykład 4. Użyj wyrażenia jako wartości parametru TemplateContent, zapisz wyniki w zmiennej.

$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
'@

$testText  |
    ConvertFrom-String -TemplateContent $template -OutVariable PersonalData |
    Out-Null

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

C:\ >

To polecenie używa wyrażenia jako wartości parametru TemplateContent. Wyrażenie jest zapisywane w zmiennej dla uproszczenia. Program Windows PowerShell rozumie teraz, że ciąg używany w potoku do ConvertFrom-String ma trzy właściwości:

  • nazwa
  • telefon
  • wieku

Każdy wiersz w danych wejściowych jest oceniany przez przykładowe dopasowania; Jeśli wiersz pasuje do przykładów podanych we wzorcu, wartości są wyodrębniane i przekazywane do zdefiniowanej zmiennej wyjściowej.

Przykładowe dane, $template, udostępniają dwa różne formaty telefonów:

  • 425-123-6789
  • (206) 987-4321

I dwa różne formaty wiekowe:

  • 6
  • 12

Oznacza to, że telefony, takie jak (206) 987 4321, nie zostaną rozpoznane, ponieważ nie ma przykładowych danych pasujących do tego wzorca (nie ma łącznika między sekwencją trzycyfrową a czterocyfrową sekwencją). Podobnie jak w przypadku 3 lub większej liczby wieków cyfr, nie zostaną rozpoznane.

Przykład 5. Określanie typów danych do wygenerowanych właściwości

$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
'@

$testText  |
    ConvertFrom-String -TemplateContent $template -OutVariable PersonalData | Out-Null

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



C:\ >

Jest to ten sam przykład co nr 4, powyżej; jedyne różnice znajdują się w ciągu wzorca, który zawiera typ danych dla każdej żądanej właściwości. Zwróć uwagę na różnicę w wyrównaniu kolumny wiekowej między obydwoma przykładami.

Przykład 5A: poznaj wygenerowany obiekt

$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
 '@

 $testText  |
     ConvertFrom-String -TemplateContent $template -OutVariable PersonalData |
     Out-Null

 $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

C:\ >

Get-Member pokazuje, że wiek jest typu liczby całkowitej.

Parametry

-Delimiter

Określa wyrażenie regularne identyfikujące granicę między elementami. Elementy utworzone przez podział stają się właściwościami w wynikowym obiekcie. Ogranicznik jest ostatecznie używany w wywołaniu elementu System.Text.RegularExpressions.RegularExpression.Split().

Typ:String
Aliasy:DEL
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-IncludeExtent

Wskazuje, że to polecenie cmdlet zawiera właściwość tekstową zakresu, która jest domyślnie usuwana.

Typ:SwitchParameter
Aliasy:IE
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-InputObject

Określa ciągi odebrane z potoku lub zmienną zawierającą obiekt ciągu.

Typ:String
Position:0
Domyślna wartość:None
Wymagane:True
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-PropertyNames

Określa tablicę nazw właściwości, do której mają zostać przypisane podzielone wartości w wynikowym obiekcie. Każdy wiersz tekstu, który dzielisz lub analizuje, generuje elementy reprezentujące wartości właściwości. Jeśli element jest wynikiem grupy przechwytywania, a grupa przechwytywania ma nazwę (na przykład (?<name>) lub (?'name') ), nazwa tej grupy przechwytywania jest przypisana do właściwości.

Jeśli podasz jakiekolwiek elementy w tablicy PropertyName, te nazwy są przypisane do właściwości, które nie zostały jeszcze nazwane.

Jeśli podasz więcej nazw właściwości niż istnieją pola, program Windows PowerShell ignoruje dodatkowe nazwy właściwości. Jeśli nie określisz wystarczającej liczby nazw właściwości, aby nazwać wszystkie pola, program Windows PowerShell automatycznie przypisze nazwy właściwości liczbowych do wszystkich właściwości, które nie są nazwane: P1, P2 itp.

Typ:String[]
Aliasy:PN
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-TemplateContent

Określa wyrażenie lub wyrażenie zapisane jako zmienną, które opisuje właściwości, do których to polecenie cmdlet przypisuje ciągi. Składnia specyfikacji pola szablonu jest następująca: {[optional-typecast]name(sekwencja-spec, na przykład *):example-value}. Przykładem jest {PersonInfo*:{Name:Patti Fuller}.

Typ:String[]
Aliasy:TC
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-TemplateFile

Określa plik, jako tablicę, który zawiera szablon dla żądanego analizowania ciągu. W pliku szablonu właściwości i ich wartości są ujęte w nawiasy, jak pokazano w poniższym przykładzie. Jeśli właściwość, taka jak właściwość Name i skojarzone z nią inne właściwości, pojawia się wiele razy, możesz dodać gwiazdkę (*) , aby wskazać, że powoduje to wiele rekordów. Pozwala to uniknąć wyodrębniania wielu właściwości do jednego rekordu.

{Name*:D avid Chew}

{City:Redmond}, {State:WA}

{Name*:Evan Narvaez} {Name*:Antonio Moreno}

{City:Issaquah}, {State:WA}

Typ:String[]
Aliasy:TF
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-UpdateTemplate

Wskazuje, że to polecenie cmdlet zapisuje wyniki algorytmu uczenia w komentarzu w pliku szablonu. Dzięki temu proces uczenia algorytmu jest szybszy. Aby użyć tego parametru, należy również określić plik szablonu z parametrem TemplateFile.

Typ:SwitchParameter
Aliasy:UT
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

Dane wejściowe

String